前々から準備していて、いよいよ新しく契約を追加してリストアするぞ! と思ったらできませんでしたので顛末を記す。敗戦は惨め。
Ubuntu 12.04 で生成
バックアップをとったサーバは大阪リージョン、HDD 100GB メモリ1GB (さくらのVPS(v3) 1G) です。
sudo mondoarchive -O -i -N -d /tmp/backup -s 30g
こんな感じで生成しました。HDD 100GB ですが Used: 12GB です。
$ mondoarchive -v mondoarchive v3.2.2-r3578 $ uname -a Linux stfuawsc.com 3.2.0-88-generic #126-Ubuntu SMP Mon Jul 6 21:33:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
さくらのVPSで復元する
東京リージョン、SSD 30GB、メモリ 1GB プランを申し込みました。お試し期間での操作です。
VPSのコントロールパネルに行き、該当するホストの「OSインストール」から「ISOイメージインストール」を選択します。
公式のサポート情報を見ながら sftp でアップロードします。
元々さくらのVPS 上で mondo のイメージを作っているので旧サーバから直接 sftp しました。だいたい 10MB/s ぐらいでコピーできました (80Mbps)。
$ sftp user@xxxx.sftp.sakura.ad.jp:/iso $ put /tmp/backup.iso $ bye
これでインストールを開始します。VirtIO はオンでもオフでも関係ないようでしたので無視します。
このあと、まず Mondo Rescue のブートローダが起動します。nuke とか interactive とか選択できる画面です。まぁ何を入力しても、その後 Linux のブートで死にます。
initrd.img をロードしたあと、スタックトレースと共に Fixing recursive fault but reboot is needed というメッセージがでてしばらく止まり、再起動したあとに再度スタックトレースが出て止まります。
原因を探すために
VNC コンソールだとログが流れてしまって原因がわかりません。スタックトレースの最後だけ表示されてる状態です。これではどうしよもないので以下のようにしました。
ブートオプションにシリアルポートの設定を加えます。
boot: interactive console=ttyS0,115200n8
これで起動直後に VPS の管理画面から「シリアルコンソール (β版)」を起動しておきます。boot ローダが表示されているときにやればよさそうです。これでカーネルメッセージが全てシリアルコンソールのほうに出るようになるので、ログの履歴が辿れるようになります。
原因
以下のようなカーネルパニックでした。ググっても解決しそうな情報がありませんでし た。BUG で明示的に死んでるなのでカーネルに問題がありそうですがよくわかりません……
なおブートオプションに acpi=off とか ramdisk_blocksize=1024 をつけても無駄でした。
[ 0.071064] Trying to unpack rootfs image as initramfs... [ 0.072286] BUG: unable to handle kernel NULL pointer dereference at 00000000 00000008 [ 0.074357] IP: [<ffffffff811a4c76>] __mark_inode_dirty+0x186/0x2a0 [ 0.076004] PGD 0 [ 0.076004] Oops: 0002 [#1] SMP [ 0.076004] CPU 0
露頭に迷う
とりあえず申し込みを即日キャンセルして対策を考えています。
- Mondo Rescue のカーネルバージョンを変える?
- Mindi のカーネル? わからない → Mindi は実行中システムのカーネルをデフォルトで使う。システムにまずインストールされていないとカーネルを変えられない
- そもそも Mondo 使うのをやめてイチからセットアップする?
- そんな気力はない…
備考:シリアルコンソール(β版)
スクロールするとDOMの内容が全て入れ替わるためコピペが異常にやりにくい…… そして使ってる JS のオブジェクトが関数スコープで閉じているので Developer Console からも手が出せずめんどうくさい。
備考:さくらのVPSのVNCが繋げないとき
ISO インストール前に管理画面を一旦リロードしないと、VNC がちゃんと開けない。
正確にはマシンの強制停止をしたあと、リロードしたあと再度起動させると VNC が開けない? っぽい。よくわからんけど小まめにリロードしたほうが安心。これだから SAP は……