在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