| 
View
 

SoftRaid

Page history last edited by PBworks 18 years, 1 month ago


前言

在早期,要在Debian上建構Soft Raid是大工程,除了相關的的設定步驟繁雜,就連同系統的initrd/initramfs等都要自己進行更新,讓核心能在掛載/之前認得Soft Raid。還好新版的Debian已提供了較為友善的工具,所以這一部份的建構已比過往輕鬆許多。是故以下將以Soft Raid 1作為示範,如有謬誤請指正,感謝。

 

所需套件

# aptitude install mdadm

 

硬體配置

分割硬碟

我們假設系統上有兩顆硬碟/dev/sda、/dev/sdb,其中/dev/sda為原來的200 GB系統硬碟,/dev/sdb為全新250 GB的硬碟。由於Soft Raid可以針對partition做鏡像,所以我們將/dev/sdb每個分割區大小設定成和/dev/sda一樣,多的部份再獨立分割成額外的分割區,以達成配置Soft Raid的前置步驟。在這邊我們要將所有的分割區都做Soft Raid,包含根目錄:

  • /dev/sda:200 GB(原先的系統硬碟,不用更動)

 

# fdisk -l /dev/sda

 

Disk /dev/sda: 200.0 GB, 200048565760 bytes

255 heads, 63 sectors/track, 24321 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

Device Boot Start End Blocks Id System

/dev/sda1 * 1 34 273073+ 83 Linux

/dev/sda2 35 24321 195085327+ 5 Extended

/dev/sda5 35 642 4883728+ 83 Linux

/dev/sda6 643 1007 2931831 83 Linux

/dev/sda7 1008 1089 658633+ 82 Linux swap / Solaris

/dev/sda8 1090 1138 393561 83 Linux

/dev/sda9 1139 24321 186217416 83 Linux

 

  • /dev/sdb:250 GB(此顆硬碟較大,所以將多出來的空間分割成最後一個磁區/dev/sdb10)

 

# fdisk -l /dev/sdb

 

Disk /dev/sdb: 250.0 GB, 250058268160 bytes

255 heads, 63 sectors/track, 30401 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

Device Boot Start End Blocks Id System

/dev/sdb1 * 1 34 273073+ 83 Linux

/dev/sdb2 35 30401 243922927+ 5 Extended

/dev/sdb5 35 642 4883728+ 83 Linux

/dev/sdb6 643 1007 2931831 83 Linux

/dev/sdb7 1008 1089 658633+ 82 Linux swap / Solaris

/dev/sdb8 1090 1138 393561 83 Linux

/dev/sdb9 1139 24321 186217416 83 Linux

/dev/sdb10 24322 30401 48837568+ 83 Linux

 

其中/dev/sda7和/dev/sdb7為swap,在此我們不將swap也做Soft Raid(要做也可以)。

 

更改分割區的system id

別急著將更動的資訊寫入硬碟,在此還少一個步驟:我們需將代號「83」的「Linux」分割區更改為代號「fd」的「Linux raid autodetect」。更動後的分割表如下:

  • /dev/sda:200 GB

 

# fdisk -l /dev/sda

 

Disk /dev/sda: 200.0 GB, 200048565760 bytes

255 heads, 63 sectors/track, 24321 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

Device Boot Start End Blocks Id System

/dev/sda1 * 1 34 273073+ fd Linux raid autodetect

/dev/sda2 35 24321 195085327+ 5 Extended

/dev/sda5 35 642 4883728+ fd Linux raid autodetect

/dev/sda6 643 1007 2931831 fd Linux raid autodetect

/dev/sda7 1008 1089 658633+ 82 Linux swap / Solaris

/dev/sda8 1090 1138 393561 fd Linux raid autodetect

/dev/sda9 1139 24321 186217416 fd Linux raid autodetect

 

  • /dev/sdb:250 GB(最後一個磁區/dev/sdb10因不需鏡像,所以不用更動)

 

# fdisk -l /dev/sdb

 

Disk /dev/sdb: 250.0 GB, 250058268160 bytes

255 heads, 63 sectors/track, 30401 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

Device Boot Start End Blocks Id System

/dev/sdb1 * 1 34 273073+ fd Linux raid autodetect

/dev/sdb2 35 30401 243922927+ 5 Extended

/dev/sdb5 35 642 4883728+ fd Linux raid autodetect

/dev/sdb6 643 1007 2931831 fd Linux raid autodetect

/dev/sdb7 1008 1089 658633+ 82 Linux swap / Solaris

/dev/sdb8 1090 1138 393561 fd Linux raid autodetect

/dev/sdb9 1139 24321 186217416 fd Linux raid autodetect

/dev/sdb10 24322 30401 48837568+ 83 Linux

 

到此就可以按「w」將更動資料寫入硬碟。

 

設定Soft Raid 1

接下來我們將使用mdadm工具建立我們的Soft Raid 1虛擬裝置。在這邊預計的配置如下:

Soft Raid裝置名稱實體鏡像分割區
/dev/md0/dev/sda1、/dev/sdb1
/dev/md1/dev/sda5、/dev/sdb5
/dev/md2/dev/sda6、/dev/sdb6
/dev/md3/dev/sda8、/dev/sdb8
/dev/md4/dev/sda9、/dev/sdb9

 

所以我們執行以下命令:

 

# mdadm --add /dev/md0 --level 1 --raid-devices=2 missing /dev/sdb1

