參考資料:鳥哥有一篇關於dump的介紹
環境準備:
利用虛擬軟體準備兩台Linux OS(我用的是CentOS5.2)
配置兩台一樣的環境,基本上我只設定以下三項:
項目 | A (Source) | B (Target) |
Mem | 512M | 512M |
網卡 | 一張 | 一張 |
硬碟 | 一顆8G,一顆5G | 一顆8G |
測試步驟:
1. 先在虛機A上安裝CentOS5.2,硬碟分割如下
/boot (/dev/sda1) | 100M |
/ (dev/sda2) | 5G |
swap (dev/sda3) | 1G |
/var (/dev/VolGroup00/LogVol00) | 1G |
/data (/dev/VolGroup00/LogVol01) | 896M |
前三個分割區切完後,我將剩餘的空間作成LVM並切成兩個partition,主要是要測試在LVM下的dump作法
2.安裝好OS並登入後,將另一顆5G的硬碟格式化為ext3並掛載起來
# fdisk -l
Disk /dev/sda: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 666 5245222+ 83 Linux /dev/sda3 667 797 1052257+ 82 Linux swap / Solaris /dev/sda4 798 1044 1984027+ 5 Extended /dev/sda5 798 1044 1983996 8e Linux LVM Disk /dev/sdb: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System |
# fdisk /dev/sdb //分割成一個即可
#fdisk -l /dev/sdb
Disk /dev/sdb: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 652 5237158+ 83 Linux |
#mkfs.ext3 /dev/sdb1
# mkdir /bakup //目錄名稱自取
# mount /dev/sdb1 /bakup //可寫到fstab,這邊只是測試就帶過
# df -h
檔案系統 容量 已用 可用 已用% 掛載點 /dev/sda2 4.9G 2.0G 2.7G 43% / /dev/mapper/VolGroup00-LogVol00 992M 69M 873M 8% /var /dev/mapper/VolGroup00-LogVol01 868M 17M 807M 3% /data /dev/sda1 99M 11M 83M 12% /boot tmpfs 252M 0 252M 0% /dev/shm /dev/sdb1 5.0G 139M 4.6G 3% /bakup |
這個硬碟是用來放備份的資料的,所以要用nfs來分享給B到時要來還原用
# vim /etc/exports
/bakup 192.168.56.0/24(ro,sync) //不了解的請參考鳥哥關於nfs的介紹
#/etc/init.d/nfs restart
#chkconfig nfs on
準備動作到此完成,可以開始備份嚕
2. 備份
#dump -0uf /bakup/root.dmp / //其中0表示完整備份,如果1就是差異化備份
#dump -0uf /bakup/boot.dmp /boot
#dump -0uf /bakup/var.dmp /var
#dump -0uf /bakup/data.dmp /data
#dump -W //檢查有無備份成功
Last dump(s) done (Dump '>' file systems): /dev/sda2 ( /) Last dump: Level 0, Date Tue Mar 15 09:07:11 2011 /dev/mapper/VolGroup00-LogVol00 ( /var) Last dump: Level 0, Date Tue Mar 15 09:18:51 2011 /dev/mapper/VolGroup00-LogVol01 ( /data) Last dump: Level 0, Date Tue Mar 15 09:20:55 2011 /dev/sda1 ( /boot) Last dump: Level 0, Date Tue Mar 15 09:18:31 2011 /dev/sdb1 (/bakup) Last dump: never |
//會有最後一次備份的時間
//建議將fdisk -l,fstab,ifconfig,lvm內容都存一份起來,這樣在還原時可以比對
完成後準備用另一台還原,這種方法一般都是同機還原,但因為利用虛擬技術產出的硬體都一樣,所以可以簡單作到異機還原
3. 還原
在虛機B用CentOS光碟開機,並進入Rescue Mode //不需安裝,直接用備份檔來作
# fdisk -l //沒有安裝應該都是空的,根據虛機A的fdisk -l內容來作分割
Disk /dev/sda: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 666 5245222+ 83 Linux /dev/sda3 667 797 1052257+ 82 Linux swap / Solaris /dev/sda4 798 1044 1984027+ 5 Extended /dev/sda5 798 1044 1983996 8e Linux LVM |
# mkfs.ext3 /dev/sda1
# mkfs.ext3 /dev/sda2
# mkswap /dev/sda3
製作LVM分割 //根據虛機A的LVM來作
# lvm pvcreate /dev/sda5
# lvm vgcreate VolGroup00 /dev/sda5
# lvm lvcreate -L 1G -n LogVol00 VolGroup00
# lvm lvcreate -L 896M -n LogVol01 VolGroup00
//盡可能建制的一樣,同機還原比較不會有不同的問題
# mkfs.ext3 /dev/VolGrup00/LogVol00
# mkfs.ext3 /dev/VolGrup00/LogVol01
建立一個mountpiont掛載nfs上的還原source
# mkdir /source
# mount -t nfs 192.168.56.101:/bakup /source //這個ip是我的環境,每個人應該不同
作一個mountpoint來掛載”/”,並在裡面建立相對應的目錄來掛載其他devices
# mkdir /disk
# mount /dev/sda2 /disk
# cd /disk
# restore -rf root.dmp //直接還原”/”,裡面會有其他應有的目錄,沒有的話要自己建立
還原完成後,依序進入/disk/boot,/disk/data,/disk/var 還原相對應的內容
# cd /disk/boot
# restore -rf boot.dmp
# cd /disk/var
# restore -rf var.dmp
# cd /dev/datadc
# restore -rf data.dmp
根據虛機A的fstab去設定devices正確資訊,主要是label要對
# e2label /dev/sda1 /boot
# e2label /dev/sda2 /
swap的label我不會設定,乾脆把fstab改掉
# vi /disk/etc/fstab
4. 安裝GRUB
# grub
grub> root (hd0,0) //這個數值請自己參考正確位置
grub> setup (hd0)
grub> setup (hd0,0)
5. 將光碟取出用硬碟重開機應該就可以嚕