最可靠的方法是用 lsblk -d 或 fdisk -l,它们不依赖挂载状态,能列出物理磁盘本身(哪怕没分区、没格式化、没挂载);lsblk -d 专显顶层块设备,-d 参数仅显示磁盘;fdisk -l 需 root 权限但信息更底层全面;/proc/partitions 和 lshw 可交叉验证;df -h 不适用因只显示已挂载文件系统。
直接看系统识别到的所有硬盘,最可靠的方法是用 lsblk -d 或 fdisk -l,它们不依赖挂载状态,能列出物理磁盘本身(哪怕没分区、没格式化、没挂载)。
这个命令专为显示“顶层块设备”设计,-d 参数表示只显示磁盘(disk),不显示其下的分区(part):
lsblk -d,输出中每一行 NAME 列以 sda、sdb、nvme0n1 等开头的,就是一块被内核识别的物理硬盘50G、1T、476.9G
sr0 或 sr1,那是光驱设备,不是硬盘,可忽略需要 root 权限,但信息更底层、更全面:
sudo fdisk -l,每一段以 Disk /dev/xxx: 开头的部分,就对应一块硬盘适合交叉确认或排查识别异常:
cat /proc/partitions | grep -E '^[a-z]+[0-9]*$' —— 过滤出主设备名(如 sda、nvme0n1),排除分区编号(sda1、nvme0n1p1)sudo lshw -class disk -short —— 以简洁方式列出所有磁盘设备,含厂商和型号,对硬件排错很有用df -h 只显示已挂载的文件系统,未挂载、未分区、甚至已连接但未被识别的硬盘都不会出现。它反映的是“可用空间”,不是“物理存在”。