| 
  • If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • Whenever you search in PBworks or on the Web, Dokkio Sidebar (from the makers of PBworks) will run the same search in your Drive, Dropbox, OneDrive, Gmail, Slack, and browsed web pages. Now you can find what you're looking for wherever it lives. Try Dokkio Sidebar for free.

View
 

SoftRaid

Page history last edited by PBworks 16 years, 5 months 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.