![重建 Raid 阵列](https://linux22.com/image/609463/%E9%87%8D%E5%BB%BA%20Raid%20%E9%98%B5%E5%88%97.png)
我如何重建 RAID 阵列?我使用的是 RAID 1。我的数据中心说需要修复,一开始我以为是硬盘有问题,因为 smartmoontools 的扫描结果显示是硬盘有问题,但事实并非如此。
命令:
猫/proc/mdstat
输出:
Personalities : [raid1] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb1[1] sda1[0]
2096064 blocks [2/2] [UU]
md1 : active raid1 sda2[0]
524224 blocks [2/1] [U_]
md2 : active raid1 sda3[0]
729952192 blocks [2/1] [U_]
unused devices: <none>
我是否需要:
# mdadm /dev/md1 -r /dev/sdb2
# mdadm /dev/md2 -r /dev/sdb3
# mdadm /dev/md3 -r /dev/sdb4
进而
# mdadm /dev/md1 -a /dev/sdb2
# mdadm /dev/md2 -a /dev/sdb3
# mdadm /dev/md3 -a /dev/sdb4
我会丢失数据或者我的服务器会离线吗?
以下是 fdisk -l 的输出
Disk /dev/sda: 750.1 GB, 750156374016 bytes
64 heads, 32 sectors/track, 715404 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sda1 2 2048 2096128 fd Linux raid autodetect
/dev/sda2 2049 2560 524288 fd Linux raid autodetect
/dev/sda3 2561 715404 729952256 fd Linux raid autodetect
Disk /dev/sdb: 750.1 GB, 750156374016 bytes
64 heads, 32 sectors/track, 715404 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 2 2048 2096128 fd Linux raid autodetect
/dev/sdb2 2049 2560 524288 fd Linux raid autodetect
/dev/sdb3 2561 715404 729952256 fd Linux raid autodetect
Disk /dev/md2: 747.4 GB, 747471044608 bytes
2 heads, 4 sectors/track, 182488048 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk /dev/md2 doesn't contain a valid partition table
Disk /dev/md1: 536 MB, 536805376 bytes
2 heads, 4 sectors/track, 131056 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk /dev/md1 doesn't contain a valid partition table
Disk /dev/md0: 2146 MB, 2146369536 bytes
2 heads, 4 sectors/track, 524016 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk /dev/md0 doesn't contain a valid partition table
以下是 smartctl -A /dev/sdb 的输出
=== START OF READ SMART DATA SECTION ===
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 111 100 006 Pre-fail Always - 38042073
3 Spin_Up_Time 0x0003 100 100 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 7
5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0
7 Seek_Error_Rate 0x000f 073 060 030 Pre-fail Always - 24494887
9 Power_On_Hours 0x0032 091 091 000 Old_age Always - 7935
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 7
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 - 4
189 High_Fly_Writes 0x003a 100 100 000 Old_age Always - 0
190 Airflow_Temperature_Cel 0x0022 062 052 045 Old_age Always - 38 (Min/Max 34/41)
194 Temperature_Celsius 0x0022 038 048 000 Old_age Always - 38 (0 26 0 0 0)
195 Hardware_ECC_Recovered 0x001a 032 026 000 Old_age Always - 38042073
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 - 101494372179726
241 Total_LBAs_Written 0x0000 100 253 000 Old_age Offline - 3317006641
242 Total_LBAs_Read 0x0000 100 253 000 Old_age Offline - 2924590852
答案1
那个驱动器 sdb 看起来离故障不远了。虽然它还没有正式失败了,它已经没有多少生命力了。
195 Hardware_ECC_Recovered 0x001a 032 026 000 Old_age Always - 38042073
这次活动有大量可恢复读取错误。这意味着它成功地使用错误校正重建了数据。然而,它已经到了很可能很快就会出现不可恢复读取错误,无法成功重建磁盘损坏或故障部分的数据。此时您无能为力,只能更换驱动器。
如果您的重建过程一直在同一位置停止,则很有可能驱动器已经在盘片上的该位置发生故障,但未报告该情况。如果桌面级驱动器第一次发生故障,它们将停止并尝试几分钟甚至几小时来读取特定扇区,从而导致此类情况。而您的这个“服务器”中可能就有这样的驱动器……
此时您应该主动更换该驱动器,因为它很快就会出现故障(如果还没有的话)。
答案2
看起来只有一半的镜子丢失了。所以应该没有问题。但问题是为什么子镜像 (sdbX) 丢失了?在重新安装镜子之前检查一下它们可能是个好主意。
mdadm --manage /dev/md1 --add /dev/sdb2
mdadm --manage /dev/md2 --add /dev/sdb3
mdadm --manage /dev/md3 --add /dev/sdb4
答案3
当您使用 RAID1 镜像两个卷时,每个副本都有一个“活动计数器”,当副本内部发生变化时,该计数器会更新:这样,系统能够在发生崩溃或其他事件导致其中一个卷崩溃的情况下了解哪一个卷是最新的。
重新同步意味着最新的副本将覆盖“失去同步”的旧副本。因此,离线硬盘或有缺陷的硬盘将强制阵列进入“降级模式”(只有一个副本在线,无冗余)。
您可以从降级模式中恢复,强制重新同步,以便将唯一的活动分区克隆到您已重新开始工作的分区,或者更换有缺陷的磁盘并为阵列提供新的空间,该阵列将以与之前描述的相同的方式进行克隆。
这两种方法都可以保持你的数据完好无损,除非你对配置或仍然存在的“好”分区做了不当的事情=)
我认为在你想摆弄它们之前最好先备份你的 raid 配置=)
至于 SMART 值,除了在其他回复中讨论的 Hardware_ECC_Recovered 之外,它们对我来说似乎还不错。
无论如何,避免考虑您在那里看到的单个值,还要检查它变化的速度。我曾经在驱动器上看到过奇怪的值,但它们并没有变得更糟,它们很稳定。另一方面,良好的 SMART 值并不能证明磁盘是完美的:在我看来,它们可以很好地检查由于使用/老化而导致的磁盘磨损,但它们几乎无法防止突然故障(例如由机械应力、过热等引起的故障 - 想想服务器机房中发生故障的冷却器......)
祝你好運!=)