# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 nbd0[3] sda10[0]
53246315 blocks super 1.2 [3/1] [U__]
[>....................] recovery = 1.0% (537088/53246315) finish=203.0min speed=4326K/sec
bitmap: 1/1 pages [4KB], 65536KB chunk
unused devices: <none>
# nbd-client -d /dev/nbd0
Disconnecting: que, disconnect, sock, done
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 nbd0[3](F) sda10[0]
53246315 blocks super 1.2 [3/1] [U__]
bitmap: 1/1 pages [4KB], 65536KB chunk
unused devices: <none>
# mdadm /dev/md/raidy --remove /dev/nbd0
mdadm: hot removed /dev/nbd0 from /dev/md/raidy
# nbd-client 10.99.99.250 7777 /dev/nbd0
Negotiation: ..size = 53247411KB
bs=1024, sz=53247411
# mdadm --incremental --run /dev/nbd0
mdadm: /dev/nbd0 attached to /dev/md/raidy which is already active.
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 nbd0[3] sda10[0]
53246315 blocks super 1.2 [3/1] [U__]
[>....................] recovery = 0.0% (31616/53246315) finish=196.2min speed=4516K/sec
bitmap: 1/1 pages [4KB], 65536KB chunk
unused devices: <none>
# uname -a
Linux vi-notebook 2.6.35-zen2-08220-g2c56b9e #14 ZEN PREEMPT Thu Oct 21 02:48:18 EEST 2010 i686 GNU/Linux
# mdadm --version
mdadm - v3.1.4 - 31
如何正确断开并重新连接设备到 RAID-1 以利用写入意图位图?
再次实验:
Personalities : [raid1]
md0 : active raid1 nbd0[3] sda10[0]
53246315 blocks super 1.2 [3/2] [UU_]
bitmap: 1/1 pages [4KB], 65536KB chunk
unused devices: <none>
/dev/md/raidy:
Version : 1.2
Creation Time : Tue Mar 30 05:42:53 2010
Raid Level : raid1
Array Size : 53246315 (50.78 GiB 54.52 GB)
Used Dev Size : 53246315 (50.78 GiB 54.52 GB)
Raid Devices : 3
Total Devices : 2
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Mon Jan 31 18:18:03 2011
State : active, degraded
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : vi-notebook:0 (local to host vi-notebook)
UUID : bc325b24:fa0a4957:47820c56:fc818fa3
Events : 2661551
Number Major Minor RaidDevice State
0 8 10 0 active sync /dev/sda10
3 43 0 1 active sync /dev/nbd0
2 0 0 2 removed
现在移除其中一个设备:
# mdadm /dev/md/raidy --fail /dev/nbd0
mdadm: set /dev/nbd0 faulty in /dev/md/raidy
# mdadm /dev/md/raidy --remove /dev/nbd0
mdadm: hot removed /dev/nbd0 from /dev/md/raidy
现在重新添加它:
mdadm --incremental --run /dev/nbd0
它从头开始重新同步:
Personalities : [raid1]
md0 : active raid1 nbd0[3] sda10[0]
53246315 blocks super 1.2 [3/1] [U__]
[>....................] recovery = 0.4% (244480/53246315) finish=289.5min speed=3050K/sec
bitmap: 1/1 pages [4KB], 65536KB chunk
unused devices: <none>
/dev/md/raidy:
Version : 1.2
Creation Time : Tue Mar 30 05:42:53 2010
Raid Level : raid1
Array Size : 53246315 (50.78 GiB 54.52 GB)
Used Dev Size : 53246315 (50.78 GiB 54.52 GB)
Raid Devices : 3
Total Devices : 2
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Mon Jan 31 18:22:07 2011
State : active, degraded, recovering
Active Devices : 1
Working Devices : 2
Failed Devices : 0
Spare Devices : 1
Rebuild Status : 0% complete
Name : vi-notebook:0 (local to host vi-notebook)
UUID : bc325b24:fa0a4957:47820c56:fc818fa3
Events : 2661666
Number Major Minor RaidDevice State
0 8 10 0 active sync /dev/sda10
3 43 0 1 spare rebuilding /dev/nbd0
2 0 0 2 removed
答案1
嗯。从上面的输出来看,一开始并不清楚您是否有多个同步的磁盘。看起来有一个正在同步的故障磁盘,它被移除,然后重新添加,然后再次重新同步。我从来没有看到过显示 2 个磁盘完全同步的显示。
我会确保两个磁盘都处于活动状态,让它们完全同步,并且只有在验证之后我才会尝试移除磁盘并重新添加它。
请注意,写意图位图仅用于帮助快速重新同步两个已几乎同步的磁盘(即系统崩溃后或短时间移除磁盘时)。它不适用于长期移除或尚未完全同步的磁盘。
答案2
您应该使用“--re-add”将删除的磁盘添加回来,如下所示:
# mdadm /dev/md0 --re-add /dev/sdf2
我刚刚尝试过,它成功了,无需重建 - 如果磁盘已经预先使用“--remove”删除,就像你做的那样。
请注意,这一点很重要 - 必须使用“--remove”删除磁盘。如果你只是硬拔出磁盘,将其重新插入并尝试“--re-add”它,你将得到
mdadm: --re-add for /dev/sdf2 to /dev/md0 is not possible
为什么会这样?http://linux.die.net/man/8/mdadm, “--re-add” 部分:
如果 [...] 它使用的插槽仍然空闲,那么该设备将被添加回阵列中的相同位置。
如果你刚刚将磁盘拔出,则插槽仍将被故障磁盘占用(在 /proc/mdstat 中标记为 F):
$ cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 loop0[0] loop3[2](F)
1047552 blocks super 1.2 [2/1] [U_]
bitmap: 1/1 pages [4KB], 65536KB chunk
移除故障磁盘后“--re-add”将会起作用,利用位图。
答案3
我不确定这是否有帮助 - 但我认为你的问题似乎是 nbd-device。
如果你想通过 IP 网络实现 RAID1 - 为什么不使用驱动?