本文 |
サイト : http://www.mondorescue.org/
# 以下よりDL http://www.mondorescue.org/ftp/ or http://ftp.mondorescue.org/
# # バックアップ ------------------------------------------------ #
# mondorescueのインストール # # 該当OS/ver/archのディレクトリからパッケージをDL # CentOS 5.x系列はrhel/5を利用したほうが良いらしい # # 実作業にてCentOS 5で利用したのは # rhel # 5 # i386 # afio-2.4.7-1.i386.rpm # buffer-1.19-1.i386.rpm # mindi-2.0.5-1.rhel5.i386.rpm # mindi-busybox-1.7.3-1.rhel5.i386.rpm # mondo-2.2.8-1.rhel5.i386.rpm #
# /path/to/work -> バックアップの保存先を確保、準備 # 吸い出しターゲットに影響を与えずに作業する場合はnfsなど外部メディアに保存する # work直下にiso, chnk, tmpディレクトリを作成 # 'backup_prefix'は生成されるバックアップ名を指定
# 実行 ( mondoarchive -Oi -d /path/to/work/iso -E /path/to/work -s 4480m -S /path/to/work/chnk -T /path/to/work/tmp -p 'backup_prefix' ) &
# 負荷が上がりすぎて困る場合は以下実行 # uptimeから負荷を取得して5以上の場合にmondoarchive関連のプロセスにSIGSTOPを送る # 5未満でSIGCONTによる再開 (while true; do uptime | awk 'gsub(",", "") { print ; }' | xargs -I'{}' sh -c ' #set -x #set +o posix
if [ `echo "{} < 5" | bc` -eq 1 ]; then echo "ok go {} " `date` for PID in `pidof mondoarchive afio bzip2 mindi`; do echo $PID #renice 1 $PID #ionice -c 1 -p $PID kill -s SIGCONT $PID done else echo "busy rest {}" `date` for PID in `pidof mondoarchive afio bzip2 mindi`; do echo $PID kill -s SIGSTOP $PID done fi #set -o posix' sleep 15 done)
# # レストア ---------------------------------------------------- #
バックアップ作業で出来上がったisoファイルから起動 interactive → DVD と選択 # or もっと細かい作業を行う場合はboot: expertで起動
fdiskでパーティションを定義 # alt + → / ← でターミナルを切り替えられるので、別ターミナルにてfdiskコマンドを実行 # fdisk /dev/hda (例 # aで/boot予定パーティションにbootフラグを建てるのを忘れずに # 拡張予定のあるパーティションは最後に配置 # swapをt : 82でswapに変更しておく # サイズはもとより大きい分には問題ない # mdraidやlvm利用時はそれぞれの作成手順を別途行う
必要であればフォーマット(例 以下deviceは適宜読み替えてください # 通常次のステップのmountlist CUIからフォーマットとスワップ作成はしてもらえるのでスキップ #mkfs -t ext3 -j /dev/hda1 #mkfs -t ext3 -j /dev/hda5 ## swap領域作成 #mkswap /dev/hda2
元画面に戻り、mountlist CUI画面で デバイス/パーティション→マウントレイアウトとファイルシステムを先のfdiskと合わせる パーティションサイズは0MBにしておく
Are you sure you want to save your mountlist and continue? → Yesで保存
Do you want to erase and partition your hard drives? → パーティションはfdiskで作成したのでNoでパス
Do you want to format your hard drives? → 自分でやってなければYesでフォーマット
Do you want me to restore all of your data? → データはすべて戻すのでYes # kvmなどにインストールする場合、isoが複数に渡る場合は都度 umount /mnt/cdrom してからCDの切断と接続を行う
Initialize the boot loader? → No initrdの再作成などは後でまとめて行うためパス # mondorescue標準の手順だとデバイスやUUIDが変わっている場合起動できないケースが多いので以下手作業
# alt + →キーでコンソール画面に移動 # 以降、chrootしてブートの調整 # chrootの準備、デバイスやproc, sysなどをバインドします
mkdir /mnt/tgt mount /dev/hda5 /mnt/tgt mount /dev/hda1 /mnt/tgt/boot mount --bind /dev /mnt/tgt/dev mount --bind /dev/pts /mnt/tgt/dev/pts mount -t proc none /mnt/tgt/proc mount --bind /sys /mnt/tgt/sys
# 以下、chrootするので移行ターゲットOSの実際のファイルパスになります chroot /mnt/tgt /bin/bash
# # fstabの変更 #
cd /etc cp -pi fstab fstab.orig[YYMMDD] # YYMMDDは日付など適宜
vi fstab >>> # 以下例 # # ここでマウントポイントがUUID指定されている場合、blkidコマンドなどでUUIDを調べ、新しいUUIDに書き換える # (tune2fs -l /dev/hda1 | grep UUID などでもよいがswapが表示できなかった) # ラベル指定がある場合は e2label /dev/hda1 /boot のように対応するラベルをデバイスに指定しておく # UUID=b2a4aa95-b5bd-4a65-a8cb-565c016f6195 / ext4 defaults 1 1 UUID=40c7b758-bb8f-4dff-8dad-5bc5a4fa2b95 /boot ext4 defaults 1 2 UUID=afef20ee-9972-44c1-8bad-15ca7ff41681 swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 <<<
# # mtabの変更 # mtabは以前のデバイスと移行先デバイスが違う場合、該当箇所を修正する #
cp -pi mtab mtab.origYYMMDD vi mtab >>> # 以下例 # # デバイス名などが変わっている場合書き換えておく # 例) 以前のマウントポイントと変更されている点を修正 # /dev/md1 / -> /dev/vda3 / # /dev/scd1 /boot -> /dev/vda1 /boot # /dev/vda3 / ext4 rw 0 0 proc /proc proc rw 0 0 sysfs /sys sysfs rw 0 0 devpts /dev/pts devpts rw,gid=5,mode=620 0 0 tmpfs /dev/shm tmpfs rw 0 0 /dev/vda1 /boot ext4 rw 0 0 none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0 sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0 <<<
# /etc/multipath.confはそのままでOK
# # grub.confの修正 #
cd /boot/grub cp -pi grub.conf grub.conf.origYYMMDD
vi grub.conf >>> # 以下例 # # grub.confはカーネルブートパラメータ中にデバイス名が記載されている場合、移行先デバイス名に修正する。 # ラベル方式の場合はそのまま保存 # 例) # #boot=/dev/sdc → /dev/hda # default=0 # timeout=5 # splashimage=(hd0,0)/grub/splash.xpm.gz # hiddenmenu # title CentOS (2.6.18-417.el5) # root (hd0,0) # kernel /vmlinuz-2.6.18-417.el5 ro root=/dev/md1 rhgb quiet → root=/dev/hda5 # initrd /initrd-2.6.18-417.el5.img # # また、rootをUUID指定されている場合、fstabの/のマウントポイントのUUIDに置換する # 例) # title CentOS (2.6.32-754.6.3.el6.x86_64) # root (hd0,0) # kernel /vmlinuz-2.6.32-754.6.3.el6.x86_64 ro root=UUID=b2a4aa95-b5bd-4a65-a8cb-565c016f6195 rd_NO_LUKS rd_NO_MD crashkernel=128M KEYBOARDTYPE=pc KEYTABLE=jp106 LANG=ja_JP.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet # initrd /initramfs-2.6.32-754.6.3.el6.x86_64.img # <<<
併せてdevice.mapはデバイス名が違う箇所を変更 cp -pi device.map device.map.origYYMMDD vi device.map >>> # 例) # (hd0) /dev/sda → /dev/hda <<<
# # initrd or initramfsを移行先環境に合わせて再構築します # grub.confのカーネルイメージがinitramfsの場合、dracutをオプション無しで実行することで現在の最新のkernelに合わせたinitramfsを作成し直してくれる模様。 #
cd /boot
# initrdの場合 ----- # backup mv -i initrd-X.Y.Z-NNN.elN.img initrd-X.Y.Z-NNN.elN.img.bkYYMMDD
# initrd再作成 # 基本 uname -a して出たkernelパラメータを利用すればOK # 例) mkinitrd initrd-2.6.18-417.el5.img 2.6.18-417.el5 mkinitrd initrd-X.Y.Z-NNN.elN.img X.Y.Z-NNN.elN
# initramfsの場合 ----- # backup mv -i initramfs-X.Y.Z-NNN.A.B.elV.ARCH.img initramfs-X.Y.Z-NNN.A.B.elV.ARCH.img.bkYYMMDD # 再作成 dracut
# # grubを再インストール #
cd /boot/grub # 移行先デバイス名を指定、以下/dev/vdaがインストール先diskの場合 grub-install /dev/vda
# chroot抜ける exit
# ターゲットシステムのマウントを開放 umount -l /mnt/tgt/sys umount -l /mnt/tgt/proc umount -l /mnt/tgt/dev/pts umount -l /mnt/tgt/dev umount -l /mnt/tgt/boot umount -l /mnt/tgt
# 以降は変更が加わる質問にはNoとしてrebootすればOK # rebootがうまくかからない場合はリセットが必要かもしれない
Did you change the mountlist? → No 自分で調整したので維持
Label/Identify your ext2 and ext3 paritions if necessary? → No 自分で調整したので維持
# 再起動 reboot
|