如何从终端列出硬盘及其所有分区(包括大小)?

如何从终端列出硬盘及其所有分区(包括大小)?

我安装了没有 GUI 的 Ubuntu 服务器 12.04。我想使用命令行列出我的硬盘及其分区以及每个分区的大小。

答案1

以下是几种方法:

  • 如果您有 MBR 分区表:

    terdon@oregano ~ $ sudo fdisk -l
    Disk /dev/sda: 500.1 GB, 500107862016 bytes
    255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x4b66b5d5
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1              63       80324       40131   de  Dell Utility
    /dev/sda2   *       81920    30801919    15360000    7  HPFS/NTFS/exFAT
    /dev/sda3        30801920   194643539    81920810    7  HPFS/NTFS/exFAT
    /dev/sda4       194643601   976773119   391064759+   f  W95 Ext'd (LBA)
    /dev/sda5       194643603   198836504     2096451    c  W95 FAT32 (LBA)
    /dev/sda6       342951936   960387071   308717568   83  Linux
    /dev/sda7       198840320   342949887    72054784   83  Linux
    /dev/sda8       960389120   976773119     8192000   82  Linux swap / Solaris
    

    或 sudo sfdidk -l

    但是这些输出并不是特别人性化。接下来的选择会更好。

  • 对于 GPT 和 MBR 分区表:

    terdon@oregano ~ $ sudo parted -l
    Model: ATA ST9500420AS (scsi)
    Disk /dev/sda: 500GB
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    
    Number  Start   End     Size    Type      File system     Flags
     1      32.3kB  41.1MB  41.1MB  primary   fat16           diag
     2      41.9MB  15.8GB  15.7GB  primary   ntfs            boot
     3      15.8GB  99.7GB  83.9GB  primary   ntfs
     4      99.7GB  500GB   400GB   extended                  lba
     5      99.7GB  102GB   2147MB  logical   fat32           lba
     7      102GB   176GB   73.8GB  logical   ext4
     6      176GB   492GB   316GB   logical   ext4
     8      492GB   500GB   8389MB  logical   linux-swap(v1)
    
    
    Model: ST950032 5AS (scsi)
    Disk /dev/sdb: 500GB
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    
    Number  Start   End    Size   Type     File system  Flags
     1      32.3kB  500GB  500GB  primary  ntfs
    
  • lsblk

    terdon@oregano ~ $ lsblk
    NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    sda      8:0    0 465.8G  0 disk 
    ├─sda1   8:1    0  39.2M  0 part 
    ├─sda2   8:2    0  14.7G  0 part 
    ├─sda3   8:3    0  78.1G  0 part 
    ├─sda4   8:4    0     1K  0 part 
    ├─sda5   8:5    0     2G  0 part 
    ├─sda6   8:6    0 294.4G  0 part /home
    ├─sda7   8:7    0  68.7G  0 part /
    └─sda8   8:8    0   7.8G  0 part [SWAP]
    sdb      8:16   0 465.8G  0 disk 
    └─sdb1   8:17   0 465.8G  0 part /test
    sr0     11:0    1  1024M  0 rom  
    
  • 安装inxi然后运行

    terdon@oregano ~ $ inxi -D
    Drives:    HDD Total Size: 1000.2GB (70.1% used) 1: id: /dev/sda model: ST9500420AS size: 500.1GB 
               2: id: /dev/sdb model: 5AS size: 500.1GB 
    

答案2

以下是其他几种方法:

瘦身

简短版本lshw 方便地在描述中列出磁盘的大小

sudo lshw -short | awk '/disk|volume/'            
/0/1/0.0.0    /dev/sda    disk        120GB Radeon R7
/0/1/0.0.0/1  /dev/sda1   volume      111GiB EXT4 volume
/0/2/0.0.0    /dev/cdrom  disk        DVDRAM GT20N

如需了解更多详细信息,请使用lshw -class volume,disk

udiscsctl

udiscsctlinfo选项与-b(for block-device) 标志结合使用,可以显示详细信息。使用一个简单的 for 循环和awk,我们可以让它具体显示分区和大小信息。这是我的示例:

$ for device in /dev/sd* ; do udisksctl info  -b $device | awk '/[[:blank:]]Device:/; /Size/' ;done                
    Device:                     /dev/sda
    Size:                       120034123776
    Device:                     /dev/sda1
    Size:                       120032591872
    Size:               120032591872

df 命令

df命令显示有关所有当前已安装文件系统的信息。同样,我们可以直接使用此命令,也可以使用以下命令清理输出awk

df -h | awk 'NR==1 ;/\/dev\/sd*/'                                                                                
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       110G   68G   37G  66% /

这里我们只打印标题并使用 -h 标志,使大小以人类可读的格式打印

/sys/class/block/sd* 文件

/sys/class/block/文件夹中,您将找到与块设备(通常指物理内存设备)相关的文件。特别是,我们要关注以sd字母开头的任何文件。

例如,我有一块硬盘,上面只有一个分区。因此/sys/class/block/sda指的是我的整个硬盘,而/sys/class/block/sda1指的是我的 Ubuntu 分区。

在每个设备的每个文件夹中,您将找到该size文件,其中列出了设备上有多少个 512 MB 的块。因此真实大小是number of blocks x 521

再次,通过一些命令行魔法,我们得到:

$ for device in /sys/class/block/sd*; do printf "%s " $device; bc <<< "$(cat $device/size)*512" ; done             
/sys/class/block/sda 120034123776
/sys/class/block/sda1 120032591872

或者更短一点awk

$ awk '{print substr(FILENAME,18)" "$1*512}' /sys/class/block/sd*/size                                             
sda/size 120034123776
sda1/size 120032591872

答案3

在终端:

sudo fdisk -l

输入您的密码。

https://i.stack.imgur.com/FPRg3.png

lsblk命令 :

https://i.stack.imgur.com/7egAM.png

答案4

我通过搜索“ubuntu server list gpt partions”找到了这个。我在使用 16.04.1 LTS 时寻找答案。对于那些想要列出分区(MBR 或 GPT)的人来说,fdisk 似乎在 16.04.1 LTS 中同时支持这两种分区(而不仅仅是早期 Ubuntu 版本中的 MBR)。parted在安装过程中选择“基本系统实用程序”选项时,默认情况下不会安装它。因此,在 16.04.1 LTS 上,以下命令就是您所需要的全部内容:

sudo fdisk -l

相关内容