我有一个 RAID1 阵列,每次系统启动很长时间时,我都必须手动重建它。从来没有时间弄清楚为什么。这是我每次启动时用来重建它的命令:
sudo mdadm --build /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sde1
这很好用,不会丢失任何数据。然后我可以在需要的地方手动挂载 /dev/md0 (在这种情况下是 /mnt/plex)。但是,我刚刚在我的服务器中安装了第三个硬盘驱动器,我想升级到 RAID5。我使用 cfdisk 在我的驱动器上创建一个分区。
然后我将阵列升级到 RAID5:
sudo mdadm --grow /dev/md0 -l 5
然后,我将新驱动器添加到阵列中
sudo mdadm /dev/md0 --add /dev/sda1
最后,我尝试将阵列增加到 3 个驱动器
sudo mdadm /dev/md0 --grow -n 3
,此时出现以下错误:
mdadm: ARRAY line /dev/md0 has no identity information.
mdadm: /dev/md0: cannot get superblock from /dev/sda1
第一个错误出现了很多,这是导致问题的第二个错误。为什么我不能将 /dev/sda1 添加到数组中?当我这样做时,为什么系统启动时阵列不自动构建?
如果有帮助,这是我的驱动器/分区:
sda 8:0 0 3.7T 0 disk
+-sda1 8:1 0 3.7T 0 part
+-md0 9:0 0 3.7T 0 raid5 /mnt/plex
sdb 8:16 0 3.7T 0 disk
+-sdb1 8:17 0 3.7T 0 part
+-md0 9:0 0 3.7T 0 raid5 /mnt/plex
sdc 8:32 0 931.5G 0 disk
+-md1 9:1 0 931.4G 0 raid1 /mnt/nas
sdd 8:48 0 931.5G 0 disk
+-md1 9:1 0 931.4G 0 raid1 /mnt/nas
sde 8:64 0 3.7T 0 disk
+-sde1 8:65 0 3.7T 0 part
+-md0 9:0 0 3.7T 0 raid5 /mnt/plex
sdf 8:80 0 149.1G 0 disk
+-sdf1 8:81 0 512M 0 part /boot/efi
+-sdf2 8:82 0 148.6G 0 part /
SDB 和 SDF 是正常运行的 RAID 成员。如果有帮助,这里是来自 mdadm 的数组的详细信息
gradyn@hbi-server:~$ sudo mdadm --detail /dev/md0
mdadm: ARRAY line /dev/md0 has no identity information.
/dev/md0:
Version :
Creation Time : Thu Oct 14 22:19:50 2021
Raid Level : raid5
Array Size : 3906886464 (3725.90 GiB 4000.65 GB)
Used Dev Size : 3906886464 (3725.90 GiB 4000.65 GB)
Raid Devices : 2
Total Devices : 3
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 64K
Consistency Policy : resync
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 65 1 active sync /dev/sde1
2 8 1 - spare /dev/sda1
如果您需要发出
mdadm --build
组装数组,则意味着您创建了一个“旧式”数组,没有 superblock。换句话说,阵列几何(和其他元数据)不存储在受影响的磁盘上,而是系统希望在命令行上提供这些信息或在名为的配置文件中找到它们/etc/mdadm.conf
关于另一个问题(无法添加第三个活动磁盘),让我们看看手册页中关于
--build
(无超级块)阵列的内容:如您所见,传统阵列不允许使用 RAID5。通过发出第一个
--grow
命令,您强制系统进入意外情况,以下--add
只能将新磁盘设置为备用磁盘。然后第二个--grow
失败,因为它在成员磁盘上找不到有效的超级块。我强烈建议您备份数据并重新创建一个包含超级块和写入位图的 RAID5 阵列。为此,您只需使用
mdadm
默认设置。换句话说,作为mdadm --create /dev/md0 -l 5 -n 3 /dev/sda1 /dev/sdb1 /dev/sde1
应该足够了。请务必了解上述命令将从受影响的磁盘中删除所有数据,因此请确保在发出之前进行确认备份。