Linux raid 重启后消失

Linux raid 重启后消失

我在 Linux 上的故障排除能力并不令人印象深刻,正如你所知。另一方面,我可以很好地遵循指示。我有一个带有 Linux raid 的 Linux 服务器。它运行良好,大约半年没有任何问题,但后来我停电了,从那以后一直遇到同样的问题。重建raid后,我的所有文件仍然存在,所以这是一件好事。当我重新启动服务器时,raid 设备 md0 消失了。

pi@pinas:~ $ cat /proc/mdstat 
Personalities : 
unused devices: <none>

pi@pinas:~ $ ls /dev/md*
pi@pinas:~ $ 

我找到了一个问题在这里这似乎对其他人有帮助,但我尝试过,但没有帮助。我还查看了其他几个网站,都说类似的话。我使用 webmin 创建 raid,mdadm.conf “看起来”没问题。我不知道我是否在互联网上搜索正确的内容,或者即使我正在查找正确的日志文件。有人有什么想法吗?

提前致谢。

***编辑1

root@pinas:/home/pi# service mdadm start
Failed to start mdadm.service: Unit mdadm.service is masked.

我想知道 mdadm 服务是否正在运行。该进程当前在系统上未处于活动状态,我不知道如何判断它是否配置为在启动时启动、如何启动它或将其配置为在启动时启动。

***编辑2

systemctl list-unit-files
[email protected]           static  
[email protected]             static  
mdadm-waitidle.service                 masked  
mdadm.service                          masked  
[email protected]                         static  
mdmonitor.service                      static  

我找到了这个。我不知道这是否不好,但看起来很可疑。这是应该的吗?他们都没有说启用,我认为他们应该这样做。有任何想法吗?

***编辑3

systemctl list-unit-files
[email protected]           static  
[email protected]             static  
mdadm-waitidle.service                 masked  
mdadm.service                          masked  
[email protected]                         static  
mdmonitor.service                      static  

dpkg-reconfigure mdadm
update-initramfs: deferring update (trigger activated)
update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults
update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults
Processing triggers for initramfs-tools (0.120+deb8u3) ...

我运行了 @telcoM 建议的命令,这是输出。我还尝试重新安装这些命令,但输出仍然是相同的。

我尝试在网上查看其他几个类似名称的踏板,但到目前为止我还没有发现任何似乎有帮助的东西。我认为问题与服务未在启动时启动有关,但我对 Linux 服务的经验不足,不知道如何修复它。 @roaima 认为这是 initramfs 的问题,但我不知道如何检查或纠正它。有人有什么想法吗?

***编辑4

CREATE owner=root group=disk mode=0660 auto=yes
HOMEHOST <system>
MAILADDR root
ARRAY /dev/md/0  metadata=1.2 UUID=d3434dfc:2fb4792e:0b64f806:67e35ee3 name=raspberrypi:0
ARRAY /dev/md/0  metadata=1.2 UUID=40fb937f:870c7c13:46774666:87445bc5 name=pinas:0

这是我的 mdadm.conf 文件的输出。这很有趣,因为第一个列出的数组没有正确的名称......

答案1

在遇到同样的问题后,这个食谱对我有用。查遍了整个网络试图找到答案,最后发现了这个,仍然没有帮助。

在我看来,问题是多方面的。

  1. mdadm 会在下次重新启动时/dev/md0重新分配设备文件。/dev/md127所以你不能只使用fstab中的设备文件。我最终使用了创建的文件系统中的 UUID。

  2. 网络上几乎所有 RAID 驱动器设置教程都显示使用驱动程序设备文件创建 RAID 设备,如下所示:

    mdadm --create --verbose /dev/md0 --level=0 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd
    

    相反,我使用了分区设备文件,如下所示:

    mdadm --create --verbose /dev/md0 --level=0 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
    

    gdisk第二种形式需要使用或在每个磁盘上正确创建分区fdisk。我使用gdisk并将其指定为类型fd00,即 raid 分区。

  3. 有很多关于需要更新的讨论/etc/mdadm/mdadm.conf。这是错误的。我故意删除了那个文件。不需要。 (见下文)

