考虑以下简单的 RAID1 设置。我有以下两个物理磁盘(lsblk 输出):
sdb 8:16 0 3.7T 0 disk
sdc 8:32 0 3.7T 0 disk
我使用以下命令创建了该数组:
# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc
这给了我/dev/md0,我在上面创建了一个文件系统并开始使用。
然后我执行了 init 0 并在第二天再次启动了机器。
现在我又面临着组装阵列的问题。
我这样做:
# mdadm --assemble /dev/md0 /dev/sdb /dev/sdc
mdadm: /dev/md0 has been started with 1 drive (out of 2).
消息:
[ 493.602864] md: kicking non-fresh sdb from array!
[ 493.602869] md: unbind<sdb>
dmesg 中没有其他错误。这些也是全新的磁盘,没有 I/O 错误。
我做了一些谷歌搜索并发现了这个:
http://mindspill.net/computing/linux-notes/mdadm-started-with-1-drive-out-of-2/
所以我发出:
# mdadm /dev/md0 --add /dev/sdb
mdadm: added /dev/sdb
消息:
[ 570.743137] RAID1 conf printout:
[ 570.743142] --- wd:1 rd:2
[ 570.743146] disk 0, wo:1, o:1, dev:sdb
[ 570.743148] disk 1, wo:0, o:1, dev:sdc
[ 570.743265] md: recovery of RAID array md0
[ 570.743268] md: minimum _guaranteed_ speed: 1000 KB/sec/disk.
[ 570.743269] md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for recovery.
[ 570.743271] md: using 128k window, over a total of 3906887360k.
事实上,它现在正在重建阵列,没有明显的原因。
cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb[2] sdc[1]
3906887360 blocks super 1.2 [2/1] [_U]
[>....................] recovery = 0.0% (2137216/3906887360) finish=334.9min speed=194292K/sec
unused devices: <none>
我究竟做错了什么?
我是否发出了错误的命令?我应该在执行 init 0 之前停止阵列吗?为什么要重建一个没有损坏的数组呢?