我最近添加了一个新的磁盘到我的RAID5arrays,并开始增长。 因为我是心不在焉我在这个重塑过程中重新启动服务器,我作为另一个程序被挂起,并阻止一些端口。 现在想想它可能是因为arrays挂了,但我不能确定。
我用下面的命令开始了成长过程:
$ mdadm --grow --raid-devices=4 /dev/md0
重新启动后,整形过程冻结在28% 。 我不能再安装这个arrays,停止它或者它似乎被冻结的任何东西。
这里是关于数组的一些信息:
# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Sat Mar 28 17:31:15 2015 Raid Level : raid5 Array Size : 5860063744 (5588.59 GiB 6000.71 GB) Used Dev Size : 2930031872 (2794.30 GiB 3000.35 GB) Raid Devices : 4 Total Devices : 4 Persistence : Superblock is persistent Intent Bitmap : Internal Update Time : Sun Jun 7 11:04:28 2015 State : clean, reshaping Active Devices : 4 Working Devices : 4 Failed Devices : 0 Spare Devices : 0 Layout : left-symmetric Chunk Size : 256K Reshape Status : 28% complete Delta Devices : 1, (3->4) Name : ocular:0 (local to host ocular) UUID : e1f7a83b:2e43c552:84d09d04:b1416cb2 Events : 344582 Number Major Minor RaidDevice State 4 8 17 0 active sync /dev/sdb1 1 8 49 1 active sync /dev/sdd1 3 8 65 2 active sync /dev/sde1 5 8 33 3 active sync /dev/sdc1
和
# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdb1[4] sdc1[5] sde1[3] sdd1[1] 5860063744 blocks super 1.2 level 5, 256k chunk, algorithm 2 [4/4] [UUUU] [=====>...............] reshape = 28.6% (840259584/2930031872) finish=524064.9min speed=66K/sec bitmap: 3/22 pages [12KB], 65536KB chunk unused devices: <none>
试图挂载arrays只是挂起
# mount /dev/md0 /mnt/storage/
如果我试图停止arrays,也是一样的
# mdadm -S /dev/md0
我也试过把它再次扩展到3个设备,但最后一次重塑正在忙碌:
# mdadm --grow /dev/md0 --raid-devices=3 mdadm: /dev/md0 is performing resync/recovery and cannot be reshaped
我试图标记新的驱动器是错误的,看看重塑会停止,但无济于事。 它标志着它失败,但没有任何反应。
我也尝试运行一个支票,而不是一个重塑(因为我在某处读取这个固定类似的问题),但设备是忙
# echo check>/sys/block/md0/md/sync_action -bash: echo: write error: Device or resource busy
这是什么意思? 我在这里真的很薄,不知道该怎么做,所以不胜感激任何帮助。
很确定重启不是问题的原因。 这似乎是导致arrays挂起的重塑的一些问题。 我在dmesg中得到这些错误:
[ 360.625322] INFO: task md0_reshape:126 blocked for more than 120 seconds. [ 360.625351] Not tainted 4.0.4-2-ARCH #1 [ 360.625367] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [ 360.625394] md0_reshape D ffff88040af57a58 0 126 2 0x00000000 [ 360.625397] ffff88040af57a58 ffff88040cf58000 ffff8800da535b20 00000001642a9888 [ 360.625399] ffff88040af57fd8 ffff8800da429000 ffff8800da429008 ffff8800da429208 [ 360.625401] 0000000096400e00 ffff88040af57a78 ffffffff81576707 ffff8800da429000 [ 360.625403] Call Trace: [ 360.625410] [<ffffffff81576707>] schedule+0x37/0x90 [ 360.625428] [<ffffffffa0120de9>] get_active_stripe+0x5c9/0x760 [raid456] [ 360.625432] [<ffffffff810b6c70>] ? wake_atomic_t_function+0x60/0x60 [ 360.625436] [<ffffffffa01246e0>] reshape_request+0x5b0/0x980 [raid456] [ 360.625439] [<ffffffff81579053>] ? schedule_timeout+0x123/0x250 [ 360.625443] [<ffffffffa011743f>] sync_request+0x28f/0x400 [raid456] [ 360.625449] [<ffffffffa00da486>] ? is_mddev_idle+0x136/0x170 [md_mod] [ 360.625454] [<ffffffffa00de4ba>] md_do_sync+0x8ba/0xe70 [md_mod] [ 360.625457] [<ffffffff81576002>] ? __schedule+0x362/0xa30 [ 360.625462] [<ffffffffa00d9e54>] md_thread+0x144/0x150 [md_mod] [ 360.625464] [<ffffffff810b6c70>] ? wake_atomic_t_function+0x60/0x60 [ 360.625468] [<ffffffffa00d9d10>] ? md_start_sync+0xf0/0xf0 [md_mod] [ 360.625471] [<ffffffff81093418>] kthread+0xd8/0xf0 [ 360.625473] [<ffffffff81093340>] ? kthread_worker_fn+0x170/0x170 [ 360.625476] [<ffffffff8157a398>] ret_from_fork+0x58/0x90 [ 360.625478] [<ffffffff81093340>] ? kthread_worker_fn+0x170/0x170
另外,看CPU使用率md0_raid5似乎有问题:
PID USER PR NI VIRT RES %CPU %MEM TIME+ S COMMAND 125 root 20 0 0.0m 0.0m 100.0 0.0 35:57.44 R `- md0_raid5 126 root 20 0 0.0m 0.0m 0.0 0.0 0:00.06 D `- md0_reshape
难道这就是重塑已经停止的原因吗?
是否可以恢复使用3个驱动器而不丢失数据?
从人mdadm(8):
更改RAID5或RAID6中活动设备的数量要多得多。 数组中的每个块都需要被读取并写回新的位置。 从2.6.17开始,Linux内核能够安全地增加RAID5中的设备数量,包括重新开始中断的“重塑”。 从2.6.31开始,Linux内核可以增加或减lessRAID5或RAID6中的设备数量。
所以mdadm完全有能力恢复中断的成长。 但是,您必须使用备份文件(带有–backup-file)才能恢复(或中止)function。
有关更多信息,另见这里 。
你运行的确切命令是什么? 无论如何,我build议你在linux-raid邮件列表上发布你的问题。