2009年7月24日金曜日

linux rescue

RHEL や CentOS のインストール用 CD-ROMには、レスキュー モードが存在します。
レスキュー モードを使用して、dump コマンドで取得したバックアップからリストアする方法を検証中です。

(作成中の文章です)

条件
  • CentOS 5.2 で検証しています。
  • LVM (Logical Volume Manager) を使用しています。
  • バックアップ元は、CentOS01 (172.16.208.35)
  • バックアップ先は、NFSsvr (172.16.208.36) の /backup ディレクトリ
NFS サーバの設定
  1. NFS サーバ (NFSsvr) の /backup ディレクトリをエクスポートします。アクセスは、バックアップ元の CentOS01 のみ許可します。
    NFSsvr# vi /etc/exports
    ---- ---- ---- ---- ---- ---- ---- ----
    /backup CentOS01(rw,sync,no_root_squash)
    ---- ---- ---- ---- ---- ---- ---- ----
  2. NFS サーバを起動します。
    NFSsvr# service nfs start
    NFSsvr# exportfs (エクスポートされていることを確認)
  3. バックアップを実施する。
  4. NFS サーバを停止します。
    NFSsvr# service nfs stop
    NFSsvr# service nfs status (停止したことを確認)
事前情報の取得
  1. NFS マウントする。
    # mkdir -p /nfs
    # mount -t nfs NFSsvr:/backup /nfs
  2. パーティション情報を取得します。
    # sfdisk -d /dev/sda >"/nfs/`hostname`_sfdisk-d-sda.txt"
    # cat /etc/fstab >"/nfs/`hostname`_etc-fstab.txt"
    # mount >"/nfs/`hostname`_mount.txt"
  3. LVM の情報を取得します。
    # pvdisplay >"/nfs/`hostname`_pvdisplay.txt"
    # vgdisplay >"/nfs/`hostname`_vgdisplay.txt"
    # lvdisplay >"/nfs/`hostname`_lvdisplay.txt"
    # vgcfgbackup VG00 -f "/nfs/`hostname`_vgcfgbackup-VG00.txt"
  4. 続いてバックアップを行います。
バックアップ (LVM2 スナップショットを使用した場合)
  1. スナップショットを作成する。
    # lvcreate --snapshot --size 1G --name snap-root /dev/VG00/root
    # lvcreate --snapshot --size 1G --name snap-var /dev/VG00/var
  2. dump コマンドでバックアップを取得する。(/boot 以外)
    # dump -0uf "/nfs/`hostname`_VG00_root.dump" /dev/VG00/snap-root
    # dump -0uf "/nfs/`hostname`_VG00_var.dump" /dev/VG00/snap-var
  3. スナップショットを解除する。
    # lvremove -f /dev/VG00/snap-root
    # lvremove -f /dev/VG00/snap-var
  4. dump コマンドでバックアップを取得する。(/boot)
    # dump -0uf "/nfs/`hostname`_sda1.dump" /dev/sda1
  5. NFS をアンマウントする。
    # umount /nfs
レスキュー モードで起動する
  1. インストール用の CD-ROM から起動します。(BIOS のブート順の変更が必要かもしれません)
  2. boot: プロンプトが表示されたら、"linux rescue" と入力し、レスキュー モードで起動します。
    (デバイスドライバを FD もしくは USB メモリから読み込ませる場合は、"linux rescue dd")
  3. Choose a Language: English
  4. Keyboard Type: jp106
  5. Setup Networking: No (コマンドでネットワーク設定をするため)
  6. Rescue: Skip
  7. シェルのプロンプトが表示されるので、IP アドレスを設定します。
    # ifconfig eth0 172.16.208.35 netmask 255.255.255.0
