我想有以下raid1(镜像)设置:
/dev/md0 consists of /dev/sda and /dev/sdb
我创build这个raid1设备使用
mdadm --create --verbose /dev/md0 --auto=yes --level=1 --raid-devices=2 /dev/sda /dev/sdb
这给了元数据为1.2的警告,我的系统可能无法启动。 我不能使用0.9,因为它限制了RAID的大小为2TB,我认为最新的debian(squeeze)发货的grub应该能够处理元数据1.2。
于是我创build了如下所需的分区:
# creating new label (partition table) parted -s /dev/md0 mklabel 'msdos' # creating partitions sfdisk -uM /dev/md0 << EOF 0,4096 ,1024,S ; EOF # making root filesystem mkfs -t ext4 -L boot -m 0 /dev/md0p1 # making swap filesystem mkswap /dev/md0p2 # making data filesystem mkfs -t ext4 -L data /dev/md0p3
然后我挂载了根分区,复制了一个最小化的debian安装,并临时挂载了/ dev / proc / sys。 在此之后,我连接到新的根文件夹并执行:
grub-install --no-floppy --recheck /dev/md0
然而这个失败严重:
/ usr / sbin / grub-probe:错误:未知的文件系统。 自动检测/ dev / md0p1文件系统失败。 请将“/ usr / sbin / grub-probe –device-map = / boot / grub / device.map –target = fs -v / boot / grub”的输出一起报告
我不认为这是一个错误(所以我还没有报告),但我的错。 所以我真的很想知道如何正确设置我的raid1,到目前为止我所做的一切都失败了。
你应该在你的磁盘MBR上安装grub,而不是在/ dev / md0上,所以运行grub-install /dev/sda ; grub-install /dev/sdb grub-install /dev/sda ; grub-install /dev/sdb 。 这个工作更好吗?
我不认为在RAID上创build分区是个好主意。 更好的方法是在每个设备上创build分区,然后相应地创buildraid。
另外,创build两个完全相同大小的可启动分区(就像RAID分区应该匹配的大小一样),这不会是RAID的一部分,并确保它们完全相同,因此系统可以从任何一个启动。
我也喜欢单独的分区,如/ var,/ tmp,/ usr,/ home等。
例如:
/dev/sd[ab]1 - /boot /dev/sd[ab]2 - swap /dev/sd[ab]3 - / /dev/sda[ab]4 - /usr /dev/sda[ab]5 - /tmp /dev/sda[ab]6 - /var /dev/sda[ab]7 - /home
除第一个分区之外,创build每个分区的raid。 例如:
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sd[ab]2
等等。
然后将/ boot分配给/ dev / sda1,并确保MBR保存到/ dev / sda和/ dev / sdb。 一旦整个系统安装完毕(bs = 500M会加快dd,调整500M到系统内存的2/3左右):
dd bs=500M if=/dev/sda1 of=/dev/sdb1
现在,只要bios会尝试从任一磁盘启动,那么如果其中一个磁盘出现故障,系统将自动从另一个磁盘启动,因为UUID完全相同。 不要忘记,如果/ boot已经改变,有时候重复dd命令,比如内核升级。
你确实想通过改变BIOS启动优先级来testing它。 如果你觉得幸运的话,通过抽出一个磁盘来testing它:-)
这也将与raid10一起工作,我已经做了raid1和raid10,甚至3磁盘raid10(这实际上可能与mdadm)。
顺便说一句,你必须使用不属于RAID的启动分区,否则你的系统无法启动。 必须有一个raid开始的方法,因为它是一个软交换内核首先必须被装载为了突袭被辨认。
做sudo update-grub 。 有可能您的/boot/grub/device.map不是最新的,过时的设备映射的错误是相同的。