fdisk -l 输出中扇区大小明确显示在“sector size (logical/physical):”行,如“512 bytes / 4096 bytes”,分别表示逻辑与物理扇区字节数,直接影响分区对齐和io性能。

fdisk -l 输出里怎么看扇区大小
扇区大小直接写在 fdisk -l 命令输出的第二行,紧挨着磁盘容量后面。不是所有用户会注意这一行,但它决定了后续计算分区起始/结束位置是否准确。
常见现象是:看到 /dev/sda1 的 Start 是 2048,就以为从第 2048 字节开始 —— 其实是第 2048 个扇区,每个扇区可能是 512 字节,也可能是 4096 字节。
-
Sectorsize(logical/physical):512bytes/512bytes→ 传统 SATA 盘,逻辑和物理扇区都是 512 字节 -
Sectorsize(logical/physical):512bytes/4096bytes→ Advanced Format(4K 扇区)盘,逻辑仍模拟 512,物理是 4096,对齐不当会严重降速 -
Sectorsize(logical/physical):4096bytes/4096bytes→ 真·4K 原生盘(如部分 NVMe),fdisk默认可能不友好,建议用parted
lsblk 能不能查扇区大小
lsblk 不显示扇区大小,它只展示设备树、挂载点、文件系统类型和大小(以字节或 GiB 为单位)。想快速确认有没有新盘、挂没挂载、用的什么文件系统,lsblk -f 很顺手;但要查底层扇区对齐细节,它帮不上忙。
容易踩的坑:lsblk 显示 /dev/sdb 容量是 20G,但你用 fdisk 创建一个 20G 分区后,mkfs 却报 “device too small” —— 很可能是因为没对齐 4K 扇区,实际可用空间比预期少几个 MiB。
如何确认某块盘是不是 4K 对齐
最可靠的方式是结合 fdisk -l 和 blockdev 命令交叉验证:
- 先看
fdisk -l /dev/sdb中的Sectorsize行 - 再执行
sudo blockdev --getss /dev/sdb(返回逻辑扇区大小,单位字节) - 再执行
sudo blockdev --getpbsz /dev/sdb(返回物理扇区大小)
如果 --getss 返回 4096,说明该设备声明自己是 4K 逻辑扇区,fdisk 新建分区时必须确保 Start 是 4096 的整数倍(例如 8192、12288),否则即使能格式化,IO 性能也会打骨折。
常见盘符命名规则与识别误区
Linux 下盘符不是固定绑定硬件的,/dev/sda 不一定永远是第一块 SATA 盘 —— 它取决于内核探测顺序。热插拔、NVMe 和 USB 盘混用时尤其容易乱。
真正稳定的标识方式是用 /dev/disk/by-id/ 下的链接,比如:
-
/dev/disk/by-id/ata-WDC_WD10EZEX-00B_XXXXXXX-part1→ 指向 sda1,带型号和序列号 -
/dev/disk/by-uuid/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX→ 文件系统 UUID,挂载时推荐用这个 -
/dev/disk/by-path/pci-0000:00:17.0-ata-1→ PCI 路径,适合调试硬件拓扑
别依赖 sda/sdb 写自动化脚本,尤其是涉及 LVM 或多盘 RAID 场景 —— 一块盘晚加载几十毫秒,sdb 就可能变成 sdc,脚本就挂了。











