さくらVPS環境をMondorescueでバックアップしてVmwareにリカバリする
2012/06/09 環境:centos5.7 さくらVPS 1Gモデル
さくらVPSで作った環境を手元にもほしいときの作業メモ
サーバで開発も行なっていたけど手元のVM環境にフルバックアップして移したい
ってことありますよね。
リカバリはkernel panicから復帰して完了したもので、ところどころ手抜きしてます。mondorescue と助け舟のさくらVPSと同じバージョンのConetOSイメージ(rescueモードのため)を用意してください。
mondrescueのインストール
まず、さくらVPS上でmondorescueをインストールします。
ここを参考にインストール
【さくらのVPS】さくらのVPSでmondo rescueを使ってCentOS全体を丸ごとバックアップしようとしてみました その2→少し起動成功
mondorescue のバージョンは3.0.2-1.rhel5を使いました。3.0.1だと失敗します。
いったん削除
# yum erase mondo # yum erase mindi mindi-busybox afio buffer
レポジトリ指定をしてインストール
# yum --enablerepo=dag install mondo
バックアップ
バックアップを作成する。/bacは保存先 -E /bac は保存先を除く
# mondoarchive -Oi -g -N -s 4200m -d /bac -E /bac
リカバリ
操作はノートPCに移る。サーバの/bac に作成されたisoファイルがあるので、
scpか何かで手元のノートPCに持ってくる。vmwareでisoファイルを指定して起動する。
Mondorescue では lvm まで柔軟に構築してくれないので、ハードディスク構成が違うとnukeモードでは失敗する。
なので、手動でパーティションとlvmの作成を行なうのがよいらしい。
安心してほしいのが、さくらVPSはHDDを100GB持っているがそれに合わせる必要はなく20Gでも作成できたこと。
パーティション作成
mondorescue の OS が起動したら白い boot:選択画面になる。
選択の種類は、自動のnuke,手動のinteractive,コマンドのexpertがある。
今回は、パーティションから作るのでexpertを指定する
boot:expert
をタイプするとコマンドラインに移行する。
vmware は仮想HDDがあってSCSIの場合 /dev/sda にある。
まずパーティションの作成を行なう。
fdisk で作成画面に入る
fdisk /dev/sda
ここではいろいろ作成コマンドが使える。
- mはヘルプのようなコマンド一覧と説明
- aはブートフラグを立てる
- nは新しいパーティションの作成
- tはシステムタイプの設定
システムタイプ
まずnでボリュームを作成する。
さくらVPSと出来るだけ同じ環境を作る。さくらVPSでは/dev/vda1にbootのパーティションがある。
さくらVPSの環境
Command(m for help):p デバイス Boot Start End Blocks Id System /dev/vda1 * 1 13 104391 83 Linux /dev/vda2 14 13054 104751832+ 8e Linux LVM
パーティションを1番目に作って、ブロックは1から13までにして、
ブートフラグを立てる。
Command(m for help):n p 1 1 13 Command(m for help):a 1
さくらVPSの/dev/vda2にはLVMがある。
パーティションを2番目に作って、ブロックは14から2610(VMの容量)までにして、
システムタイプをLinux LVMにする。
Command(m for help):n p 2 14 2610 Command(m for help):t 2 8e
出来上がった環境
Command(m for help):p デバイス Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 2016 20860402+ 8e Linux LVM
LVMの作成
16Gで作成して、スワップ2Gとしました。
# lvm pvcreate /dev/sda2 # lvm vgcreate VolGroup00 -s 32m /dev/sda2 # lvm lvcreate -L 16000m -n LogVol00 VolGroup00 # lvm lvcreate -L 2000m -n LogVol01 VolGroup00
フォーマット
# mkfs.ext3 -j /dev/hda1 # mkfs.ext3 -j /dev/VolGroup00/LogVol00 # mkswap /dev/VolGroup00/LogVol01
これでパーティションの作成は終わりです。
mondorestore
あとは、mondorestoreでリストアを行ないます
# mondorestore
- 手動のinteractiveを選択
- 最初のmountlistは/dev/vdaのところを全部/dev/sdaに変える。
- サイズは0MBにそれぞれすることでさくらVPSとあわせなくて済む。
- Are you sure you want to save your mountlist and continue? [Yes]
- Do you want to erase and partition your hard drives? [No]
- Do you want to format your hard drives? [No]
- Do you want me to restore all of your data? [Yes]
- Initialize the boot loader? [Yes]
- ここが大事そうだが未確認:"You will now be able to re-generate your initrd...初期化するためのinitrdを再作成しますか?VM環境では必要かもよ。他のサイトでは[No]
[Yes]を選ぶとコマンドラインに戻る。
モジュール環境が違うので再作成したほうがいいと思う。けど、わからなければ後からrescueモードで再作成するか、ここまで戻ってきて修正するのもあり。
モジュールの設定を変更
aliasの追加を行なう。
■SCSIコントローラーが"LSI Logic"の場合
alias scsi_hostadapter mptscsih
■SCSIコントローラー が"Bus Logic"の場合
alias scsi_hostadapter BusLogic
# vi /etc/modules.conf
initrdの再作成
# cd /boot # mv initrd-2.6.18-XX.XX.X.el5.img initrd-2.6.18-XX.XX.X.el5.img.org # mkinitrd -f -v initrd-2.6.18-XX.XX.X.el5.img 2.6.18-XX.XX.X.el5
完了
終わると再起動をかけます。
もし、起動の途中で、
kernel panic attempted to kill init
という恐ろしい表示がでたらモジュール設定が違っていて、initrdに問題ありです。
私はrescueモードでgrubとinitrdを再作成しました。
これで完了です。