近期在debian squeeze已有系统上使用mdadm安装了raid1,在此做个笔记。


已有硬盘为/dev/sda, 500GB, 安装debian squeeze,新增一块/dev/sdb, 500GB,准备组成raid1。


1. 详细的安装过程见如下链接:

http://www.howtoforge.com/software-raid1-grub-boot-debian-etch

这个链接非常详细,只要具备基本的mdadm raid常识,就可以操作了。

另外可参考如下链接,作为辅助:

http://feeding.cloud.geek.nz/posts/setting-up-raid-on-existing/


需要注意的是,如果操作不当,很容易将grub2数据弄丢。建议使用dpkg-reconfigure grub-pc来更新grub,但是选择安装的分区应选择/dev/sda和/dev/sdb,不是虚拟出来的/dev/md0。


2. 将来如果raid1中的一块硬盘坏了,如何恢复。

跟创建raid的方式大致相似,主要步骤是:

1. 标记坏硬盘各分区为fail,并从Array中移除;

2. 安装新硬盘,代替坏硬盘。

3. 将raid1中剩下好硬盘的分区表拷贝到新硬盘;

4. 设置新硬盘的分区类型;

5. 将新硬盘各分区加入Array;

6. 系统会自动开始在新硬盘分区上重建数据。

http://www.howtoforge.com/replacing_hard_disks_in_a_raid1_array


3. debian netinst CD USB安装的问题

使用netinst CD .iso镜像制作USB启动盘,可能会在安装时出现"Detect and mount CD-ROM"失败的信息。使用debian squeeze和debian wheezy netinst都可能出现这个问题。解决办法可尝试:

1. 文本安装模式下,Alt+F2进入控制台shell

2. lsmod检查vfat,fat, ehci_hcd, xhci_hcd是否安装

3. 如果vfat,fat模块没安装,使用modprobe fat和modprobe vfat安装

4. 如果xhci_hcd已经安装,需要移除,rmmod xhci_hcd

5. 保留ehci_hcd。如果已经安装,先移除rmmod ehci_hcd,再安装modprobe ehci_hcd

6. mount /dev/sdx /cdrom,将U盘mount到/cdrom,/sdx为U盘的设备名

7. 4,5,6步可能要重复操作,因为安装程序有时会把这个步骤搞乱。


4. 如果Grub真的丢失了怎么办?

笔者在安装过程中就出现了此情况,grub本身无法启动,进入grub rescue命令行,且操作任何分区都显示error: file not found.救援的办法为:

1. 使用netinst cd或live cd启动系统,进入命令行shell

2. 这个shell需要支持mdadm命令

3. 插入mdadm及raid所需的模块

modprobe md
modprobe linear
modprobe multipath
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10

4. 安装文件系统模块,比如raid原为ext3,就运行modprobe ext3

5. 启动raid,采用一块硬盘即可。Grub丢失了,硬盘的数据其实还在。

mdadm --assemble /dev/md0 --run /dev/sdb1

mdadm --assemble /dev/md1 --run /dev/sdb5

...

6. 将各raid分区,挂载到临时位置,准备恢复文件系统(本例中/dev/md1为swap分区,不需要挂载)

mount /dev/md0 /mnt

mount /dev/md2 /mnt/home

...

7. 挂载各虚拟目录

mount --bind /dev /mnt/dev
mount --bind /dev/pts /mnt/dev/pts
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys

8. chroot /mnt,此时就已经恢复了原sdb中的文件系统

9. 运行bash,就跟原系统环境一致了。

10. 再运行dpkg-reconfigure grub-pc,就可以恢复grub了。见第1节关于grub的特别注意事项。