问题
我创建了一个 RAID 1 配置,将其命名为 /dev/md1,但是当我重新启动时,该名称始终更改为 /dev/md127
答案1
解决方案
我找不到具有已创建的 RAID 1 配置的解决方案,因此请备份您的数据,因为对于此解决方案,我将告诉您需要先删除 RAID 1。实际上,我只是删除了正在使用的虚拟机并创建了一个新虚拟机。
所以这将适用于 Debian 10,并且适用于干净的机器
创建一个新的干净的 raid1 配置
在我的例子中,我有 3 个虚拟磁盘,所以我运行这样的命令(请记住,首先您需要创建相同大小的分区并类型为 Linux raid 自动检测)
sudo mdadm --create /dev/md1 --level=mirror --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
编辑 mdadm.conf
转到文件/etc/mdadm/mdadm.conf
,删除所有内容,并将其替换为:
# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#
DEVICE partitions
# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes
# 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
在前一个文件中添加对数组的引用
以 root 身份登录并执行此操作
sudo mdadm --detail --scan >> /etc/mdadm/mdadm.conf
现在这个文件的内容是
# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#
DEVICE partitions
# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes
# 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
ARRAY /dev/md1 metadata=1.2 name=buster:1 UUID=1279dbd2:d0acbb4f:0b34e3e1:3de1b3af
ARRAY /dev/md1metadata=1.2 name=buster:1 UUID=1279dbd2:d0acbb4f:0b34e3e1:3de1b3af (这是引用数组的新行)
如果该命令在 ARRAY 行之前添加了某些内容,请将其删除。
万一
跑步sudo update-initramfs -u
永久挂载您的 raid 的一个分区
安装它是可选的,但我认为这将需要使用 RAID1 的存储。
- 获取分区的 UUID
sudo blkid
/etc/fstab
使用这一行新代码进行编辑,UUID=d367f4ed-2b37-4967-971a-13d9129fff4f /home/vagrant/raid1 ext3 defaults 0 2
将 UUID 替换为您在分区中获得的 UUID,将文件系统替换为您在分区中获得的文件系统
我现在的内容/etc/fstab
是
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/vda1 during installation
UUID=b9ffc3d1-86b2-4a2c-a8be-f2b2f4aa4cb5 / ext4 errors=remount-ro 0 1
# swap was on /dev/vda5 during installation
UUID=f8f6d279-1b63-4310-a668-cb468c9091d8 none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
UUID=d367f4ed-2b37-4967-971a-13d9129fff4f /home/vagrant/raid1 ext3 defaults 0 2
UUID=d367f4ed-2b37-4967-971a-13d9129fff4f /home/vagrant/raid1 ext3 defaults 0 2 (这里你可以清楚地看到我添加的行)
现在您可以重新启动
现在这个名字不会改变。
如果我运行sudo fdisk -l
我会得到这个(我将只显示相关信息)
Disk /dev/md1: 1022 MiB, 1071644672 bytes, 2093056 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x37b2765e
Device Boot Start End Sectors Size Id Type
/dev/md1p1 2048 2093055 2091008 1021M 83 Linux
如果我跑步df -Th
我会得到
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 227M 0 227M 0% /dev
tmpfs tmpfs 49M 3.4M 46M 7% /run
/dev/sda1 ext4 19G 4.1G 14G 24% /
tmpfs tmpfs 242M 0 242M 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 242M 0 242M 0% /sys/fs/cgroup
/dev/md1p1 ext3 989M 1.3M 937M 1% /home/vagrant/raid1
tmpfs tmpfs 49M 0 49M 0% /run/user/1000
你看那也已经挂载了。最后,如果我跑步cat /proc/mdstat
,我会得到
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sdd1[2] sdc1[1] sdb1[0]
1046528 blocks super 1.2 [3/3] [UUU]
unused devices: <none>
raid1 正在与 sdb1、sdc1 和 sdd1 一起工作。
现在就完成了!您可以重新启动,您的团队名称将永远保留。
我使用的所有资源,以便我找到适合我的解决方案
https://superuser.com/questions/287462/how-can-i-make-mdadm-auto-assemble-raid-after-each-boot
https://ubuntuforums.org/showthread.php?t=2265120
https://askubuntu.com/questions/63980/how-do-i-rename-an-mdadm-raid-array
https://serverfault.com/questions/267480/how-do-i-rename-an-mdadm-raid-array
https://bugzilla.redhat.com/show_bug.cgi?id=606481
有些比其他解决方案更适合此解决方案,但是他们全部帮助我找到了这个解决方案。
哇,你读了很多书不是吗?现在您的问题已经解决了,您可以放心了,希望这对您有所帮助!再见!
答案2
对于 Debian 11 系统,需要做的就是:
mdadm --detail --scan /dev/md127 >> /etc/mdadm/mdadm.conf
vim /etc/mdadm/mdadm.conf
,将附加行编辑为如下所示:ARRAY /dev/md0 元数据=1.2 UUID=XXXXXXXX:XXXXXXXX:XXXXXXXX:XXXXXXXX
换句话说,移除该name
部件,然后将设备设置为/dev/md0
。
update-initramfs -u
重启
答案3
如果 mdadm 检测到该数组是“外部”数组,而不是“本地”数组,则可能会发生这种情况。外部阵列将被分配从 md127 开始(向下)的设备节点。本地阵列被分配从 md0 开始(并向上)的设备节点。
mdadm 确定阵列是本地还是外部的一种方法是将阵列上记录的“homehost”名称与当前主机名进行比较。我发现在启动期间,主机名在 mdadm 运行时尚未正确配置的情况并不罕见(因为 init 系统尚未到达根据 / 的内容设置主机名的 init 脚本)等/主机名)。因此,当 mdadm 查询主机名时,它会获取“localhost”或“(none)”或编译到内核中的任何默认主机名。该默认名称与阵列上记录的“homehost”不匹配,因此 mdadm 将其视为外部阵列。
可以通过确保在运行 mdadm 来组装阵列之前设置计算机的主机名来解决此问题。
答案4
我删除了“/etc/mdadm/mdadm.conf”中的数组,运行下一个命令
sudo update-initramfs -u
然后重新启动系统。比添加数组
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
打开/etc/mdadm/mdadm.conf
并将其更改为
ARRAY /dev/md/0 metadata=1.2 name=raspberrypi-nas:0 UUID=86275e90:a19b3601:fc78b0d8:57f9c56a
ARRAY /dev/md/1 metadata=1.2 name=raspberrypi:1 UUID=e8f0c48c:448321f6:1db0f830:ea39bc42
就像我也想要的那样,奔跑吧
sudo update-initramfs -u
并重新启动系统。现在一切都按方面进行了。