Hatena::ブログ(Diary)

temitaの不思議空間

2012-06-09

さくらVPS環境をMondorescueでバックアップしてVmwareにリカバリする

17:47 | さくらVPS環境をMondorescueでバックアップしてVmwareにリカバリするを含むブックマーク

2012/06/09 環境:centos5.7 さくらVPS 1Gモデル

さくらVPSで作った環境を手元にもほしいときの作業メモ

サーバで開発も行なっていたけど手元のVM環境にフルバックアップして移したい
ってことありますよね。
リカバリkernel panicから復帰して完了したもので、ところどころ手抜きしてます。mondorescue と助け舟のさくらVPSと同じバージョンのConetOSイメージ(rescueモードのため)を用意してください。

mondrescueのインストール

まず、さくらVPS上でmondorescueをインストールします。
ここを参考にインストール

Linuxブログ : 【さくらの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に持ってくる。vmwareisoファイルを指定して起動する。
Mondorescue では lvm まで柔軟に構築してくれないので、ハードディスク構成が違うとnukeモードでは失敗する。
なので、手動でパーティションとlvmの作成を行なうのがよいらしい。
安心してほしいのが、さくらVPSHDDを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

  • Did you change the mountlist? [Yes]
  • Boot device [/dev/sda]
  • fstabはLabel=/bootをLavel=/dev/sdaに変更する
  • mtabはvdaをsdaに変更
  • grub.confはそのまま
  • device.mapはvdaをsdaに変更
  • Label/Identify your ext2 and ext3 paritions if necessary? [Yes]

完了

終わると再起動をかけます。
もし、起動の途中で、
kernel panic attempted to kill init
という恐ろしい表示がでたらモジュール設定が違っていて、initrdに問題ありです。
私はrescueモードでgrubとinitrdを再作成しました。
これで完了です。

参考にしたもの

mondorescue関係:http://d.hatena.ne.jp/nayutaya/20090204/1233735588:Mondo Rescueを使い、物理マシンを仮想マシン化する方法]
initrd関係:http://http://blog.livedoor.jp/nslab/archives/621542.html:P2V (Physical to Virtual) - MondoRescue編]

トラックバック - http://d.hatena.ne.jp/temita/20120609/1339231679
リンク元