我有一块 Western Digital 4TB 硬盘 (WD40PURZ)。看来,对硬盘进行分区的推荐程序会导致 Linux 内核发出警告:“最佳传输大小为 33553920 字节,不是物理块大小 (4096 字节) 的倍数”。我应该担心这个吗?
答案1
我有一个类似的驱动器,WD20EFAX-68FB5N0,通过 UAS 访问。我不是 100% 确定,但在阅读下面的链接后,我认为这一行本身没有什么值得担心的。它似乎实际上表明您使用的内核有一个重要的修复。
这似乎是由于驱动器错误地报告了最佳传输大小 0xFFFF,如果将其乘以 512 字节,则为 33553920 字节。Linux 内核对该值进行了健全性检查,并在这种情况下得出结论,该值一定是错误的,因为它不是驱动器物理块大小 4096 字节的倍数。因此,内核忽略了报告的最佳传输大小,并通过记录您提到的行来报告:
Optimal transfer size 33553920 bytes not a multiple of physical block size (4096 bytes)
可能当你运行时lsblk -t
,OPT-IO
现在被报告为0
。
# lsblk -t
NAME ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED RQ-SIZE RA WSAME
sdb 0 4096 0 4096 512 1 mq-deadline 60 128 32M
├─sdb1 0 4096 0 4096 512 1 mq-deadline 60 128 32M
└─sdb2 0 4096 0 4096 512 1 mq-deadline 60 128 32M
在 Linux 内核实现此健全性检查之前,错误的最佳传输大小实际上会导致分区工具选择错误的分区起始位置,请参阅http://gparted-forum.surf4.info/viewtopic.php?id=17839
健全性检查已于 2019 年 2 月 / 3 月左右引入并移植到一些旧内核:
- https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.1&id=a83da8a4509d3ebfe03bb7fffce022e4d5d4764f
- https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v4.19.13&id=852a4ab292bbc878eb137cbc2197b7282c71ba5e
2020年3月又做了进一步改进:
如果您在此之前创建了分区,则可以使用fdisk -l
查看它们的起始位置是否能被 8(512 字节扇区)或 4096(字节)整除。通常fdisk -l
会清楚地抱怨分区不在物理扇区边界上开始。请参阅如何修复“分区未从物理扇区边界开始”警告?为了那个原因。