我最近创建了一个来自 btrfs 的新 ZFS 池。我遵循了常见的和最新的教程,并检查了手册页和 Ubuntu 手册。
每篇文章都说 ZFS 将为我处理格式化和创建分区表 - 结果看起来确实不错。
然后我查看了 dmesg 日志,发现了这一行可疑的行:
$ dmesg -H --color=always --follow --decode --ctime
kern :warn : [Wed Dec 9 20:13:22 2020] sd 5:0:0:0: [sdc] Optimal transfer size 33553920 bytes not a multiple of physical block size (4096 bytes)
现在我想知道这是怎么发生的。根据我找到的所有手册,这种情况不应该发生。如果这不是警告,我不会在意。我也没有找到有关此错误消息的太多信息。
以下是来自 hdparm 的一些信息:
(user@host)[~/] $ sudo hdparm -I /dev/sdc
/dev/sdc:
ATA device, with non-removable media
Model Number: WDC WD20EFRX-68EUZN0
Serial Number: WD-WCCXXXXXXXXP
Firmware Revision: 82.00A82
Transport: Serial, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
Standards:
Supported: 9 8 7 6 5
Likely used: 9
Configuration:
Logical max current
cylinders 16383 16383
heads 16 16
sectors/track 63 63
--
CHS current addressable sectors: 16514064
LBA user addressable sectors: 268435455
LBA48 user addressable sectors: 3907029168
Logical Sector size: 512 bytes
Physical Sector size: 4096 bytes
Logical Sector-0 offset: 0 bytes
device size with M = 1024*1024: 1907729 MBytes
device size with M = 1000*1000: 2000398 MBytes (2000 GB)
cache/buffer size = unknown
Nominal Media Rotation Rate: 5400
还:
$ zpool get all | grep ashift
nextcloud ashift 0 default
所以我的想法是:
- 从镜像中移除两个 HDD 之一
- 手动创建一个新池 ashift=12
- 复制数据
- 摧毁旧水池
- 将另一个 HDD 连接到新池
但也许传输大小与 ashift 无关?非常感谢帮助!
提前致谢
// 编辑:系统信息
(user@host)[~] $ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.1 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.1 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
(user@host)[~] $ zfs --version
zfs-0.8.3-1ubuntu12.5
zfs-kmod-0.8.3-1ubuntu12.4
答案1
这个问题与 ZFS 无关,所以我将从您的问题中删除该标签。
您可以安全地忽略此警告。 HDD 报告的“最佳传输大小”值显然是无稽之谈:33553920
字节是65535
(512
字节的)扇区。因此,HDD 将0xFFFF
扇区报告为最佳传输大小,这是一个所有位均已设置的 16 位数字,通常意味着驱动器的固件尚未触及该值,或者尚未正确编程到 NV 存储中(通常的 NAND 闪存在擦除/初始化后所有位都设置为 1)。
在较旧的内核版本中,这可能会诱使分区工具导致分区不对齐。较新的内核进行了健全性检查,并丢弃了最佳传输大小的奇怪值,但输出警告以通知用户他的磁盘正在胡说八道。
fdisk
如果遇到未对齐的分区,通常会抱怨,因此,如果您遇到了fdisk -l
但没有看到此类提示,通常是安全的。
这里是对同一问题的深入回答。