Hard-Disk

我的硬碟物理扇區大小是多少?fdisk、smartctl 等.. 給出不同的答案

  • June 25, 2021

硬碟通過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

根據 fdisk 的說法,它是一個 USB 磁碟 - 所以資訊是隱藏的。

smartctl 有一個包含許多磁碟的數據庫,因此它可以獲得物理大小。

事實上,過去幾年建構的任何 HD,尤其是多 TB 大小的 HD 都將具有 4096 字節的物理塊大小。

我剛剛查看了我的小型 NVME 驅動器,gdisk 說邏輯/物理大小都是 512 字節 - 但分區將在2048 個扇區邊界(即 1Mib)上對齊。它對 SATA SSD 也有同樣的看法。

引用自:https://unix.stackexchange.com/questions/655816