x86版Solaris10物理サーバをVirtualBoxへ移行(P2V)
2009年に買ったマザーボードで組んだPCにてx86 Solaris10を稼働、主にpukiwikiサーバとして活用しています。
ただ、半年に1回程度ハングするため*1に再起動が必要となる運用をしていたので少々煩わしさを感じていました。
そんな中、新たに「C2750D4I」というマザーボードを購入し、x86 Solaris11サーバとして稼働させました。
このマザーボードはメモリ、HDD共にたくさん積むことが出来るので仮想化環境の基盤的な使い方をするとよさそうだ、と考えたので、勉強もかねて物理Solaris10サーバを仮想化環境へ移行(いわゆるP2V)してみる事にしました。
仮想化ソフトウェアはSolaris11でも動くフリーのもの、という事でVirtualBoxを選びました。
前提条件
移行元サーバのOS:x86 Solaris10 10/08
移行先VirtualBoxホストサーバのOS:x86 Solaris11 11.2
VirtualBoxのバージョン 5.0.10
$ pkginfo -x SUNWvbox SUNWvbox Oracle VM VirtualBox (i386) 5.0.10,REV=2015.11.10.18.30.104061
移行元サーバのデータを取得
HDDの移設
まず、移行元サーバをシャットダウンしてOSがインストールされたHDDを取り外します。
次に移行先サーバもシャットダウンし、空きSATAポートに移行元サーバのHDDを接続します。
移行先サーバの電源を入れてOSをブートし、HDDが認識されている事を確認します。
$ sudo format
ここでは
Searching for disks...done AVAILABLE DISK SELECTIONS: 0. c1t0d0 <ATA-TOSHIBA DT01ACA3-ABB0-2.73TB> /pci@0,0/pci8086,1f12@3/pci10b5,8608@0/pci10b5,8608@1/pci1849,9172@0/disk@0,0 1. c3t0d0 <ATA-WDC WD15EARS-00Z-0A80-1.36TB> /pci@0,0/pci1849,1f22@17/disk@0,0
というように、c3t0d0として認識されたものとします。
HDDデータをVDIファイルへ変換
HDD内のデータを、VirutualBoxが扱えるVDIというファイル形式へ変換します。
VirtualBoxにて提供されているVBoxManageコマンドを使用し、移行先サーバの作業用ディレクトリにて以下のように実行します。
VBoxManage convertfromraw /dev/dsk/c3t0d0 physical_server.vdi --format VDI
これで移行先サーバのカレントディレクトリ以下に「physical_server.vdi」という名前で、HDDの容量とほぼ同サイズのファイルが生成されます。
VMゲストの作成
移行先サーバにてVirtualBoxを起動、仮想マシンの新規作成を実行します。
マシン名、OS等の指定をして画面を進めて、ハードディスク選択画面にて「すでにある仮想ハードディスクを使用する」を選択、先ほど作成した
physical_server.vdi
を指定して作成します。
これで準備完了です。
起動させる
VirtualBoxの画面から該当のVMゲストを起動します。
すると、本来だとGRUBによるブートイメージ選択画面が表示されるはずですが、
grub>
というようなGRUBのシェルプロンプトが表示されてOSのブートが行われない、という現象が発生しました。
移行元サーバの
/boot/grub/menu.lst
およびこれに記載されている
/rpool/boot/grub/menu.lst
の中身を参照して色々試した結果、GRUBのプロンプトにて以下を実行しました。
grub> root (hd0) grub> configfile /boot/grub/menu.lst grub> boot
すると無事、GRUBのブートイメージ選択画面が表示されました。
ブートイメージを選択してEnterを押すと、いつものようにSolaris10が起動してきます。
その後、IPアドレス等のOS情報を設定してやって、物理サーバと同じように操作できるようになりました。
どうしてこうなった
調べている中で、こちらのブログで解説されているように
grub> setup (hd0)
を実行してGRUBの再インストールも試行したのですが、menu.lstが見つからない旨のエラーとなってしまいました。
そもそもrootコマンドでデバイス指定後にconfigfileコマンドでパスを指定してやればGRUBメニューが出てくるので、GRUBのデータ自体は存在するわけで、謎です・・・。
ということで自動でOSが起動してこなくて不便なのですが、これでしばらく運用してみます。他のOSの場合も同様なのかな・・・。
では。
*1:HW由来なのかOSなのか不明・・・