未彻底卸载后恢复 RAID 1

未彻底卸载后恢复 RAID 1

我的台式机上有两个驱动器,它们组成了 RAID 1。昨天我的电脑死机了,所以我使用 SysRq REISUB 进行了“安全”重启。当机器重新启动时,我发现我的 RAID 驱动器上没有数据(有几个空目录,但没有实际数据)。我担心会发生最坏的情况,因此采取了以下措施:

  1. 重启并再次检查。仍然没有数据。
  2. 关机,拔掉一个驱动器,然后重启。仍然没有数据。
  3. 运行sudo fsck -y /dev/md0。(md0是 RAID)此命令的输出粘贴在下面。
  4. 已安装md0

此时,我的数据恢复了!我已将关键数据复制到外部驱动器。但现在我想修复 RAID(因为我目前在单个驱动器上操作)。

修复我的设置并将第二个驱动器重新添加到阵列的最佳方法是什么?我假设我可以擦除第二个驱动器,重新格式化,然后将其重新添加到阵列,此时我希望它重建阵列(通过从现有的已修复驱动器复制所有数据)。但是,我希望这不是必要的,并且有一种更简单、更快速的恢复方法。

sudo fsck -y /dev/md0 输出

chris@compy:/home/chris (23:14:54)
$ sudo fsck -y /dev/md0
fsck from util-linux 2.30.1
e2fsck 1.43.5 (04-Aug-2017)
/dev/md0: recovering journal
JBD2: Invalid checksum recovering block 127 in log 
JBD2: Invalid checksum recovering block 127 in log 
JBD2: Invalid checksum recovering block 127 in log 
JBD2: Invalid checksum recovering block 128 in log 
JBD2: Invalid checksum recovering block 129 in log 
JBD2: Invalid checksum recovering block 129 in log 
JBD2: Invalid checksum recovering block 129 in log 
JBD2: Invalid checksum recovering block 129 in log 
JBD2: Invalid checksum recovering block 130 in log 
JBD2: Invalid checksum recovering block 130 in log 
JBD2: Invalid checksum recovering block 130 in log 
JBD2: Invalid checksum recovering block 130 in log 
JBD2: Invalid checksum recovering block 130 in log 
JBD2: Invalid checksum recovering block 130 in log 
Journal checksum error found in /dev/md0
/dev/md0 was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Inode 215875711 extent tree (at level 1) could be narrower.  Fix? yes 

Pass 1E: Optimizing extent trees
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Free blocks count wrong (715836081, counted=708804782).
Fix? yes 

Free inodes count wrong (244146193, counted=244145069).
Fix? yes 


/dev/md0: ***** FILE SYSTEM WAS MODIFIED *****
/dev/md0: 42067/244187136 files (31.7% non-contiguous), 267916834/976721616 blocks

答案1

没有灵丹妙药。由于您启动阵列时有一个驱动器丢失,并写入了该驱动器,因此无法回到阵列有两个驱动器时状态良好的那一刻。您将重新同步。只需按照互联网上提供的众多程序之一从驱动器故障中恢复 MD RAID 1 即可。

但是,没有必要清除故障驱动器。内核知道您运行的阵列中没有该驱动器,并且该驱动器的内容不可信。

如果您配置了位图(mdadm --detail /dev/md0会告诉您),内核可能能够在重新同步时使用它来仅复制已修改的块范围。如果您必须移除驱动器并重新添加它,则无法使用位图。

相关内容