要搬作業系統不止是將檔案複製過去就好了,還要更改設定檔與重寫開機磁區。步驟如下:
- 關閉SELinux
- 建立RAID
- 備份原來的系統
- 將系統還原至RAID
- 修改 /etc/fstab
- 修改 /boot/grub/grub.conf
- 設定grub開機磁區
本操作範例仍然在VMware環境下執行。
/dev/sda1為原始作業系統
/dev/sdb1 和 /dev/sdc1 建立RAID-1
由於每個人狀況可能會有所不同,還是要依自己的環境而有所調整,但步驟大致上都差不多。
關閉SELinux
- 編輯/etc/selinux/config設定 SELINUX=disabled
一定要關閉SELinux,否則系統搬移後,使用者會無法登入。蕃薯為了無法登入的問題,找了好久,看到 /var/log/message 登入時有3行訊息:
Oct 14 11:57:12 localhost gnome-session[2136]: atk-bridge-WARNING: AT_SPI_REGISTRY was not started at session startup.
Oct 14 11:57:12 localhost gnome-session[2136]: atk-bridge-WARNING: IOR not set.
Oct 14 11:57:12 localhost gnome-session[2136]: atk-bridge-WARNING: Could not locate registry
atk-bridge是啥東東呀,最後才發現是SELinux在搞鬼。記得以前在移動PostgreSQL資料庫目錄時也遇到SELinux在搞鬼。
建立RAID
從這裡到最後,都是在Live CD開機的環境下,並且都要以root身分操作。- 用Live CD開機
- 開啟終端機並切換到root使用者
- 以指令方式建立Software RAID-1
如果只有一顆新硬碟搭配原本的硬碟,可以先使用missing參數建立RAID,等系統備份好了再將原本的硬碟加入RAID。
- 建立Ext4檔案系統
備份原來的系統
- 掛載RAID與原系統(/dev/sda1) 分割區
mkdir /rootfs
mount /dev/md0 /raid
mount /dev/sda1 /rootfs
- 使用tar建立系統備份檔到/raid目錄,以root使用者執行時會記錄檔案屬性,不需要再加-p參數。
tar -czvf /raid/rootfs.tgz rootfs
將系統還原至RAID
- 解壓縮tar檔案,會產生/raid/rootfs目錄
- 將/raid/rootfs底下的所有目錄與檔案移到 /raid目錄,除了"."與".."
mv /raid/rootfs/.* /raid
rmdir /raid/rootfs
2013/10/25補充:
還有另一個方式,就是把raid重新mount 到 /rootfs,這樣直接解開rootfs.tgz 到根目錄底下就可以了,不需要再搬檔案,步驟如下:
umount /raid
umount /rootfs
mount /dev/md0 /rootfs
tar -xzvf /rootfs/rootfs.tgz -C /
使用這種方式,下面修改的fstab與grub.conf必須注意路徑。
修改 /etc/fstab
將預設的UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 改成 LABEL=rootfs,這個"rootfs"是我們前面建立Ext4時指定的。如果用UUID則每次搬移都要改一次/etc/fstab,使用LABEL會比較方便。- 將UUID改成LABEL,記得要編輯的是 /raid/etc/fstab而不是/etc/fstab喔!
修改 /boot/grub/grub.conf
修改下圖紅色框框處,檔案一樣位於/raid/boot/grub/grub.conf而不是/boot/grub/grub.conf喔!
請注意如果CentOS有更新kernel則要全部修改,否則那個kernel將無法開機。
- 指定開機磁區
- 指定根目錄LABEL
- 指定RAID UUID
查詢UUID: # mdadm --detail /dev/md0
修改後的grub.conf
設定grub開機磁區
- 執行grub
setup (hd1)
root (hd2,0)
setup(hd2)
quit
沒有留言:
張貼留言