这真的就是全部了。完整食谱如下...


fd00使用Linux RAID类型的一个分区对每个驱动器进行分区:

root@teamelchan:~# gdisk /dev/sda
Command (? for help): n
Partition number (1-128, default 1):
First sector (2048-3907029134, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-3907029134, default = 3907029134) or {+-}size{KMGTP}:
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): fd00
Changed type of partition to 'Linux RAID'

Command (? for help): p
Disk /dev/sda: 3907029168 sectors, 1.8 TiB
Model: ST2000DM001-1ER1
Sector size (logical/physical): 512/4096 bytes
Disk identifier (GUID): F81E265F-2D02-864D-AF62-CEA1471CFF39
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 2048, last usable sector is 3907029134
Partitions will be aligned on 2048-sector boundaries
Total free space is 0 sectors (0 bytes)

Number Start (sector) End (sector) Size Code Name
1
2048 3907029134 1.8 TiB FD00 Linux RAID

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sda.
The operation has completed successfully.

现在您应该在 /dev 中看到磁盘设备和分区设备

root@teamelchan:~# ls /dev/sd[a-d]*
/dev/sda /dev/sda1 /dev/sdb /dev/sdb1 /dev/sdc /dev/sdc1 /dev/sdd /dev/sdd1

现在使用分区设备文件而不是磁盘设备通过 mdadm 创建您选择的 RAID

root@teamelchan:~# mdadm --create --verbose /dev/md0 --level=0 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: chunk size defaults to 512K
mdadm: /dev/sda1 appears to contain an ext2fs file system
size=471724032K mtime=Sun Nov 18 19:42:02 2018
mdadm: /dev/sda1 appears to be part of a raid array:
level=raid0 devices=4 ctime=Thu Nov 22 04:00:11 2018
mdadm: /dev/sdb1 appears to be part of a raid array:
level=raid0 devices=4 ctime=Thu Nov 22 04:00:11 2018
mdadm: /dev/sdc1 appears to be part of a raid array:
level=raid0 devices=4 ctime=Thu Nov 22 04:00:11 2018
mdadm: /dev/sdd1 appears to contain an ext2fs file system
size=2930265540K mtime=Sun Nov 18 23:58:02 2018
mdadm: /dev/sdd1 appears to be part of a raid array:
level=raid0 devices=4 ctime=Thu Nov 22 04:00:11 2018
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

现在检查/dev/disk是否有与您的新/dev/md0RAID 关联的 UUID。应该没有。

root@teamelchan:~# ls -l /dev/disk/by-uuid
total 0
lrwxrwxrwx 1 root root 10 Nov 22 04:24 4777-FB10 -> ../../sdf1
lrwxrwxrwx 1 root root 10 Nov 22 04:24 D616BDCE16BDAFBB -> ../../sde1
lrwxrwxrwx 1 root root 10 Nov 22 04:24 e79571b6-eb75-11e8-acb0-e0d55e117fa5 -> ../../sdf2

创建新的文件系统,之后您应该拥有一个 UUID/dev/md0

root@teamelchan:~# mkfs.ext4 -F /dev/md0
mke2fs 1.44.1 (24-Mar-2018)
Creating filesystem with 2685945088 4k blocks and 335745024 inodes
Filesystem UUID: 7bd945b4-ded9-4ef0-a075-be4c7ea246fb
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000, 550731776, 644972544, 1934917632,
2560000000

Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done

瞧,就在那里。

