2011年1月4日 星期二

UBUNTU 10.10 在現有系統下卦載 RAID1 採用 mdadm

首先, 步驟很多...and 記得資料要備份!!!! 很危險!!地球人要小心....XD..
我大概弄了15個小時, 很多狀況......不過大概有點眉目了, 有需要的人可以跟著做看看!

1. 首先我假定現有系統為 /dev/sda1(/) 與 /dev/sda2 (swap) 以及 /dev/sda3 (/home). (p.s. 我安裝UBUNTU時的分割是這樣).
然後我安裝了一個新硬碟 /dev/sdb (要大於 or 等於原來的/dev/sda), 並希望 Raid 建立好後產生 /dev/md0, dev/md1, dev/md2 這3個對應的虛擬分割, 這3個分割分別為/dev/sda(1-3) 與 /dev/sab(1-3) 的組合(Ex. /dev/md0 = /dev/sda1 + /dev/sdb1). 然後.....

2. 要把分割複製過來新硬碟, 記得 sudo su 成 root.
$ sfdisk -d /dev/sda | sfdisk –force /dev/sdb
可以用 sfdisk -l 看看有沒有成功.
再來要把新的分割區弄成Raid格式.
$ fdisk /dev/sdb
$ Command (m for help): <– t
$ Partition number (1-3): <– 1
$ Hex code (type L to list codes): <– fd
Changed system type of partition 1 to fd (Linux raid autodetect)
$ Command (m for help): <– t
$ Partition number (1-3): <– 2
$ Hex code (type L to list codes): <– fd
Changed system type of partition 2 to fd (Linux raid autodetect)
$ Command (m for help): <– t
$ Partition number (1-3): <– 3
$ Hex code (type L to list codes): <– fd
Changed system type of partition 3 to fd (Linux raid autodetect)
$ Command (m for help): <– w 



3. 再來就要建立我們的 RAID1 了
$ mdadm –create /dev/md0 –level=1 –raid-disks=2 missing /dev/sdb1 
$ mdadm –create /dev/md1 –level=1 –raid-disks=2 missing /dev/sdb2 
$ mdadm –create /dev/md2 –level=1 –raid-disks=2 missing /dev/sdb3
採用 missing 選項可以讓 mdx 先建立, 然後可以用  cat /proc/mdstat 看卦載狀態,
他會顯示 [_U] 表示你的 RAID1(mirror) 只掛了一個上來. 
接著給定檔案系統
$ mkfs.ext4 /dev/md0 
$ mkswap /dev/md1 
$ mkfs.ext4 /dev/md2
然後, 
$ cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
$ mdadm –examine –scan >> /etc/mdadm/mdadm.conf
這邊是用來建立 conf 檔 for mdadm.


4. 緊接著把做好的 raid 掛上系統
$ mkdir /mnt/md0
$ mkdir /mnt/md2
$ mount /dev/md0 /mnt/md0

$ mount /dev/md2 /mnt/md2


再來要編輯掛載設定 /etc/fstab 了, 這邊很重要!!!!要小心!!!
我先貼上我的例子..
---BOF

# /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
# / was on /dev/sda5 during installation
#UUID=f4fce5b2-237f-461a-af96-5ad499c5ee71 /               ext4    errors=remount-ro 0       1
/dev/md0 / ext4 errors=remount-ro 0 1
#/home was on /dev/sda7 during installation
#UUID=5b2001cb-3a8a-4ed5-b75d-3a46f49637cf /home           ext4    defaults        0       2
/dev/md2 /home ext4 defaults 0 2
#/dev/sda6       none            swap    sw              0       0
/dev/md1 none swap sw

---EOF
以上是把本來用 UUID 的方式換成 /dev/mdx. 接著是 /etc/mtab
---BOF

