我的硬盘物理扇区大小是多少? fdisk、smartctl 等..给出不同的答案

我的硬盘物理扇区大小是多少? fdisk、smartctl 等..给出不同的答案

硬盘通过USB3.0与外接硬盘盒连接。

$ sudo smartctl -a /dev/sdb

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda 3.5
Device Model:     ST4000DM004-2CV104
Firmware Version: 0001
User Capacity:    4,000,787,030,016 bytes [4.00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5425 rpm
Form Factor:      3.5 inches
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-3 T13/2161-D revision 5
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
  • 您可以看到它显示4096 bytes physical在上面的输出中。

  • 但以下所有结果都显示512字节:

$ sudo fdisk -l /dev/sdb

Disk /dev/sdb: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors
Disk model: USB3.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 4096 bytes / 33553920 bytes
$ cat /sys/block/sdb/queue/hw_sector_size
512

$ cat /sys/block/sdb/queue/physical_block_size
512
$ lsblk -o NAME,PHY-SeC /dev/sdb
NAME   PHY-SEC
sdb        512
└─sdb1     512
$ sudo blockdev --getbsz /dev/sdb
512

那么硬盘真正的物理扇区大小是多少呢?

我认为应该是4096,但我不知道为什么所有其他命令都会给我错误的结果。

  • 顺便说一句,我之所以想找到真实的物理扇区大小是因为我想-b 4096在运行时使用badblocks

多谢。

  • PS:如果答案是4096,Linux中除了 之外还有其他工具可以显示真实结果吗smartctl

我发现另一个命令会显示4096:

$ sudo hdparm -I /dev/sdb | grep -i physical
        Physical Sector size:                  4096 bytes

答案1

根据 fdisk 的说法,它是一个 USB 磁盘 - 因此信息是隐藏的。

smartctl有一个包含很多磁盘的数据库,因此它可以获取物理大小。

事实上,过去几年构建的任何 HD,尤其是多 TB 大小的 HD,其物理块大小均为 4096 字节。

我刚刚查看了我的小型 NVME 驱动器,gdisk 表示逻辑/物理大小均为 512 字节 - 但分区将对齐2048 扇区边界(即 1Mib)。 SATA SSD 也是如此。

相关内容