在Linux系统中,硬盘盘符(更准确地说,是设备文件名,如/dev/sda、/dev/nvme0n1等)的查看是磁盘管理的基础操作,无论是分区、挂载还是故障排查,都需要先准确识别硬盘设备,Linux内核通过设备树管理硬件,硬盘设备文件通常位于/dev目录下,命名规则与接口类型(如SATA、NVMe、SCSI等)和识别顺序相关,以下是查看硬盘设备文件的常用方法,涵盖不同场景和需求。
使用lsblk
命令:直观展示块设备层级关系
lsblk
(list block devices)是Linux中最常用、最友好的块设备查看工具,它能以树状结构展示磁盘及其分区的层级关系,同时显示设备大小、挂载点、文件系统类型等关键信息,无需root权限即可运行(部分高级功能可能需要)。
基本用法:
直接输入lsblk
,默认输出会包含以下列:
NAME
:设备文件名,如sda、nvme0n1(磁盘)或sda1、nvme0n1p1(分区);SIZE
:设备容量,如”100G”、”512M”;RO
:是否为只读设备(read-only),正常硬盘为”ro”;TYPE
:设备类型,如”disk”(磁盘)、”part”(分区)、”rom”(光驱)等;MOUNTPOINT
:挂载点,如”/”、”/home”、未挂载时显示空白。
进阶参数:
-f
:显示文件系统信息(如FSTYPE、UUID、LABEL),例如lsblk -f
会额外输出文件系统类型(如ext4、xfs)和UUID;-l
:以列表形式输出(默认为树状),适合脚本处理;-m
:显示设备权限(如owner、group、mode),例如lsblk -m
会输出root:disk:0660等权限信息;-p
:显示完整设备路径(如/dev/sda而非仅sda),避免歧义。
示例输出:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:0 0 931.5G 0 disk
├─nvme0n1p1 259:1 0 512M 0 part /boot/efi
└─nvme0n1p2 259:2 0 931G 0 part /
sda 8:0 0 1.8T 0 disk
└─sda1 8:1 0 1.8T 0 part /data
sr0 11:0 1 1024M 0 rom
输出中,nvme0n1
和sda
是两块磁盘,nvme0n1p1
/nvme0n1p2
是前者的分区,sda1
是后者的分区,/boot/efi
、、/data
分别是它们的挂载点。
使用fdisk
命令:查看磁盘分区表详情
fdisk
是一个经典的分区管理工具,不仅能查看分区表,还能对分区进行操作(需root权限),通过fdisk -l
(list)参数,可以列出系统中所有磁盘及其分区的详细信息,包括起始/结束扇区、分区类型ID等。
基本用法:sudo fdisk -l
,输出会按磁盘逐个显示,每个磁盘部分包含以下信息:
Disk /dev/sda
:磁盘设备路径及总容量(如”1.8TiB, 1953525168 sectors”);Device
:分区设备名(如/dev/sda1)、起始扇区(Sector)、结束扇区、扇区数、大小(如”1.8TiB”);Id
:分区类型ID(如83表示Linux原生分区,8e表示LVM分区,7表示NTFS分区);Boot
:是否为启动分区(标记为”*”)。
示例输出:
Disk /dev/sda: 1.8 TiB, 1953525168 sectors, 9561331696 bytes
Disk model: WDC WD180EDGZ-11B0CA0
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
Device Start End Sectors Size Type
/dev/sda1 2048 1953525167 1953523120 1.8T Linux filesystem
Disk /dev/nvme0n1: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: Samsung SSD 980 1TB
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: gpt
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 1050623 1048576 512M EFI System
/dev/nvme0n1p2 1050624 1953525167 1952474544 931G Linux filesystem
fdisk
适合需要查看分区表结构或确认分区类型的场景,尤其是处理多系统共存或修复分区表时。
使用df
命令:查看已挂载文件系统的设备信息
df
(disk free)主要用于显示文件系统的磁盘使用情况,但也能快速查看已挂载设备的设备文件名和挂载点,默认情况下,df
以KB为单位显示容量,使用-h
(human-readable)可转换为GB、MB等易读单位。
基本用法:df -h
,输出包含以下列:
Filesystem
:设备文件名(如/dev/nvme0n1p2)或挂载点(如/dev/sda1);Size
:文件系统总大小;Used
:已用空间;Avail
:可用空间;Use%
:使用率;Mounted on
:挂载点。
示例输出:
Filesystem Size Used Avail Use% Mounted on
/dev/nvme0n1p2 870G 50G 775G 6% /
/dev/sda1 1.7T 800G 853G 48% /data
tmpfs 3.8G 0 3.8G 0% /dev/shm
注意:df
只显示已挂载的文件系统,未挂载的分区不会出现在结果中,若需查看所有挂载信息(包括特殊文件系统如proc、sysfs),可使用df -a
(all)。
使用blkid
命令:查看块设备的属性信息
blkid
用于显示块设备的属性,包括UUID(唯一标识符)、文件系统类型、卷标(LABEL)等,常用于挂载配置(如/etc/fstab中通过UUID挂载),需root权限才能查看所有设备信息。
基本用法:sudo blkid
,输出格式为”设备名: 属性=值”,
/dev/nvme0n1p1: UUID="C12A7C8A-FC58-11E9-8804-001A4D671F8E" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="12345678-1234-1234-1234-123456789abc"
/dev/nvme0n1p2: UUID="a1b2c3d4-e5f6-7890-abcd-ef1234567890" TYPE="ext4" PARTUUID="def01234-5678-90ab-cdef-abcdef12345"
/dev/sda1: UUID="g1h2i3j4-k5l6-m7n8-o9p0-q1r2s3t4u5v6" TYPE="xfs" LABEL="data_disk"
若需查看特定设备,可指定设备名,如sudo blkid /dev/sda1
。blkid
的优势在于能快速获取设备的唯一标识(UUID),避免因设备文件名变化(如插拔硬盘后顺序改变)导致挂载失效。
其他工具:针对特定场景的硬盘信息查看
-
smartctl
(需安装smartmontools):
用于读取硬盘的SMART(Self-Monitoring, Analysis and Reporting Technology)信息,查看硬盘健康状态、型号、固件版本等。
示例:sudo smartctl --info /dev/sda
,输出会包含”Device Model”、”Serial Number”、”Firmware Version”等硬件信息,以及”SMART Health Status”(如”OK”)。 -
lshw
(需安装lshw):
以树状结构展示系统硬件信息,包括磁盘的厂商、型号、接口类型(SATA/NVMe/SCSI)等。
示例:sudo lshw -class disk
,输出会详细列出磁盘的”vendor”、”product”、”size”、”logical name”(设备文件名)等信息。 -
hwinfo
(需安装hwinfo):
类似lshw
,提供更全面的硬件信息,尤其适合查看磁盘的接口类型(如PCIe NVMe、SATA)和总线信息。
示例:sudo hwinfo --disk
,输出会包含”Device File”、”Model”、”Size”、”Type”(如”NVMe”)等字段。
不同查看方法的对比
方法 | 命令示例 | 主要用途 | 是否需root | 输出特点 |
---|---|---|---|---|
lsblk |
lsblk -f |
查看块设备层级及挂载信息 | 否 | 树状结构,直观清晰 |
fdisk |
sudo fdisk -l |
查看磁盘分区表及分区类型 | 是 | 详细的分区扇区、ID信息 |
df |
df -h |
查看已挂载文件系统使用情况 | 否 | 仅显示已挂载设备,含使用率 |
blkid |
sudo blkid |
查看设备UUID、文件系统类型 | 是 | 属性信息,适合挂载配置 |
smartctl |
sudo smartctl -i |
查看硬盘健康状态及硬件信息 | 是 | 侧重硬盘硬件及SMART状态 |
lshw |
sudo lshw -class disk |
查看磁盘硬件详细信息 | 是 | 硬件厂商、接口类型等 |
相关问答FAQs
Q1:为什么使用lsblk
和df
查看设备名时,结果可能不一致?
A:lsblk
会列出系统中所有块设备(包括未挂载的磁盘和分区),而df
仅显示已挂载的文件系统,若一块新硬盘(/dev/sdb)未挂载,lsblk
会显示/dev/sdb
和/dev/sdb1
,但df
不会输出;若通过mount
命令临时挂载/dev/sdb1
到/mnt
,df
会显示/dev/sdb1
和挂载点/mnt
,而lsblk
会同步更新MOUNTPOINT
列。df
的Filesystem
列有时会显示挂载点(如/mnt
)而非设备名,需结合Mounted on
列确认。
Q2:如何确认一块硬盘是否为NVMe接口,并正确识别其盘符?
A:可通过以下步骤确认:
- 使用
lsblk
查看设备名:NVMe设备通常以nvme
开头,如nvme0n1
(磁盘)、nvme0n1p1
(分区),而SATA/SCSI设备以sda
、sdb
或sr0
(光驱)开头; - 使用
smartctl
查看接口类型:sudo smartctl --info /dev/nvme0n1 | grep "Interface"
,输出”NVMe”则确认是NVMe接口; - 使用
lshw
查看总线信息:sudo lshw -class disk | grep -A5 "nvme"
,输出会显示”bus info: pci@0000:01:00.0″(PCIe总线)等,进一步确认接口类型。
若设备名显示为nvme0n1
,则盘符即为/dev/nvme0n1
,分区为/dev/nvme0n1p1
、/dev/nvme0n1p2
等,注意与SATA设备的/dev/sda
区分。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/28554.html