# mdadm --add /dev/md1 --level 1 --raid-devices=2 missing /dev/sdb5

# mdadm --add /dev/md2 --level 1 --raid-devices=2 missing /dev/sdb6

# mdadm --add /dev/md3 --level 1 --raid-devices=2 missing /dev/sdb8

# mdadm --add /dev/md4 --level 1 --raid-devices=2 missing /dev/sdb9

 

  • /dev/md[0-4]就是我們的Soft Raid虛擬裝置,--level指定的是raid等級(在此我們用1,代表鏡像),--raid-devices指定有幾個分割區。最後一個missing特別重要,是代表忽略的意思。原因是/dev/sda上面有我們的系統,若是這邊不使用missing參數,則原有的系統會被重建,造成系統損毀。這裡要特別注意。

 

  • 到此為止,我們已經將Soft Raid虛擬裝置建立起來了。接下來我們將新建的Soft Raid裝置格式化(假設要格式化為ext3):

 

# make.ext3 /dev/md0

# make.ext3 /dev/md1

# make.ext3 /dev/md2

# make.ext3 /dev/md3

# make.ext3 /dev/md4

 

  • swap分割區也請格式化:

 

# mkswap /dev/sdb7

 

  • 接下來我們要修改/etc/fstab的資料,使系統開機時知道要使用soft raid的配置。在此以root分割區為示範,原本的設定值應該是:

 

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

 

  • 請改成:

 

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

 

  • swap的設定也要更動,原先的swap只有一個:

 

/dev/sda7 none swap sw 0 0

 

  • 現在請加上第二個swap分割區,並加入pri=1的參數:

 

/dev/sda7 none swap sw,pri=1 0 0

/dev/sdb7 none swap sw,pri=1 0 0

 

  • 請修改grub開機管理員的參數,讓核心能再開機時知道root分割區以更動為/dev/md0。請修改/boot/grub/menu.lst,並將其中root=/dev/sda1改成root=/dev/md0,然後存檔離開即可。改完之後的設定值會像這樣:

 

kernel /boot/vmlinuz-2.6.17-2-686 root=/dev/md0 ro

 

  • 最後我們需要讓initramfs在開機時就能載入soft raid的驅動,以讓核心順利驅動soft raid,所以我們在此要重新配置initramfs(都用預設值即可):

 

# update-initramfs --priority=low mdadm

 

  • 其中會問幾個問題,用預設值即可。

 

  • 現在依序將剛格式化好的raid磁碟裝置掛載上來(比如掛載到/mnt),並將原系統上相對應的目錄搬移到對應的raid磁碟裝置上(在此以/dev/md0作為示範,其餘以此類推):

 

# mount /dev/md0 /mnt

# tar clf - -C / . | tar xpvf - -C /mnt

# umount /dev/md0

 

  • 最後,將grub開機管理程式也複製一份到/dev/sdb的mbr,即完成整個soft raid的配置:

 

# grub-install /dev/sdb

 

  • 重開機,若一切順利,則會使用剛建立好的soft raid開機。此時請將/dev/sda加入soft raid中(是否完成重建,請cat /proc/mdstat就可知道進度):

 

# mdadm --add /dev/md0 /dev/sda1

# mdadm --add /dev/md1 /dev/sda5

# mdadm --add /dev/md2 /dev/sda6

# mdadm --add /dev/md3 /dev/sda8

# mdadm --add /dev/md4 /dev/sda9

 

重建損毀資料

 

  • 在此我們假設/dev/sda損毀:

 

  1. 先正常關機。
  2. 將/dev/sda的電源、排線拔除,剩下/dev/sdb。
  3. 開機,此時使用/dev/sdb獨立開機。
  4. 正常開機後,以root身份登入,並將soft raid紀錄中有關連到/dev/sda的紀錄移除:

 

# mdadm --fail /dev/md0 /dev/sda1

# mdadm --fail /dev/md1 /dev/sda5

# mdadm --fail /dev/md2 /dev/sda6

# mdadm --fail /dev/md3 /dev/sda8

# mdadm --fail /dev/md4 /dev/sda9

# mdadm --remove /dev/md0 /dev/sda1

# mdadm --remove /dev/md1 /dev/sda5

# mdadm --remove /dev/md2 /dev/sda6

# mdadm --remove /dev/md3 /dev/sda8

# mdadm --remove /dev/md4 /dev/sda9

 

  1. 關機。並換上新的硬碟。此時再用/dev/sdb開機。
  2. 一樣以root登入,並將新硬碟分割成和/dev/sdb的分割表一樣,再重新加入soft raid即可(是否完成重建,請cat /proc/mdstat就可知道進度):

 

# mdadm --add /dev/md0 /dev/sda1

# mdadm --add /dev/md1 /dev/sda5

# mdadm --add /dev/md2 /dev/sda6

# mdadm --add /dev/md3 /dev/sda8

# mdadm --add /dev/md4 /dev/sda9

 

  1. 最後別忘了將grub開機管理程式複製一份至/dev/sda的mbr:

 

# grub-install /dev/sda

 

#如此應可順利完成重建。

 

參考文件

http://www.debian-administration.org/articles/238

http://www.epimetrics.com/topics/one-page?page_id=421&topic=Bit-head%20Stuff&page_topic_id=120

http://xtronics.com/reference/SATA-RAID-debian-for-2.6.html

http://deb.riseup.net/storage/software-raid/

Comments (0)

You don't have permission to comment on this page.