![从故障驱动器中抢救数据](https://linux22.com/image/14563/%E4%BB%8E%E6%95%85%E9%9A%9C%E9%A9%B1%E5%8A%A8%E5%99%A8%E4%B8%AD%E6%8A%A2%E6%95%91%E6%95%B0%E6%8D%AE.png)
我在 NW 上有一个 6TB WD My Cloud,里面装满了数据,我刚刚得到了一个 12TB WD My Book,将其插入 Rpi4,并开始将数据移至 12TB 驱动器,计划仅使用 6TB 进行备份。
通过 rsync 复制数据时,我发现 rsync 卡在单个文件上。检查日志后,我发现旧的 6TB 驱动器出现了一些问题。在遇到问题之前,我能够从该驱动器复制相当大的数据块(1.1TB),因此我认为我们正在讨论坏扇区,而不是整个驱动器立即死亡。我没有对数据进行任何一致性检查,但这不是业务关键型。我有重要数据的备份,但我想尽可能恢复。 6TB 驱动器目前已拔出,直到我弄清楚接下来的步骤。
我看到了一些可以继续前进的方法:
- 只是尝试尽可能多地复制到 12TB 驱动器,让 rsync 跳过它无法复制的文件。
- 尝试通过 ddrescue 创建 6TB 驱动器的备份映像到 12TB(可能是最长的过程)
- 尝试识别哪些文件已损坏,并确定漫长的 ddrescue 过程是否值得(在这里找到了一些信息,但这似乎是一个极其乏味的过程https://wiki.archlinux.org/index.php/Identify_damaging_files#Ext2,_ext3,_and_ext4)
现在我的问题是:
- rsync 实际上并没有抛出任何错误,它只是卡在单个文件上,我不确定 rsync 是否有办法跳过这些文件。
- 如果我通过 ddrescue 创建映像,我必须将 6TB 映像放在 12TB 驱动器上,然后尝试将尽可能多的内容恢复到同一驱动器上。我不确定这有多可行。我假设 ddrescue 图像创建需要永远,但是我应该能够以正常速度将文件从安装的映像复制到同一驱动器
- 是否有任何工具可以尝试读取所有文件并列出无法完整读取的文件?对我来说,这听起来是最节省时间的方法。
我的 6TB 硬盘的一些日志供参考:
WDMyCloud6TB:/shares/Public# smartctl -l selftest /dev/sda4
smartctl 5.41 2011-06-09 r3365 [armv7l-linux-3.2.26] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
=== 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 Short offline Completed: read failure 90% 28014 2321175776
# 2 Extended offline Completed: read failure 90% 28013 2321175776
# 3 Short offline Completed: read failure 90% 28011 2321175776
# 4 Short offline Completed: read failure 90% 28011 2321175776
# 5 Short offline Completed without error 00% 0 -
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAGS VALUE WORST THRESH FAIL RAW_VALUE
1 Raw_Read_Error_Rate POSR-K 188 188 051 - 444
3 Spin_Up_Time POS--K 189 188 021 - 9516
4 Start_Stop_Count -O--CK 073 073 000 - 27858
5 Reallocated_Sector_Ct PO--CK 200 200 140 - 0
7 Seek_Error_Rate -OSR-K 100 253 000 - 0
9 Power_On_Hours -O--CK 062 062 000 - 28014
10 Spin_Retry_Count -O--CK 100 100 000 - 0
11 Calibration_Retry_Count -O--CK 100 253 000 - 0
12 Power_Cycle_Count -O--CK 100 100 000 - 31
192 Power-Off_Retract_Count -O--CK 200 200 000 - 17
193 Load_Cycle_Count -O--CK 191 191 000 - 27882
194 Temperature_Celsius -O---K 098 094 000 - 54
196 Reallocated_Event_Count -O--CK 200 200 000 - 0
197 Current_Pending_Sector -O--CK 200 200 000 - 1
198 Offline_Uncorrectable ----CK 100 253 000 - 0
199 UDMA_CRC_Error_Count -O--CK 200 200 000 - 0
200 Multi_Zone_Error_Rate ---R-- 100 253 000 - 0
WDMyCloud6TB:~# sudo fsck -v /dev/sda4
fsck from util-linux 2.20.1
e2fsck 1.42.5 (29-Jul-2012)
/dev/sda4: clean, 128425/182996992 files, 1254382471/1463951872 blocks
WDMyCloud6TB:~# e2fsck -nv -b 32768 /dev/sda4
e2fsck 1.42.5 (29-Jul-2012)
/dev/sda4 was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Killed