虽然我看到有多个其他问题似乎与相同(或类似)的问题有关,但没有一个问题有明确的答案。因此,我再次提出这个问题。
我正在遵循指南这里(外部,Digital Ocean),特别是“Raid 1”指南。我按照所有步骤操作,但当我重新启动时,mdadm 似乎忘记了创建的 raid 阵列。
重新创建后,一切似乎都很好,驱动器上的数据似乎在重新创建后仍然存在,尽管 mdadm 需要重新同步并重新构建阵列(这需要几个小时)。澄清一下,要恢复 raid 驱动器,我所需要做的就是重新运行创建命令并重新安装阵列。
我完全按照“保存数组布局”部分操作,但这种情况仍然发生。有人能提供如何让数组保留下来的指导吗?
如果有人想看某些东西的输出,只需询问。
/dev/sdb/
是/dev/sdc/
我用于阵列的驱动器,/dev/md0
是阵列。
重启后的输出sudo blkid
:
/dev/nvme0n1: PTUUID="a2ac4afb-a9fe-4c9c-aafd-ffe2e144b803" PTTYPE="gpt"
/dev/nvme0n1p1: UUID="f9b2e155-854d-4a5d-a67e-17bd15f38289" TYPE="ext4" PARTUUID="72fd637a-3f84-4c87-a1fc-6dd4d093ee1d"
/dev/sda1: LABEL="Recovery" UUID="56FEDCF2FEDCCAFF" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="ba0395b4-48a6-45b1-b340-cf4bfe1d29d2"
/dev/sda2: UUID="1ADD-CEB5" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="2024cdff-4b6f-460e-827d-7443180849e6"
/dev/sda3: PARTLABEL="Microsoft reserved partition" PARTUUID="b0475376-4a4c-4388-8c13-486587f441d9"
/dev/sda4: UUID="22D0E70AD0E6E2D1" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="e4d35323-a0b8-4a47-9722-193cc6cd1197"
/dev/sdb: PTUUID="aea84627-3e11-46a5-8a09-96510cae3a1a" PTTYPE="gpt"
/dev/sdc: PTUUID="76fce25c-b721-441b-b82e-b42d2d43d24b" PTTYPE="gpt"
sudo blkid
重新创建 raid 阵列后的输出:
/dev/nvme0n1p1: UUID="f9b2e155-854d-4a5d-a67e-17bd15f38289" TYPE="ext4" PARTUUID="72fd637a-3f84-4c87-a1fc-6dd4d093ee1d"
/dev/sda1: LABEL="Recovery" UUID="56FEDCF2FEDCCAFF" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="ba0395b4-48a6-45b1-b340-cf4bfe1d29d2"
/dev/sda2: UUID="1ADD-CEB5" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="2024cdff-4b6f-460e-827d-7443180849e6"
/dev/sda4: UUID="22D0E70AD0E6E2D1" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="e4d35323-a0b8-4a47-9722-193cc6cd1197"
/dev/nvme0n1: PTUUID="a2ac4afb-a9fe-4c9c-aafd-ffe2e144b803" PTTYPE="gpt"
/dev/sda3: PARTLABEL="Microsoft reserved partition" PARTUUID="b0475376-4a4c-4388-8c13-486587f441d9"
/dev/sdb: UUID="f80520f0-6304-ccc5-0ec2-bd8f6a2af079" UUID_SUB="5a38cecf-4236-db6a-d369-a53271993698" LABEL="BATTLESTAR:0" TYPE="linux_raid_member"
/dev/md0: LABEL="DataStore" UUID="c5be481b-d487-4632-8594-7b0b847f327a" TYPE="ext4"
/dev/sdc: UUID="f80520f0-6304-ccc5-0ec2-bd8f6a2af079" UUID_SUB="cd27b6f9-d6e3-1c22-8746-3f2ebb3c5eb4" LABEL="BATTLESTAR:0" TYPE="linux_raid_member"
内容/etc/mdadm/mdadm.conf
:(我确保在每次重新创建时更新它以确保 UUID 得到更新)
# mdadm.conf
#
# !NB! Run update-initramfs -u after updating this file.
# !NB! This will ensure that initramfs has an uptodate copy.
#
# Please refer to mdadm.conf(5) for information about this file.
#
# by default (built-in), scan all partitions (/proc/partitions) and all
# containers for MD superblocks. alternatively, specify devices to scan, using
# wildcards if desired.
#DEVICE partitions containers
# automatically tag new arrays as belonging to the local system
HOMEHOST <system>
# instruct the monitoring daemon where to send mail alerts
MAILADDR root
# definitions of existing MD arrays
# This configuration was auto-generated on Mon, 05 Mar 2018 19:04:50 -0500 by mkconf
ARRAY /dev/md0 metadata=1.2 name=BATTLESTAR:0 UUID=f80520f0:6304ccc5:0ec2bd8f:6a2af079
答案1
好吧,我明白了,感谢另一个问题的提示......
最终解决我问题的方法是在每个驱动器上创建一个 ext4 分区,并将 mdadm 指向分区而不是驱动器本身。此后,阵列在重启后保持不变。
在回答这个问题之前我没有尝试过这个,因为另一个问题没有将答案标记为已接受。
答案2
我也听从了建议这里重启后我又遇到了同样的情况。发生这种情况的原因是至少有一个硬盘之前被使用过,可能包含分区表。
解决方案是在创建 RAID 阵列之前删除分区表。
在创建阵列之前,我覆盖了 HDD 上的前 4MB 数据:
dd if=/dev/zero of=/dev/sdb bs=4096 count=1000
dd if=/dev/zero of=/dev/sdc bs=4096 count=1000
mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sdb /dev/sdc
问题解决了。
答案3
我知道这是一篇旧帖子,但我一直在努力解决这个问题,这是我的结果:
我的磁盘“冻结”了 - 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
现在重启后一切正常,一切都按预期工作。