查找连接到Linux计算机的所有存储设备
1. 简介
我们经常需要检查机器上存在的存储设备。当我们必须检查系统上是否可以识别所有硬盘和 SSD 以及系统是否正确处理任何外部存储设备时,这非常有用。Linux 提供了多种方法来列出连接到系统的存储设备。在本教程中,我们将一一查看它们。
2. 读取*/proc/partitions*
每个 Linux 发行版都带有一个*/proc*目录,其中包含不同的文件,这些文件提供有关系统当前状态的不同类型的信息。但是,这是一个虚拟文件系统。
这意味着这些文件实际上并不存在于磁盘上,但这些文件路径可以被任何应用程序或命令读取,就好像它们是真实文件一样。/proc/partitions是包含有关附加存储设备的详细信息的文件。因此,在***/proc/partitions*上运行cat 命令将为我们提供所需的信息**:
$ cat /proc/partitions
major minor #blocks name
8 0 117220824 sda
8 1 524288 sda1
8 2 1 sda2
8 5 116694016 sda5
8 16 976762584 sdb
8 17 1024 sdb1
8 18 976758784 sdb2
但是,此方法仅以块的形式显示输出,并带有每个分区的标签。
3. fdisk
fdisk 是用于在 Linux 中对磁盘和分区执行操作的 Linux 命令。我们可以**使用fdisk -l列出所有存储设备及其分区。**除非以 root 用户身份或使用sudo 运行,否则此命令可能不起作用:
# fdisk -l
Disk /dev/sda: 111.81 GiB, 120034123776 bytes, 234441648 sectors
Disk model: SATA SSD
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x229714a0
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 1050623 1048576 512M b W95 FAT32
/dev/sda2 1052670 234440703 233388034 111.3G 5 Extended
/dev/sda5 1052672 234440703 233388032 111.3G 83 Linux
Disk /dev/sdb: 931.53 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: ST1000LM024 HN-M
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 62FC8895-DF66-4DF6-9DAB-B193B64AA56B
Device Start End Sectors Size Type
/dev/sdb1 2048 4095 2048 1M Linux filesystem
/dev/sdb2 4096 1953521663 1953517568 931.5G Linux filesystem
正如我们在上面看到的,输出非常详细且格式整齐。它描述了连接到系统的所有存储设备及其总大小、型号、标签、分区和其他有用数据。
4. lsblk
lsblk 命令代表“列出块”,可用于列出连接到系统的所有块存储设备:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 111.8G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 111.3G 0 part /
sdb 8:16 0 931.5G 0 disk
├─sdb1 8:17 0 1M 0 part
└─sdb2 8:18 0 931.5G 0 part
正如我们在上面看到的,分区的层次结构被清晰地打印出来,我们可以看到附加了哪些磁盘以及它们下面存在哪些分区。但是,仅打印设备标签而不打印设备名称。
5. lshw
lshw 命令还可用于列出连接到系统的存储设备。它代表“列出硬件”,默认列出连接到系统的所有硬件设备。
但是,我们可以使用class参数来过滤列表并仅显示“磁盘”设备。与fdisk一样,我们可能需要 root 或使用sudo才能使用此命令:
# lshw -class disk
*-disk
description: ATA Disk
product: SATA SSD
physical id: 0.0.0
bus info: [[email protected]](/cdn_cgi/l/email_protection):0.0.0
logical name: /dev/sda
version: Sf10
serial: 00000000000000000552
size: 111GiB (120GB)
capabilities: partitioned partitioned:dos
configuration: ansiversion=5 logicalsectorsize=512 sectorsize=512 signature=229714a0
*-disk
description: ATA Disk
product: ST1000LM024 HN-M
physical id: 0.0.0
bus info: [[email protected]](/cdn_cgi/l/email_protection):0.0.0
logical name: /dev/sdb
version: 0003
serial: S314J90F791172
size: 931GiB (1TB)
capabilities: gpt-1.00 partitioned partitioned:gpt
configuration: ansiversion=5 guid=62fc8895-df66-4df6-9dab-b193b64aa56b logicalsectorsize=512 sectorsize=4096
6. parted
parted 命令的实用性与fdisk命令的实用性非常相似。它可用于管理磁盘及其分区。我们可以使用*-l*参数来显示存储设备:
# parted -l
Model: ATA SATA SSD (scsi)
Disk /dev/sda: 120GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 538MB 537MB primary fat32 boot
2 539MB 120GB 119GB extended
5 539MB 120GB 119GB logical ext4
Model: ATA ST1000LM024 HN-M (scsi)
Disk /dev/sdb: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 2097kB 1049kB
2 2097kB 1000GB 1000GB ext4
与fdisk非常相似,我们可以看到所有附加的存储设备,以及它们的名称、标签、挂载点、文件系统类型和分区。
7. sfdisk
sfdisk 是fdisk命令。它的输出与parted非常相似,显示每个分区上的磁盘标签、磁盘模型分区和文件系统类型:
# sfdisk -l
Disk /dev/sda: 111.81 GiB, 120034123776 bytes, 234441648 sectors
Disk model: SATA SSD
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x229714a0
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 1050623 1048576 512M b W95 FAT32
/dev/sda2 1052670 234440703 233388034 111.3G 5 Extended
/dev/sda5 1052672 234440703 233388032 111.3G 83 Linux
Disk /dev/sdb: 931.53 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: ST1000LM024 HN-M
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 62FC8895-DF66-4DF6-9DAB-B193B64AA56B
Device Start End Sectors Size Type
/dev/sdb1 2048 4095 2048 1M Linux filesystem
/dev/sdb2 4096 1953521663 1953517568 931.5G Linux filesystem