雖然Linux系統可通過tar/cpio/dd等方法直接進行備份,但如果系統正處於運行狀態,並不能保證備份出來的系統是完全干淨的。由此可通過rescue的skip模式繞過操作系統進行備份,再重建initrd.img、grub可實現跨硬件平台的Linux克隆方法。
以下以RHEL6.2為例做測試,此方法同樣可用於備份Windows系統。
搭建Linux的rescue環境
- # cp -rp /mnt/RHEL6/images/ /boot //從系統光盤裡拷貝出images目錄到相應的目錄中
- # vi /etc/grub.conf //向grub.conf文件中添加以下內容
- title RHEL6_rescue
- kernel /boot/images/pxeboot/vmlinuz rescue
- initrd /boot/images/pxeboot/initrd.img
詳見“DHCP+TFTP+PXE自動網絡引導安裝Linux操作系統”中關於PXE環境搭建的說明 見 http://www.linuxidc.com/Linux/2013-03/81580.htm
另:也可通過系統光盤啟動,選擇進入rescue環境
備份/克隆Linux
- # mkdir /source /backup
- # mdadm -As /dev/md0 //若系統分區創建在RAID上
- # lvm vgscan //若系統分區創建在LVM上
- # lvm vgchange -a y /dev/Lrhel6
- # mount /dev/Lrhel6/root /source //以下根據系統實際情況掛載所有系統目錄
- # mount /dev/Lrhel6/home /source/home
- # mount /dev/sda1 /source/boot
- # mount /dev/Lrhel6/backup /backup
- # tar zcvf /backup/os.tgz /source //備份出干淨的系統文件
恢復/遷移Linux
啟動系統進入rescue的Skip模式
- # fdisk /dev/sdb //對新加入的磁盤進行分區
- # mkdir /backup /dest
- # mount /dev/sda2 /backup
- # mount /dev/sdb2 /dest
- # tar zxvf /backup/os.tgz /dest
- # vi /dest/etc/grub.conf //根據實際情況編輯grub配置文件
- # vi /dest/etc/fstab //根據實際情況編輯fstab文件
- # rm -rf /dest/etc/mtab //刪除mtab文件,登錄系統後將自動創建mtab文件
- # exit
- reboot
- 重新啟動系統進入rescue的Continue模式,重新生產initramfs,並安裝grub
- # chroot /mnt/sysimage
- # cd /boot
- # mkinitrd -f initramfs-$(uname -r).img $(uname -r) //重新生成initramfs文件
- # grub-install --recheck --no-floppy /dev/sda
- 若提示Could not find device,則退出根分區重裝grub,並指定根分區的路徑
- # exit
- # cp /mnt/sysimage/sbin/grub /sbin
- # grub-install --recheck --no-floppy --root-directory=/mnt/sysimage /dev/sda
- # exit
- # exit
- reboot