バックアップ (レスキュー モードを使用した場合) 検証中です
  1. レスキュー モードで起動します。
  2. LV をアクティブにします。
    # lvm vgscan (VG をスキャンします。)
    # lvm vgchange -a y VG00 (VG 内の LV をアクティブにします。)
    # lvm lvdisplay | less (LV Status が available になっていることを確認します。)
  3. NFS マウントします。
    # mkdir /nfs
    # mount -t nfs 172.16.210.32:/backup /nfs
  4. dump コマンドで各パーティションをバックアップします。
    # dump -0f "/nfs/CentOS01_VG00_root.dump" /dev/VG00/root
    # dump -0f "/nfs/CentOS01_VG00_var.dump" /dev/VG00/var
    # dump -0f "/nfs/CentOS01_sda1.dump" /dev/sda1
  5. NFS をアンマウントして、再起動します。
    # umount /nfs
    # exit
リストア
  1. レスキュー モードで起動します。
  2. NFS マウントします。
    # mkdir /nfs
    # mount -t nfs 172.16.208.36:/backup /nfs
  3. パーティション情報を復元します。
    # sfdisk /dev/sda </nfs/CentOS01_sfdisk-sda.txt
    # sfdisk --force /dev/sda </nfs/CentOS01_sfdisk-sda.txt (失敗する場合は、このように --force オプションを付けて実行)
    # cat /nfs/CentOS01_sfdisk-sda.txt
    # sfdisk -d (CentOS01_sfdisk-sda.txt と比較して確認)
    # cat /proc/partition (パーティションが認識されていることを確認)
  4. PV の情報を復元します。
    # UUID="`grep 'PV UUID' /nfs/CentOS01_pvdisplay.txt | awk '{print $3}'`"
    # echo $UUID (PV の UUID がセットされていることを確認)
    # lvm pvcreate -ff --restorefile /nfs/CentOS01_vgcfgbackup-VG00.txt --uuid $UUID /dev/sda2
  5. LV の情報を復元します。
    # lvm vgcfgrestore -f /nfs/CentOS01_vgcfgbackup-VG00.txt VG00
  6. LV をアクティブにします。
    # lvm vgchange -a y VG00 (VG 内の LV をアクティブにします。)
    # lvm lvdisplay | less (LV Status が available になっていることを確認します。)
  7. ext3 でフォーマットします。
    # mke2fs -j /dev/VG00/root
    # tune2fs -c -1 -i 0 /dev/VG00/root
    # mke2fs -j /dev/VG00/var
    # tune2fs -c -1 -i 0 /dev/VG00/var
    # mke2fs -j -L /boot /dev/sda1
    # tune2fs -c -1 -i 0 /dev/sda1
    # mkswap /dev/VG00/swap
  8. restore コマンドでバックアップをリストアします。
    # mkdir /restore
    # mount -t ext3 /dev/VG00/root /restore
    # cd /restore
    # restore rf /nfs/CentOS01_VG00_root.dump
    # mount -t ext3 /dev/VG00/var /restore/var
    # cd /restore/var
    # restore rf /nfs/CentOS01_VG00_var.dump
    # mount -t ext3 /dev/sda1 /restore/boot
    # cd /restore/boot
    # restore rf /nfs/CentOS01_VG00_sda1.dump
  9. MBR の回復 (GRUB のインストール)
  10. # chroot /restore
    # mount /proc
    # cat /proc/partitions (sda の major, minor を確認する)
    # mknod b 8 0 /dev/sda
    # mknod b 8 1 /dev/sda1
    # mknod b 8 2 /dev/sda2
    # grub-install /dev/sda
    # rm /dev/sda*
  11. 再起動します。
    # sync; sync; sync
    # exit (chroot 環境を抜ける。)
    # exit (レスキュー モードを抜ける。)
NFS を使用せず ssh を使用する場合の例
  • sfdisk -d /dev/sda | ssh root@$SSHsvr dd of="/backup/`hostname`_sfdisk-d-sda.txt"
  • dump -0uf - /dev/VG00/snap-root | ssh root@$SSHsvr dd of="/backup/`hostname`_VG00_root.dump"
  • ssh root@$SSHsvr dd if="/backup/`hostname`_VG00_root.dump" | restore rvf -
参考

0 件のコメント: