新的 mdadm RAID 在重启后消失

新的 mdadm RAID 在重启后消失

重启后,mdadm 出现问题,我无法重新组装/dev/md0

我在 debian wheezy 上工作。

我已完成以下步骤:

sudo mdadm --create --verbose /dev/md0 --level=6 --raid-devices=4 /dev/sd[b-e]
cat /proc/mdstat
sudo mdadm --readwrite /dev/md0
sudo mdadm --detail --scan >> /etc/mdadm/mdadm.conf
echo check > /sys/block/md0/md/sync_action
sudo pvcreate /dev/md0
sudo pvdisplay
sudo vgcreate vgraid6 /dev/md0
sudo lvcreate -l 100%FREE -n lvHD vgraid6
sudo mkfs.ext4 -v /dev/vgraid6/lvHD

此处一切顺利。

安装 RAID 后,我可以使用它、创建文件、从其他 PC 访问它......

现在问题来了:

重新启动服务器(立即重新启动)后,RAID 不再存在,/dev/md0消失了。

首先我检查了/etc/mdadm/mdadm.conf

# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#
#DEVICE partitions containers
...
CREATE owner=root group=disk mode=0660 auto=yes
MAILADDR root
ARRAY /dev/md0 metadata=1.2 name=media:0 UUID=cb127a0b:ad4eb61d:e0ba8f82:db4b062d

我尝试后:

$ mdadm --stop --scan
$ mdadm --assemble --scan

或者:

$ sudo  mdadm --assemble /dev/md0 /dev/sd[b-e]
    mdadm: Cannot assemble mbr metadata on /dev/sdb
    mdadm: /dev/sdb has no superblock - assembly aborted


$ sudo  mdadm --examine /dev/sd[b-e]
/dev/sdb:
   MBR Magic : aa55
Partition[0] :   4294967295 sectors at            1 (type ee)
/dev/sdc:
   MBR Magic : aa55
Partition[0] :   4294967295 sectors at            1 (type ee)
/dev/sdd:
   MBR Magic : aa55
Partition[0] :   4294967295 sectors at            1 (type ee)
/dev/sde:
   MBR Magic : aa55
Partition[0] :   4294967295 sectors at            1 (type ee)

mdadm 守护进程正在运行(ps aux | grep mdadm

空的 /proc/mdstat

$ cat /proc/mdstat
Personalities :
unused devices: <none>

怎么了?

答案1

原因有两点:

  • 你的(新的)mdadm.conf在阵列组装时还未被读取。

    这是因为它发生在您的根文件系统被挂载之前(显然:您必须有一个可以工作的 RAID 设备才能访问它),所以该文件是从包含所谓预启动环境的 initramfs 映像中读取的。

    因此,为了使其工作,在更新配置后,运行

    # update-initramfs -u
    

    以更新 initramfs。

  • 您的 RAID 设备未发现并在启动时自动组装。

    为此,请将成员分区的类型更改为0xfd(Linux RAID 自动检测) — 对于 MBR 样式分区表或00FD(相同) 对于 GPT。您可以分别使用fdiskgdisk来执行此操作。

    mdadm在启动时运行(从 initramfs 中),扫描可用分区,从所有具有类型的分区中读取元数据块,并组装和启动所有能够启动的 RAID 设备。这不需要initramfs 映像中的0xfd最新副本。mdadm.conf

至于选择哪种方法,则取决于您。我个人喜欢第二种方法,但如果您恰好有多个 RAID 设备,并且只想在启动时启动其中几个(需要有一个有效的根文件系统),然后稍后激活其余设备,则第一种方法或两者的组合是一种可行的方法。

答案2

我知道这是一篇旧帖子,但我一直在努力解决这个问题,这是我的结果:

我的磁盘“冻结”了 - Seagate 磁盘。您可以通过输入命令来检查是否有同样的问题:

hdparm -I /dev/sdb

结果表明:

Security: 
Master password revision code = 65534
    supported
not enabled
not locked
    **frozen**
not expired: security count
    supported: enhanced erase

我无法更改此设置。磁盘在常规分区下工作正常,但当我将它们格式化为 Linux Raid 时,它们丢失了分区表,并且在重新启动后变为“空”。

我在分区上创建了 raid,而不是在设备上:

mdadm --create --verbose /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1

现在重启后一切正常,一切都按预期工作。

答案3

谢谢你的回答。

我已经尝试更新 initranfd,但没有成功。

通过你的第二个提示,我解决了这个问题:

使用以下命令在每个磁盘上创建分区:

gdisk /dev/sd[b-e] \n \ \fd00\w\y

在设备上的分区上创建 mdadm(最后检查 1)

sudo mdadm --create --verbose /dev/md0 --level=6 --assume-clean --raid-devices=4 /dev/sd[b-e]1

答案4

注意,不要盲目复制粘贴,因为这可能会填满你的文件系统......

  • 猫/proc/mdstat
  • 记下 md(无论什么)号码,(提示 - 重启后不太可能是 md0)
  • mkfs -t ext4 /dev/md(无论如何)
  • 挂载 /dev/myraiddevice /dev/md(无论什么)
  • 将其粘贴到 fstab 中

获取有关阵列设置的详细信息 - mdadm -D /dev/md(whatever)

我知道这是旧帖子,但我还是发布它以防我将来忘记我的决心。

相关内容