我目前在一张磁盘 ( sdd
) 上存储了我的数据。我现在有两个新的 3TB 磁盘 ( sdb&sdc
),并且想要在所有三个磁盘上创建 RAID5 阵列。
sdb
:gpt表,空分区sdb1sdc
:gpt表,空分区sdc1sdd
:gpt 表,btrfs-partition sdd1 与我的数据
我的计划是这样的:
- 创建RAID5 阵列
md0
并sdb1
sdc1
- 在其上创建 btrfs 文件系统。
- 将数据从
sdd1
复制到md0
- 重新分区(=擦除)
sdd
- 将数组增长到
sdd1
我目前正致力于创建 2 磁盘 RAID5 阵列。我构建了数组
# mdadm --create --verbose /dev/md0 --level=5 --raid-devices=2 /dev/sdc1 /dev/sdb1
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 2900832256K
mdadm: automatically enabling write-intent bitmap on large array
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
并/proc/mdstat
显示它正在执行初始同步:我有一个磁盘 ( sdd
),目前已在其中存储数据。我现在有两个新的 3TB 磁盘 ( sdb&sdc
),并且想要在所有三个磁盘上创建 RAID5 阵列。
sdb
:gpt表,空分区sdb1sdc
:gpt表,空分区sdc1sdd
:gpt 表,btrfs-partition sdd1 与我的数据
我的计划是这样的:
- 创建RAID5 阵列
md0
并sdb1
sdc1
- 在其上创建 btrfs 文件系统。
- 将数据从
sdd1
复制到md0
- 重新分区(=擦除)
sdd
- 将数组增长到
sdd1
我目前正致力于创建 2 磁盘 RAID5 阵列。我构建了数组
# mdadm --create --verbose /dev/md0 --level=5 --raid-devices=2 /dev/sdc1 /dev/sdb1
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 2900832256K
mdadm: automatically enabling write-intent bitmap on large array
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
并/proc/mdstat
显示它正在执行初始同步:
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10]
md0 : active raid5 sdb1[2] sdc1[0]
2900832256 blocks super 1.2 level 5, 512k chunk, algorithm 2 [2/1] [U_]
[>....................] recovery = 0.6% (19693440/2900832256) finish=308.8min speed=155487K/sec
bitmap: 0/22 pages [0KB], 65536KB chunk
unused devices: <none>
顶部显示,在此期间,md(adm) 使用了约 35% 的 CPU:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
989 root 20 0 0 0 0 S 29.1 0.0 0:17.69 md0_raid5
994 root 20 0 0 0 0 D 6.6 0.0 0:03.54 md0_resync
到目前为止,一切都很好。这应该需要约 6 小时。在我的第一次尝试中,我不得不重新启动服务器,从而在大约 5 小时后停止阵列,第二次我的sdb
驱动器神秘地消失了,所以我还必须重新启动系统。
数组自动启动,但进度条消失了:
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10]
md127 : active (auto-read-only) raid5 sdb1[2] sdc1[0]
2900832256 blocks super 1.2 level 5, 512k chunk, algorithm 2 [2/1] [U_]
bitmap: 0/22 pages [0KB], 65536KB chunk
unused devices: <none>
并top
报告没有 CPU 使用。
所以我尝试手动停止并组装它:
~# mdadm --stop /dev/md127
mdadm: stopped /dev/md127
~# mdadm --assemble --verbose /dev/md0 /dev/sdc1 /dev/sdb1
mdadm: looking for devices for /dev/md0
mdadm: /dev/sdc1 is identified as a member of /dev/md0, slot 0.
mdadm: /dev/sdb1 is identified as a member of /dev/md0, slot 1.
mdadm: added /dev/sdb1 to /dev/md0 as 1
mdadm: added /dev/sdc1 to /dev/md0 as 0
mdadm: /dev/md0 has been started with 1 drive (out of 2) and 1 rebuilding.
尽管它说正在重建,但 mdstat 没有显示任何迹象:
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10]
md0 : active (auto-read-only) raid5 sdc1[0] sdb1[2]
2900832256 blocks super 1.2 level 5, 512k chunk, algorithm 2 [2/1] [U_]
bitmap: 0/22 pages [0KB], 65536KB chunk
unused devices: <none>
顶部也再次显示没有 CPU 使用情况。
所以我在网上搜索了一种手动强制同步的方法并找到了--update=resync
,但尝试这个也没有取得胜利:
~# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
~# mdadm --assemble --verbose --force --run --update=resync /dev/md0 /dev/sdc1 /dev/sdb1
mdadm: looking for devices for /dev/md0
mdadm: /dev/sdc1 is identified as a member of /dev/md0, slot 0.
mdadm: /dev/sdb1 is identified as a member of /dev/md0, slot 1.
mdadm: Marking array /dev/md0 as 'clean'
mdadm: added /dev/sdb1 to /dev/md0 as 1
mdadm: added /dev/sdc1 to /dev/md0 as 0
mdadm: /dev/md0 has been started with 1 drive (out of 2) and 1 rebuilding.
root@server:~# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10]
md0 : active (auto-read-only) raid5 sdc1[0] sdb1[2]
2900832256 blocks super 1.2 level 5, 512k chunk, algorithm 2 [2/1] [U_]
bitmap: 0/22 pages [0KB], 65536KB chunk
unused devices: <none>
(仍然没有CPU使用)
经过两天的尝试自行修复后,我将非常感谢任何帮助或建议
答案1
由于 raid 阵列上没有任何内容,因此简单的选择是擦除所有内容并重新开始:
mdadm /dev/md127 --fail /dev/sdb1; mdadm /dev/md127 --fail /dev/sdc1; mdadm /dev/md127 --remove failed
wipefs -a /dev/sdb1; wipefs -a /dev/sdc1
顺便说一句,我建议创建一个降级的 RAID 5 阵列,然后向其中添加第三个磁盘。重建通常比重塑更快,但如果重建期间磁盘发生故障,数据丢失的可能性会增加(您确实有备份,不是吗?)
mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdc1 /dev/sdb1 missing
- 创建新的文件系统
- 复制数据
wipefs -a /dev/sdd1
mdadm /dev/md0 --add /dev/sdd1