2003年05月27日

Upgrade to software-raid 1

現在的 IDE 硬碟越來越便宜,也越來越容易損壞,所以市面上出了一堆 IDE RAID 卡,但我發現在 Debian 上面都非常難裝,為了晚上能安心睡覺,還是弄弄 kernel 內建的 md 吧。

但我的系統已經安裝了 Debian,是否有辦法把現有系統升級成 md 呢?

答案是有的,這邊就跟各位分享我升級成 raid 1 的經驗。

升級過程的步驟請繼續看下去 :p

1. 加入一顆相當大小的新硬碟到系統,並建立 raid partations type=fd


[root]# fdisk /dev/hdc

2. apt-get install raidtools2


[root]# cp /usr/share/doc/raidtools2/examples/raid1.conf.sample /etc/raidtab

3. 在 /etc/raidtab 中將舊硬碟的 partations 加上 failed-disk 標示, 並將 chunk-size 改為 32, 下面是我的設定:


# Sample raid-1 configuration
raiddev /dev/md0
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
chunk-size 32

device /dev/hda1
failed-disk 0

device /dev/hdc1
raid-disk 1

4. 建立 raid, mkraid /dev/md? or more.


[root]# mkraid /dev/md0

5. 建立檔案系統, mke2fs -j -b 4096 -R stride=X /dev/md? X=chunk-size/4


[root]# mke2fs -j -b 4096 -R stride=8 /dev/md0

6. 掛上 raid 及複製資料 mount /dev/md? and cp -ax / /mnt


[root]# mount /dev/md0 /mnt
[root]# cp -ax / /mnt

7. 替開機做準備


[root]# chroot /mnt
[root]# mount -t proc /proc /proc

安裝支援 md 的 kernel,您可以自行編譯或是安裝 debian package
若打算安裝 debian package 的話,首先在 /etc/kernel-img.conf 內要有


do_initrd = yes

接著安裝 kernel

[root]# apt-get install kernel-2.4.20-1-686 kernel-headers-2.4.20-1-686

在 lilo.conf 中設定:

boot=/dev/md0
raid-extra-boot="/dev/hda,/dev/hdc"
root=/dev/md0
append="md=0,/dev/hda1,/dev/hdc1"
initrd=/initrd.img

別忘了 /etc/fstab 中也要改為


/dev/md0 / ext3 defaults,errors=remount-ro 0 1

8. 寫入 lilo 並重開機測試 raid


[root]# lilo -v

若無錯誤訊息則

[root]# reboot

9. 測試 ok 的話, 將舊的 partation type 修改為 fd 並存檔


[root]# fdisk /dev/hda

注意: 若無法 reload partation table 錯誤訊息出現, 則需要再 reboot 一次取得正確的分割表

10. 在raidtab, 將 failed-disk 改為 raid-disk 並加入 raid, fdisk and then raidhotadd /dev/md? /dev/hda?


[root]# raidhotadd /dev/md0 /dev/hda1

這下可以安心睡覺了,因為我知道就算硬碟壞了,也不會再是一堆麻煩的還原程序了....

Posted by Andrew at 2003年05月27日 01:39 | TrackBack
Comments

Hi, 送個 Ping 給 blog.linux.org.tw 吧。 ;-)

Posted by: Rex Tsai at 2003年05月20日 16:53

Ok, I did it.

Posted by: Andrew Lee at 2003年05月27日 17:32
Post a comment









Remember personal info?