我们的备份服务器出现了物理问题(我们认为是由于雷暴造成的触电)。该系统是磁盘上的 Linux Debian,存储位于两个 4 TB 磁盘 RAID-1 ZFS(Linux 上的 ZFS)池上。我们发现的第一个症状是系统冻结。在经历了多次不稳定的启动之后,我们无法超越 BIOS。因此,我们将系统磁盘移动到另一台计算机上,该计算机启动没有问题并且看起来很稳定,但是当我们尝试将 ZFS 存储移动到其中时,我们发现只有一个磁盘被检测为 ZFS 部件池,但可以加载/安装zpool
并且数据被删除那里(lsblk -f
只是表明另一个磁盘没有分区)。经过多次测试加载第二个磁盘后,第一个磁盘向我们显示它不再可加载并且被检测为未分区。
注:命令和测试结果如下
因此,我们尝试使用 SMART 工具测试两个磁盘的健康状况,smartctl
但没有返回任何错误,磁盘似乎可以运行。因此我们尝试读取数据dd
成功,因为没有返回读取错误。所以我们尝试了badblocks
,这也表明一切正常。最后我们尝试了gpart
一下,暂时发现 Windows NT/W2K 分区可能为空,但由于磁盘很大,该进程并未终止。
目前观察到的唯一问题是缺少 MBR,但我们没有找到恢复 ZFS MBR 的工具。这个怎么做 ?
此外,由于我们有一个过时的外部克隆磁盘(每个月我们都会用另一个磁盘替换一个磁盘,“重新同步”本身,以便我们可以将替换的磁盘外部化),我们问自己是否可以复制其 MBR 来替换故障磁盘上的磁盘我们不确定 ZFS 池部分磁盘及其镜像上的 MBR 是否完全相同,或者 MBR 执行后是否会出现差异。如果可以克隆它,如何执行此操作dd
?
测试和结果
root@CZ-LIVE:~# lsblk -o NAME,SIZE,FSTYPE
NAME SIZE FSTYPE
...
sda 3,6T
...
=> 未检测到 ZFS 文件系统
root@CZ-LIVE:~# smartctl -t long /dev/sda
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.15.0-2-amd64] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Extended self-test routine immediately in off-line mode".
Drive command "Execute SMART Extended self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 54 minutes for test to complete.
Test will complete after Fri Sep 9 17:24:14 2022 UTC
Use smartctl -X to abort test.
root@CZ-LIVE:~# smartctl -l selftest /dev/sda
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.15.0-2-amd64] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offline Completed without error 00% 4660 -
root@CZ-LIVE:~# smartctl -A /dev/sda
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.15.0-2-amd64] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x0003 100 100 006 Pre-fail Always - 0
3 Spin_Up_Time 0x0003 100 100 000 Pre-fail Always - 16
4 Start_Stop_Count 0x0002 100 100 020 Old_age Always - 100
5 Reallocated_Sector_Ct 0x0003 100 100 036 Pre-fail Always - 0
9 Power_On_Hours 0x0003 100 100 000 Pre-fail Always - 1
12 Power_Cycle_Count 0x0003 100 100 000 Pre-fail Always - 0
190 Airflow_Temperature_Cel 0x0003 069 069 050 Pre-fail Always - 31 (Min/Max 31/31)
root@CZ-LIVE:~# smartctl -A /dev/sda | \
grep -iE "Power_On_Hours|G-Sense_Error_Rate|Reallocated|Pending|Uncorrectable"
5 Reallocated_Sector_Ct 0x0003 100 100 036 Pre-fail Always - 0
9 Power_On_Hours 0x0003 100 100 000 Pre-fail Always - 1
=> 磁盘内部组件没有返回任何特殊内容
dd
显示是否有读取错误(来源):
root@CZ-LIVE:~# dd if=/dev/sda of=/dev/null bs=64k conv=noerror status=progress
4000784842752 octets (4,0 TB, 3,6 TiB) copiés, 104555 s, 38,3 MB/s
61047148+1 enregistrements lus
61047148+1 enregistrements écrits
4000785948160 octets (4,0 TB, 3,6 TiB) copiés, 104556 s, 38,3 MB/s
=> 没有读取错误
root@CZ-LIVE:~# date ; badblocks -svn /dev/sda ; date
ven. 16 sept. 2022 17:00:06 UTC
Checking for bad blocks in non-destructive read-write mode
From block 0 to 3907017526
Checking for bad blocks (non-destructive read-write test)
Testing with random pattern: done
Pass completed, 0 bad blocks found. (0/0/0 errors)
dim. 18 sept. 2022 01:54:49 UTC
=> 无块错误
root@CZ-LIVE:~# gpart /dev/sda
Begin scan...
Possible partition(Windows NT/W2K FS), size(0mb), offset(345079mb)
=> 一个空分区...未检测为 ZFS