mdadm 超级块隐藏/阴影分区

mdadm 超级块隐藏/阴影分区

简洁版本:这样做安全吗

mdadm --zero-superblock /dev/sdd

在具有分区 (dev/sdd1)、文件系统和数据的磁盘上?分区是否可以挂载并且数据是否仍然存在?

较长的版本: 我以前有一个 raid6 阵列,但决定拆除它。阵列中的磁盘现在用作非 raid 磁盘。超级块已清除:

sudo mdadm --zero-superblock /dev/sdd

使用 fdisk 对磁盘进行重新分区,并使用 mfks.ext4 创建文件系统。所有磁盘都已安装,一切正常。

今天,几周后,当尝试安装其中一个磁盘时,它无法被识别,或者更确切地说是其上的单个分区。

sudo mount /dev/sdd1 /mnt/tmp
mount: special device /dev/sdd1 does not exist

fdisk 声称其上有一个分区:

sudo fdisk -l /dev/sdd

Disk /dev/sdd: 2000.4 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xb06f6341

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1      243201  1953512001   83  Linux

当然 mount 是正确的,设备 /dev/sdd1 不存在,我猜测 udev 没有创建它,因为它上面还有 mdadm 数据:

sudo mdadm --examine /dev/sdd
/dev/sdd:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b164e513:c0584be1:3cc53326:48691084
           Name : pringle:0  (local to host pringle)
  Creation Time : Sat Jun 16 21:37:14 2012
     Raid Level : raid6
   Raid Devices : 6

 Avail Dev Size : 3907027120 (1863.02 GiB 2000.40 GB)
     Array Size : 15628107776 (7452.06 GiB 8001.59 GB)
  Used Dev Size : 3907026944 (1863.02 GiB 2000.40 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 3ccaeb5b:843531e4:87bf1224:382c16e2

    Update Time : Sun Aug 12 22:20:39 2012
       Checksum : 4c329db0 - correct
         Events : 1238535

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 3
   Array State : AA.AAA ('A' == active, '.' == missing)

我的 mdadm --zero-superblock 显然不起作用。我可以安全地重试而不丢失数据吗?如果不行,有什么建议吗?在启动时根本不启动 mdadm 可能是一个(有点不令人满意的)解决方案。

答案1

将 Linux RAID 卷上的超级块清零不会影响实际的有效载荷。事实上,有效载荷是抵消来自超级块的相当多的内容(在最近的 mdadm 中等于 2048 个扇区,在 mdadm <= 版本 3.0 中更少)。

但就你的情况而言(只要你确实执行了mfks.ext4 /dev/sdd1),分区超级块已经清空。因此,解释你所描述的情况的唯一方法是假设超级块后来被重新添加,这意味着你的数据已经损坏(我希望 fsck 能够在之后更正它)。

最有可能的情况是,您mfks.ext4 /dev/sdd1在停止 md 设备之前执行了该操作。或者您是此处描述的错误的受害者(就像我一样):一个令人讨厌的 md/raid 错误这实际上允许 Linux 重写非活动 md 设备上的位图。

因此,简而言之,将超级块清零是无关紧要的。您应该停止该设备,清除 /etc/mdadm/mdadm.conf 中描述它的部分,然后在该设备上运行 fsck(首先尝试以只读模式确保确实存在类似于 ext4 文件系统的东西)。

高血压

相关内容