/dev/md0 / ext4 rw,errors=remount-ro,commit=0 0 0
proc /proc proc rw,noexec,nosuid,nodev 0 0
none /sys sysfs rw,noexec,nosuid,nodev 0 0
fusectl /sys/fs/fuse/connections fusectl rw 0 0
none /sys/kernel/debug debugfs rw 0 0
none /sys/kernel/security securityfs rw 0 0
none /dev devtmpfs rw,mode=0755 0 0
none /dev/pts devpts rw,noexec,nosuid,gid=5,mode=0620 0 0
none /dev/shm tmpfs rw,nosuid,nodev 0 0
none /var/run tmpfs rw,nosuid,mode=0755 0 0
none /var/lock tmpfs rw,noexec,nosuid,nodev 0 0
/dev/md2 /home ext4 rw,commit=0 0 0
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,noexec,nosuid,nodev 0 0
gvfs-fuse-daemon /home/tschen/.gvfs fuse.gvfs-fuse-daemon rw,nosuid,nodev,user=tschen 0 0
---EOF

一樣要把本來 dev/sdxx 換成 /dev/mdx.


然後利用這兩個檔案的內容去更新 GRUB by.....
$ cp /etc/grub.d/40_custom /etc/grub.d/09_swraid1_setup
$ vi /etc/grub.d/09_swraid1_setup

     加入 set root=’(md0)’  in 09_swraid1_setup
Then
$ update-grub
$ update-initramfs -u


再來要把資料複製到mdx中....這邊是我的配置方式, 各個機器會不一樣.
$ cp -dpRx / /mnt/md0
$ cd /home
$ cp -dpRx . /mnt/md2



然後更新開機選單
$ grub-install /dev/sda
$ grub-install /dev/sdb



重開機!!!!!!!!!!!!!!!


5. 重開機後用 df -h 看看, mdx 有沒有全部掛上, 如果沒有請修改 /boot/grub/grub.cfg
這是我一部份的 grub
---BOP

menuentry 'Ubuntu, with Linux 2.6.35-24-generic-pae' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod raid
insmod mdraid
insmod part_msdos
insmod ext2
set root='(md0)'
search --no-floppy --fs-uuid --set 4302605f-d4bc-4437-abed-dc775cb53e8b
linux /boot/vmlinuz-2.6.35-24-generic-pae root=UUID=4302605f-d4bc-4437-abed-dc775cb53e8b ro   quiet splash
initrd /boot/initrd.img-2.6.35-24-generic-pae
}

---EOP
請注意!! UUID 要這樣查
$ blkid -s UUID


然後再重開機, 反正....就是要搞到開機後 df -h 都看到自己的 '/' and '/home' 都是從 /dev/mdx 掛載的. 才能再繼續做!!


再來就是要改 /dev/sda 的 Partition了! 
$ fdisk /dev/sda
$ Command (m for help): <– t
$ Partition number (1-4): <– 1
$ Hex code (type L to list codes): <– fd
Changed system type of partition 1 to fd (Linux raid autodetect)
$ Command (m for help): <– t
$ Partition number (1-4): <– 2
$ Hex code (type L to list codes): <– fd
Changed system type of partition 2 to fd (Linux raid autodetect)
$ Command (m for help): <– t
$ Partition number (1-4): <– 3
$ Hex code (type L to list codes): <– fd
Changed system type of partition 3 to fd (Linux raid autodetect)
$ Command (m for help): <– w



你會看到通通變成 Linux raid autodetect


然後就可以把硬碟加進 RAID1 了, By...
$ mdadm –add /dev/md0 /dev/sda1 
$ mdadm –add /dev/md1 /dev/sda2 
$ mdadm –add /dev/md2 /dev/sda3
可以用
$ cat /proc/mdstat
看狀態, 應該都要變成 [UU] 才對, 如果你有看到正在同步中, 請讓他跑完再重開機, 不然資料會掰掰, 切記!!!!!!!!!!!!!!!


再跑一次
$ cp /etc/mdadm/mdadm.conf_orig /etc/mdadm/mdadm.conf
$ mdadm –examine –scan >> /etc/mdadm/mdadm.conf
產生新的 /etc/mdadm/mdadm.conf


Then
$ rm -f /etc/grub.d/09_swraid1_setup
$ update-grub
$ update-initramfs -u



重開機!!!!!!!!!!!!!!! and KO!


開機後你應該可以在 系統->管理->磁碟公用程式 看到 RAID 了.



沒有留言:

張貼留言