MondoRescueでさくらのVPSのDebianをVMwareの仮想マシンに持ってきた

MondoRescueでさくらのVPSをVMwareの仮想マシンにコピーしたいの続きっす。成功したと言っていいのやら・・・とりあえず起動はしたので後人のためにメモを残しときます。

今回の環境

  • さくらのVPS 2G
  • Debian 6.0.7
  • MondoRescue v3.0.4-r3177
  • VMware Fusion 5.0.3

Mondo Rescueについて

  • Linux上で使い自らのシステム全体をバックアップ、リストアするツール
  • Debianにはaptのソースリストがある
  • Mondo Rescueでのバックアップは mondoarchive コマンド, -i オプションでISOファイルとしてバックアップができる
  • -i オプションはデフォルトだとCDなので、DVDなら -s 4200m などDVDサイズ程度を指定する
  • VMwareだとISOファイルを順に選択することでディスクの入れ替えはできるがメディアに焼くことも考えるとDVDサイズが良いだろう
  • バックアップ中のファイル変更は監視されないのでリストアを確認するまでは気を抜けない
  • さくらのVPSはISOイメージでのインストールも対応しているのでさくらのVPSのバックアップとしても活用できるらしい

Mondo Rescueのインストール

/etc/apt/sources.list に下記を追加

deb ftp://ftp.mondorescue.org/debian 6.0 contrib
deb-src ftp://ftp.mondorescue.org/debian 6.0 contrib

mondoでインストールできる。

apt-get update
apt-get install mondo

root directoryがなんちゃらと言われたがデフォルトのallを設定。

W: mdadm: /etc/mdadm/mdadm.conf defines no arrays.
W: mdadm: no arrays defined in configuration file.

は無視。

バックアップするDebianではあまりディスク容量は使っておらず5GB程度しか使っていない様子。というわけでデフォルトの圧縮率で実行してみる。

mondoarchive -Oi -N -s 4200m -p `hostname`-`date '+%Y%m%d'` -d /backup -E /backup

-Oiがisoイメージを生成用、-sがイメージを分割するサイズ、-pがファイルのプレフィックス、-Nがネットワークドライブを無視、-dがバックアップ出力先、-Eがバックアップから除外するディレクトリ。

だいたい20分くらいかかり2.5GBのisoファイルが作成された。scpでローカルにコピー、5分ほどかかった。

ちなみに-Lオプションを使うとbzip2の代わりにlzoで圧縮し、圧縮率は落ちるがバックアップにかかる時間を短縮することができる。ネットのメモを公開している先人達はこのオプションを使っている人が多い。対象が5GBだからと甘く見て今回は使わなかった。(結果20分もかかった)

VMware Fusionにインストール

OS XなのでVMware Fusionをつかう。恐らくVMware Playerでも手順はさほど変わらないはず。

新規に仮想マシンを選択し、isoファイルを選択する。

デフォルトの仮想マシンの設定ではハードディスクがSCSI接続で20GBが初期値になる。さくらのVPS 2Gプラン上でバックアップしたDebian環境ではパーティションはこのようになっていた。特に/bootはパーティションを切っておらず、いつも冗長で使いこなせないので無駄にパーティションを切らなかった気もするが、さくらのVPSでインストールしたらデフォルトがこうなのかもしれない。セットアップ時の記憶がない。

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *           1       25608   205688832   83  Linux
/dev/vda2           25608       26109     4023297    5  Extended
/dev/vda5           25608       26109     4023296   82  Linux swap / Solaris

仮想マシンが起動すると boot: とシェルプロンプトが表示されモードを入力する。nuke(auto)を使ったりexpertを使ったりしたがGRUBのインストールはこけたのであんまり関係ない気がする。nukeで薦めてもディスク情報がが違うのでインタラクティブモードでパーティションのセットアップをさせられる。もともとバックアップが5GB程度だったのでVMwareの仮想マシンの初期の20GBで十分。Swapであるsda5を2GBにして、sda1を17GB程度にしておいた。

次に進むと初期化するか、データを読み込むかと着替えるのでYESで進めていく。ただし、リストア後にOperationSystem not Foundと言われてGRUBが検出されなかった。

expertモードやってみたこと

ディスク情報が違うので /etc/fstab/dev/vda/dev/sda に置き換て UUID 削除、/etc/mtab も同様に置換。

/etc/default/grubGRUB_DISABLE_LINUX_UUID=trueアン コメント。でも grub-install /dev/sdaとかやっても cannot stat `/dev/sda’ と言われてディスクが認識されていない様子。マウントはしてるしリストアしたデータは見えてるんだけど、このあたり詳しくないんでよくわからない。

ちなみにautoモードでやっても起動はできずログはこんな感じ。

Launching: chroot /mnt/RESTORING grub-install /dev/sda
/usr/sbin/grub-probe: warn: disk does not exist, so falling back to partition device /dev/sda1.
/usr/sbin/grub-probe: warn: disk does not exist, so falling back to partition device /dev/sda1.
/usr/sbin/grub-probe: error: cannot stat `/dev/sda'.
grub-install returned 1
Now I'll use grub2-install
chroot: can't execute 'grub2-install': No such file or directory

バックアップ時にブートローダーは指定しなくても自動で検出されると書いてあったけど、ログを見る限り grub-install を探して試して、 grub2-install を探して試して・・・と地道なことをやっている様子。

Linux Rescue モードで修復する

おそらくモジュール関連を見なすべきなのだろうと思いつつ、P2Vならまだしも仮想環境から仮想環境の移行で何故にハードウェアを意識せねばならぬのかと面倒になって、DebianのネットワークインストールCDのisoファイルをダウンロードして、VMwareの仮想マシンからCDブートしてレスキュモードを実行してGRUBのインストールを決行。

あっさりとインストールは成功し、再起動後に無事にGRUBが立ち上がり、選択したDebianが起動した。

起動後の調整

さくらのVPSでわりあててもらったグローバルIPが静的IPで設定されていたのでDHCPに変換。

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

/etc/network/interfaces を上記のように変更して再起動後、VMware仮想ネットワーク(NATモードの場合)のIPアドレス(172.16.x.x)になったことを確認し、sshで無事接続。

ブログを表示してみて、昨日のエントリは表示されなかったのでバックアップの状態で動いていることが確認できました。ようやくこれで目的であったOSのアップデートのテストができます。MondoRescueでリストアができるけど起動できない場合は、MondoRescueで頑張るよりも大概用意されているLinuxインストールCDにあるレスキュモードを使うと早いよという話でした。