我在 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
在遇到同样的问题后,这个食谱对我有用。查遍了整个网络试图找到答案,最后发现了这个,仍然没有帮助。
在我看来,问题是多方面的。
mdadm 会在下次重新启动时
/dev/md0
重新分配设备文件。/dev/md127
所以你不能只使用fstab中的设备文件。我最终使用了创建的文件系统中的 UUID。网络上几乎所有 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 分区。有很多关于需要更新的讨论
/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/md0
RAID 关联的 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 已将设备文件从 重命名md0
为md127
好在我们使用了 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