![如何备份数据来避免坏道?](https://linux22.com/image/1602483/%E5%A6%82%E4%BD%95%E5%A4%87%E4%BB%BD%E6%95%B0%E6%8D%AE%E6%9D%A5%E9%81%BF%E5%85%8D%E5%9D%8F%E9%81%93%EF%BC%9F.png)
我使用 Windows。一年前,我D:
使用以下方法备份了我的磁盘(500 GB)Macrium 反射(它以自己的格式存储文件mrimg
,类似于驱动图像XML存储 . xml
) 到外部硬盘。我不记得我是否选择了压缩。一年后,当我想打开该备份时,它无法工作,因为该硬盘上的某些扇区(该图像后面)已损坏。因此,整个备份文件变得不可读。
我不想再发生这种事了。有没有其他办法复制粘贴(似乎是最好的方法,但需要大约 5 个小时)备份整个D
磁盘,以便即使任何一个行业变得不好在那个外部硬盘上,我仍然可以访问备份中的所有可用数据,而且不会使映像无法读取?似乎映像备份(结果为 1 个文件)不安全,万一它变成无法读取的文件呢?
答案1
监控硬盘是最好的选择。
您可以从 SMART 监控开始。SMART 代表自我监控和修复工具。特别是具有高 ECC(错误纠正码)的磁盘应该被替换,因为那些薄弱的扇区最终会失效。
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 114 100 006 Pre-fail Always - 61609160
3 Spin_Up_Time 0x0003 093 092 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 195
5 Reallocated_Sector_Ct 0x0033 100 100 010 Pre-fail Always - 0
7 Seek_Error_Rate 0x000f 085 060 030 Pre-fail Always - 4648073590
9 Power_On_Hours 0x0032 077 077 000 Old_age Always - 20551
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 32
183 Runtime_Bad_Block 0x0032 100 100 000 Old_age Always - 0
184 End-to-End_Error 0x0032 100 100 099 Old_age Always - 0
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
188 Command_Timeout 0x0032 100 099 000 Old_age Always - 6 6 12
189 High_Fly_Writes 0x003a 061 061 000 Old_age Always - 39
190 Airflow_Temperature_Cel 0x0022 061 045 045 Old_age Always In_the_past 39 (Min/Max 33/55)
191 G-Sense_Error_Rate 0x0032 100 100 000 Old_age Always - 0
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 0
193 Load_Cycle_Count 0x0032 039 039 000 Old_age Always - 122569
194 Temperature_Celsius 0x0022 039 055 000 Old_age Always - 39 (0 21 0 0 0)
195 Hardware_ECC_Recovered 0x001a 114 100 000 Old_age Always - 61609160
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0
240 Head_Flying_Hours 0x0000 100 253 000 Old_age Offline - 9421h+55m+42.115s
241 Total_LBAs_Written 0x0000 100 253 000 Old_age Offline - 36542577472
242 Total_LBAs_Read 0x0000 100 253 000 Old_age Offline - 2583422390857
注意: 195 Hardware_ECC_Recovered
,此处驱动器读取扇区时,ECC 数据告诉它该扇区有误,然后驱动器将其恢复。还请注意 Raw_read_Error_Rate 和 Seek_Error_Rate。通常,重要的不是有多少,而是数字增加的速度。但是,在坏驱动器上,这些数字很容易达到数百万甚至数十亿。如果您的驱动器达到如此高的值,请更换它。每次必须进行 ECC 恢复时,驱动器读取速度都会减慢,当您有数百万个时,驱动器将真正开始滞后。
引自硬盘 ECC 错误! - Memofix 的数据恢复博客:
当硬盘读取一个扇区的数据时,它还会读取位于实际数据之后的 50 字节 ECC 代码。当数据首次写入扇区时,它会对 512 字节的扇区数据运行复杂的算法,从而产生唯一的 ECC 代码,只有通过读取完全相同的数据才能复制该代码。当稍后读取扇区时,驱动器会尝试通过对数据运行相同的算法并将其与之前存储的 ECC 代码进行比较来验证数据。如果代码不匹配,磁盘驱动器会生成错误代码并阻止数据传输。硬盘通常会尝试重新读取数据多达 10 次,因为它试图匹配 ECC 代码,而这个过程会大大降低驱动器的速度。
ECC 是一个复杂的数学公式,可以检测和纠正坏扇区。
刷新表面是指以小块扇区的形式读取驱动器,并用相同的内容重写这些块,以验证它们是否正常。一些软件添加了额外的技巧,例如反转所有数据,写入驱动器重新读取然后再次反转,以确保所有扇区都正常工作。
每隔几个月用 grc.com 上的 SpinRite 之类的东西刷新表面。
一个名为“维多利亚”的程序http://hdd.by会为您提供磁盘表面的计时。读取时间较长的扇区越多,情况就越糟糕。
上图:您可以看到驱动器老化的明显迹象,因为有太多绿色块;全新的驱动器几乎完全位于最浅的灰色区域,而 100 个区域(中灰色)中则有几百个。
最后,奇偶校验文件。 http://www.quickpar.org.uk/。这将生成修复文件,使您可以修复给定文件中的坏扇区。奇偶校验数据的百分比越高,它可以修复的错误就越严重。但是,处理几百个坏扇区不需要太多数据。我不知道确切的比例,但这里的其他人可能知道。
在这里添加要保护的文件,设置保护级别(2% 应该足够了),然后单击创造。
这里我故意毁掉了 10000 个扇区(count=10000),
bs
块大小为 512。
dd conv=notrunc if=/dev/zero of="Windows 10 64 16299.15.iso" bs=512 count=10000 seek=1
仅 2% 的 PAR 数据就能够恢复至少 10,000 个坏块(每个块 512 字节)。
什么是奇偶校验数据?
本文对此进行了简要介绍:
https://www.dataclinic.co.uk/raid-parity-xor/
这也是非常聪明的人为纠正错误而开发的一种公式。奇偶校验程序运行时会生成这些额外的恢复位。它基于 XOR。
我附上了一些 QuickPAR 的屏幕截图,但 WinRAR 也有此功能。请参见此处:
在“选项”下,您可以设置恢复数据的百分比;2% 应该足以防止出现坏扇区。如果有 10,000 个坏扇区,您需要尽快更换硬盘。
RAID 5/6 必须防止一两个整个磁盘发生故障,因此这个百分比要高出几个数量级。
答案2
没有什么可以防止磁盘损坏。我能想到的唯一保护措施是:
- 使用慢速(而非快速)格式格式化目标磁盘以刷新所有扇区
- 验证目标磁盘的 SMART 数据是否存在弱点
- 进行多次备份