root@teamelchan:~# ls -l /dev/disk/by-uuid
total 0
lrwxrwxrwx 1 root root 10 Nov 22 04:24 4777-FB10 -> ../../sdf1
lrwxrwxrwx 1 root root 9 Nov 22 04:43 7bd945b4-ded9-4ef0-a075-be4c7ea246fb -> ../../md0
lrwxrwxrwx 1 root root 10 Nov 22 04:24 D616BDCE16BDAFBB -> ../../sde1
lrwxrwxrwx 1 root root 10 Nov 22 04:24 e79571b6-eb75-11e8-acb0-e0d55e117fa5 -> ../../sdf2

修改 /etc/fstab 并添加新 RAID 的挂载 请务必使用 UUID,而不是设备文件。

root@teamelchan:~# cat /etc/fstab
UUID=e79571b6-eb75-11e8-acb0-e0d55e117fa5 / ext4 defaults 0 0
UUID=4777-FB10 /boot/efi vfat defaults 0 0
/swap.img none
swap sw 0 0
UUID=7bd945b4-ded9-4ef0-a075-be4c7ea246fb /md0/tweets ext4 auto 0 0

在这里,你看没有,/etc/mdadm/mdadm.conf 不需要。

root@teamelchan:~# ls -l /etc/mdadm
total 0

重启

root@teamelchan:~# reboot
Connection to 192.168.0.131 closed by remote host.
Connection to 192.168.0.131 closed.

RAID 已挂载,但 mdadm 已将设备文件从 重命名md0md127

好在我们使用了 UUID 而不是实际的设备文件。

root@teamelchan:~# df /md0/tweets
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/md127 10658016696 73660 10120737636 1% /md0/tweets

看看 md0 已经从 /dev 消失了

root@teamelchan:~# ls /dev/md*
/dev/md127

/dev/md:

就是这样。现在我正在享受我的 10 TB RAID0,其运行速度超过 600 MB/秒

root@teamelchan:~# hdparm -tT /dev/md127

/dev/md127:
Timing cached reads: 26176 MB in 1.99 seconds = 13137.47 MB/sec
Timing buffered disk reads: 1878 MB in 3.00 seconds = 625.13 MB/sec

答案2

/proc/mdstat表示尚未加载任何 RAID 特性(即 RAID1、RAID5 等),因此甚至不会尝试激活 RAID 集。

Failed to start mdadm.service: Unit mdadm.service is masked.

此消息表明mdadm.service已以尽可能最强的方式禁用:不会显式尝试启动该服务,即使其他内容依赖于该服务,也不会启动该服务。

正如在roaima 关联的问题,尝试以 root 身份运行这些命令:

dpkg-reconfigure mdadm    # Choose "all" disks to start at boot
update-initramfs -u       # Updates the existing initramfs

第一个将重新配置mdadm软件包,并应检测所有 RAID 集,并让您选择在启动时自动激活哪些 RAID 集:通常“全部”是一个不错的答案。mdadm.service如果我理解正确的话,这也应该考虑到被屏蔽的问题。

完成后,第二个命令将更新您的 initramfs,以便更新后的配置文件也会在您的 initramfs 中更新,并且在启动的最早阶段执行的脚本将获取存在 RAID 集的信息应该激活它。

答案3

至少部分问题是/dev/md/0您的mdadm conf.你需要先解决这个问题。

然后让您的阵列运行,最后您可以按照以下网址的说明进行操作新的 RAID 阵列不会自动组装,导致启动问题-

dpkg-reconfigure mdadm # Choose "all" disks to start at boot
update-initramfs -u # Updates the existing initramfs 

答案4

该服务未启动,因为它被屏蔽了。这里这就是我找到如何揭开它的方法。下一个问题是 mdadm-raid 服务未启动 raid。这就是我如何让突袭在启动时开始。往下看“2017年7月31日周一晚上7点49分”即可找到相关帖子。这可能不是最好的解决方案,但在 10 次重新启动后,raid 每次仍然会启动。我确实感谢那些试图回答这个问题的人所付出的努力。现在我只需要整理一下提供的其他服务。但这是另一个问题。

相关内容