我有一个由 5 个驱动器上的分区( / dev/sda1
、、、和)构建的 RAID 5 阵列。当我手动组装阵列时,它工作正常。/dev/sdb1
/dev/sdc1
/dev/sdd1
/dev/sde1
/dev/sdb
不幸的是,和上似乎也有超级块/dev/sdc
(可能是我早期搞砸了),并且当阵列在启动时自动组装时,它会使用/dev/sdb
而不是进行构建/dev/sdb1
(与相同/dev/sdc
),并且无法挂载(出现无效的 fs 错误)。
$ sudo mdadm --assemble --scan --force (presumably what happens on startup)
mdadm: WARNING /dev/sdb1 and /dev/sdb appear to have very similar superblocks.
If they are really different, please --zero the superblock on one
If they are the same or overlap, please remove one from the
DEVICE list in mdadm.conf.
$ sudo mdadm --detail /dev/md7
/dev/md7:
Version : 00.90
Creation Time : Wed Apr 6 18:17:07 2011
Raid Level : raid5
Array Size : 7814047744 (7452.06 GiB 8001.58 GB)
Used Dev Size : 1953511936 (1863.01 GiB 2000.40 GB)
Raid Devices : 5
Total Devices : 5
Preferred Minor : 7
Persistence : Superblock is persistent
Update Time : Sat Apr 30 13:55:50 2011
State : clean
Active Devices : 5
Working Devices : 5
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 64K
UUID : 224009a1:e4173bf3:2490f10a:1455ce9c (local to host ravenscar)
Events : 0.2
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 8 16 1 active sync /dev/sdb
2 8 32 2 active sync /dev/sdc
3 8 48 3 active sync /dev/sdd1
4 8 65 4 active sync /dev/sde1
$ sudo mdadm --examine /dev/sdb
/dev/sdb:
Magic : a92b4efc
Version : 00.90.00
UUID : 224009a1:e4173bf3:2490f10a:1455ce9c (local to host ravenscar)
Creation Time : Wed Apr 6 18:17:07 2011
Raid Level : raid5
Used Dev Size : 1953511936 (1863.01 GiB 2000.40 GB)
Array Size : 7814047744 (7452.06 GiB 8001.58 GB)
Raid Devices : 5
Total Devices : 5
Preferred Minor : 7
Update Time : Wed Apr 27 21:15:03 2011
State : clean
Active Devices : 5
Working Devices : 5
Failed Devices : 0
Spare Devices : 0
Checksum : f83035d3 - correct
Events : 2
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 1 8 17 1 active sync /dev/sdb1
0 0 8 1 0 active sync /dev/sda1
1 1 8 17 1 active sync /dev/sdb
2 2 8 33 2 active sync /dev/sdc
3 3 8 49 3 active sync /dev/sdd1
4 4 8 65 4 active sync /dev/sde1
然后我这样做:
$ sudo mdadm --stop /dev/md7
$ sudo mdadm --assemble /dev/md7 /dev/sd[abcde]1
然后它就起作用了。
我的问题:使用该选项删除这些错误的超级块是否安全?我还应该采取什么其他措施?我是否做出了正确的选择,使用分区而不是驱动器(而不是,等等)--zero-superblock
构建阵列。/dev/sda1
/dev/sda
答案1
不要将超级块清零。按照 mdadm 的建议进行编辑/etc/mdadm.conf
,或/etc/mdadm/mdadm.conf
将其更改DEVICE ....
为:
DEVICE /dev/sda1
DEVICE /dev/sdb1
DEVICE /dev/sdc1
DEVICE /dev/sdd1
DEVICE /dev/sde1
答案2
似乎发生的情况是 MD 从两个设备看到相同的超级块(sdb1 是 sdb 的子集)。关闭超级块会关闭真正的超级块,所以不要这样做。
MD v0.90 超级块存储在设备末尾的 64k 对齐块上。在您的例子中,sdb1 是唯一的分区,超级块位于 sdb 和 sdb1 的末尾。不知何故(这似乎是一个老问题,请参阅末尾的链接)MD 感到困惑,并开始认为您在两个单独的设备上有两个超级块副本。
如果该分区上有一些额外空间,则修复很容易 - 您只需擦除超级块,然后重新分区磁盘,在磁盘结束前 64k 处结束分区;MD 将看不到 sdb 上的子块并使用 sdb1 正确组装阵列。如果您无法从 sdb 中取出 64k,则必须重建阵列。如果这不是您的启动盘,您还可以使用较新的超级块版本。v.1.1 和 v.1.2 都将超级块存储在阵列开头的某个位置,这将解决这个特定问题。
我刚刚在 raid1 上遇到了完全相同的问题。使用“fdisk -u”(使用扇区作为单位),分区以扇区 143374743 结束。我从这个数字中减去 128(128 个 512 字节扇区 = 64k),并将得到的数字用作分区的结尾。然后我可以使用以下命令验证 MD 不会在 sda 上看到超级块:
# mdadm --misc -E /dev/sda
似乎最近在分区工具中使用扇区和放弃 DOS 兼容性的行为变化导致最后一个分区总是在磁盘的最末端结束(而不是在柱面边界上)。其他一些参数可能会发挥作用 - 例如 - 我有一个正在运行的系统,当直接查询磁盘时,它会显示重复的超级块,并且仍然正确安装其阵列。
有关 MD 超级块格式的更多信息,请参阅:
https://raid.wiki.kernel.org/index.php/RAID_superblock_formats#The_version-0.90_Superblock_Format
Debian FAQ (第 11 点) 提到了这个问题:
http://git.debian.org/?p=pkg-mdadm/mdadm.git;a=blob_plain;f=debian/FAQ;hb=HEAD
答案3
如果阵列上没有任何数据,我会将其擦除并重新开始。如果阵列上有数据,我会在使用超级块之前先备份数据。
就我个人而言,我会从中取出数据,并删除每个磁盘开头的dd
几个扇区,然后重新分区并重建阵列。如果知道一切从一开始就设置得当,我会感到更安心。/dev/zero
另外:在我看来,这是一个相当大的阵列,无法进行 RAID-5。请注意重建时间。如果发生单个磁盘故障,重建期间读取时出现另一个错误,您将面临灾难性的数据丢失。您可能需要考虑 RAID-6。
答案4
不幸的是,当我读到下面的信息时,我删除了RAID-Superblock:
mdadm: WARNING /dev/sdb1 and /dev/sdb appear to have very similar superblocks.
If they are really different, please --zero the superblock on one
If they are the same or overlap, please remove one from the
DEVICE list in mdadm.conf.
之后我的 RAID1 就无法再启动了。
幸运的是,创建具有与原始 RAID1 相同参数的新 RAID1 后,并没有删除旧 RAID1: http://lists.debian.org/debian-user-french/2006/03/msg00607.html 通过http://kevin.deldycke.com/2007/03/how-to-recover-a-raid-array-after-having-zero-ized-superblocks/
虽然上面的 mdadm 消息有些不准确/具有误导性/无帮助,但 mdadm 在娱乐方面却很智能。