df -h仅显示已挂载文件系统的使用情况,无法查看未挂载设备或原始磁盘容量;lsblk -fh可直观列出所有块设备的物理大小、类型及挂载状态,sudo fdisk -l则提供分区表级的扇区和标签细节。

df -h 能看到挂载分区的大小,但看不到未挂载或原始设备容量
很多人执行 df -h 后发现只显示已挂载的分区(比如 /dev/sda1、/dev/sdb1),而新加的硬盘(如 /dev/sdc)根本不出现在列表里——这不是命令错了,是它本来就不管“没挂载的设备”。df 只查文件系统层面的使用情况,不查物理块设备本身。
- 如果目标是查一块新插入但尚未分区/格式化的硬盘总容量,
df完全无效 -
df -h显示的Size是该分区格式化后可用的逻辑空间,不是物理扇区总数 - 想确认磁盘真实容量(比如验证是不是 500G 硬盘被识别成 465G),得绕过文件系统,直接读设备元数据
lsblk -f 是最直观的块设备视图,含大小、类型、挂载点和文件系统
lsblk -f 会列出所有块设备(包括硬盘、SSD、NVMe、U盘),以树状结构呈现,并附带文件系统类型和 UUID。关键在于:它显示的是设备节点本身的大小,不管是否挂载。
- 输出中
SIZE列就是物理容量,单位默认为字节,加-h可自动换算(lsblk -fh) - 未分区的整盘(如
sdc)会显示为disk类型,SIZE就是真实容量 - 已分区但未挂载的分区(如
sdc1)仍显示part类型和大小,只是FSTYPE和MOUNTPOINT为空 - 注意区分
NAME列:sda是整盘,sda1是其第一个分区;nvme0n1是 NVMe 盘,nvme0n1p1是其第一个分区
fdisk -l 必须用 root 权限,适合查分区表结构和扇区级细节
当需要知道分区起始扇区、对齐方式、标签类型(MBR/GPT)、甚至扇区大小时,fdisk -l 是唯一能提供底层信息的常用命令。它不依赖挂载,也不依赖文件系统识别,直接读取磁盘开头的分区表。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 输出里的
21474836480 bytes或20 GiB就是磁盘总容量(注意单位:字节 vs GiB) -
扇区大小(逻辑/物理):512 字节 /512字节关系到对齐优化,尤其在 SSD 或 RAID 场景下不能忽略 - 若看到
磁盘标签类型:gpt,说明支持 >2TB 分区;磁盘标签类型:dos即 MBR,最大仅支持 2TB 单分区 - 普通用户执行会报错:
Unable to open /dev/sda—— 必须加sudo或切换 root
为什么 du 不适合查磁盘分区块大小
du 统计的是“目录里实际占用的文件数据量”,跟块设备大小完全不是一回事。它连分区边界都不感知,更别说物理容量。
-
du -sh /返回的是根目录下所有文件加起来占了多少空间,可能远小于/dev/sda1的Size - 如果文件系统有预留空间(如 ext4 默认 5%)、稀疏文件、快照、压缩卷,
du结果和df的Used都可能不一致 - 对未挂载设备(如
/dev/sdb),du直接报错:du: cannot access '/dev/sdb': No such file or directory
真正要确认一块磁盘“到底多大”,别只盯着 df;先跑 lsblk -fh 快速扫一眼,再用 sudo fdisk -l 核对扇区数和标签类型——尤其是扩容、克隆或排查识别异常时,这两步缺一不可。










