这确实让我很困惑。
第一,数据已安全备份虽然我已经浪费了数小时的迁移工作时间。但发生的事情的结果让我感到担忧。
我正在迁移带有 2.5 英寸 SATA 背板的旧服务器上的备份阵列。1TB 光盘太小,因此我开始切换到 2TB 光盘 - 使用 Seagate FireCuda 2.5 英寸 2TB 光盘,该光盘既是 SSHD 又是 SMR - 这是我第一次看到 SMR 光盘。
在此过程进行到一半时,ZFS 池就消失得无影无踪了。
此阵列上的存储是备份。旧设置是 Linux MD RAID-1,我打算在更换磁盘时迁移到 ZFS 镜像。
第一个要替换的磁盘是 /dev/sdc。
我正在使用整个磁盘作为 ZFS 设备(即 /dev/sdc 而不是 /dev/sdc1)。
迁移过程包括:(1) 备份至三个外部磁盘、(2) 打破 RAID 镜像、(3) 移除一个 1TB 磁盘、(4) 安装第一个 SSHD、(5) 创建 ZFS 池、(6) 复制数据、(7) 验证数据、(8) 停止 MD 阵列、(9) 更换第二张磁盘,然后 (10) 镜像池。
但我从未超过 7。重新启动服务器时,(当时仍然是单盘)池消失了尽管我向其中写入了 800GB 的数据,但我却找不到任何痕迹。
zdb -l /dev/sdc 返回:
--------------------------------------------
LABEL 0
--------------------------------------------
failed to unpack label 0
--------------------------------------------
LABEL 1
--------------------------------------------
failed to unpack label 1
--------------------------------------------
LABEL 2
--------------------------------------------
failed to unpack label 2
--------------------------------------------
LABEL 3
--------------------------------------------
failed to unpack label 3
我尝试对 /dev/sdc 的前 1MB 进行二进制转储。结果如下:
# dd if=/dev/sdc bs=1048576 count=1 | xxd
0000000: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000010: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000020: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000030: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000060: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
(...)
00fff60: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00fff70: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00fff80: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00fff90: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00fffa0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00fffb0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00fffc0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00fffd0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00fffe0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00ffff0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
直到我得到超过 1GB 的零之后,我才看到任何类型的数据:
# dd if=/dev/sdc bs=1048576 count=1 skip=1032
(...)
0074fb0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0074fc0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0074fd0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0074fe0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0074ff0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0075000: 7f4a d799 69ad bcac dd98 5393 afeb 2745 .J..i.....S...'E
0075010: 2d23 af2b fdd9 2a6d c950 dd8b 0c8f 268d -#.+..*m.P....&.
0075020: 146b 2174 5ddd a757 e49e 2dfa 9e06 d0fc .k!t]..W..-.....
0075030: dfda 1ee7 ac17 cb41 8246 a7de ff39 d362 .......A.F...9.b
0075040: 67a0 c1e1 7f9b 6a4a 6e45 e2e3 1726 93e2 g.....jJnE...&..
0075050: 8310 6f20 5644 2a2c 0609 1927 9c22 d676 ..o VD*,...'.".v
0075060: 5950 cae7 f14c 938b 39b9 041e 960e 871b YP...L..9.......
0075070: 7dc6 54eb 5ee4 8cc9 836f adde 4aba dc3b }.T.^....o..J..;
0075080: 49c7 db23 5d0f 557d 8f63 3e43 9c5e 59c4 I..#].U}.c>C.^Y.
(...)
/dev/sdc 没有显示 SMART 错误,并且测试顺利通过。自从出现这种怪异现象以来,我还没有尝试向其中写入任何数据。我肯定是在查看正确的光盘,因为它报告其容量为 2TB,并且它是唯一安装的 2TB 光盘。
以前有人见过这样的事情吗?我使用的工具是否正确,以某种方式解决了前 1GB 多一点的数据已完全清零的问题?这是否可以解释为 SSHD 磁盘上的闪存缓存故障或 SMR 写入区域存在异常?
数据开始的点似乎是一个有趣的数字(从 dd 的偏移量为 1048576x1032,然后是 0x75000,看起来是一个整数)但我不知道如何理解它。
麻烦的是,虽然我开始这项工作时是在与这台服务器相同的房间内,但现在我已经远离 4,000 公里,要两个星期了,但我希望如果需要的话可以找其他人来交换光盘。第二张 FireCuda 光盘尚未拆开。
编辑:修正术语,清理错别字