首先, 步驟很多...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 了.
沒有留言:
張貼留言