新さくらVPSをWindows化する – さくらのVPSの既存WindowsイメージをVirtio化(新プラン対応)

 従来のさくらVPSはHDDがIDEエミュレーションで繋がっていたので、VMware上にインストールした物をDDしてさくらVPS上に展開する方法が一般的だったけど、新サービスではVirtioで繋がっているために、Virtio Storage(SCSI)のドライバを組み込んでおかなければ起動途中に0x7bエラー(Boot device not found)でSTOPしてしまう。

 そこで、今回は普通にKVMを構築して、そこに導入したWindowsをDDするという手順で導入することにする。

 従来のVMwareを使う方法ではWindows環境上で済ませられたが、VMware上で更にKVMを動かすことは出来ないので、作業用にマシンを1台用意した。



 安くて、後々も使えるマシンとして、HPのProliant ML110 G7サーバーを選定。 クーポン利用で1万2千円程度。
 CPUはCeleronだがSandyBridge系のデュアルコアでVTに対応しているのでKVM動作可能(KVMはVTが無いと動かない)
 ECCメモリが乗っているのと、機能制限版のリモートマネジメント(OSが止まっていてもネットワーク経由でリブートしたり出来る)が乗っていて、本格的なサーバを思わせる仕様。

 こいつにCentOSを導入して作業する。

  1. CentOS 6.2 x86-64をダウンロードしてきてDVDに焼いてProliantに入れてインストール。
    インストール設定はDesktopモデルで追加設定として仮想化を全てOnにして導入して、SSHを外部ネットに公開しておく。

  2. 旧VPS上でVirtioドライバをダウンロードして解凍しておく。
  3. 旧VPS上にKNOPPIXをダウンロードする(最新CD版を利用した)
  4. 旧VPS上にDaemonTools or WinRARを入手する
  5. 旧VPS上にGrub4DOSを入手する
  6. 旧VPS上でKNOPPIXのISOイメージをDaemonToolsでマウントするかWinRARで開く。
    /KNOPPIXをC:\KNOPPIXとしてコピーする。
    /boot/isolinuxの中身をC:\KNOPPIXにコピーする。

  7. 旧VPS上にGrub4DOSを解凍して、grldrファイルをC:\にコピーする。
    C:\boot.iniファイルを編集(見えない場合は、エクスプローラの設定で、隠しファイルとシステム重要ファイルの表示をチェック)して、最下行に

    C:\grldr=”GRUB”

    を追記する。
    併せてTimeOutを長めにしておくと良い(30秒程度?)
    C:\menu.lstと言うテキストファイルを作成して、以下の内容を書き込む。

    title KNOPPIX
    root (hd0,0)
    kernel /knoppix/linux ramdisk_size=100000 init=/etc/init ro
    initrd /knoppix/minirt.gz

  8. 旧VPSのシステムを再起動して、直ちにVNCコンソールを開く。
    Windowsローダー(NTLDR)の画面で、WindowsとGRUBの選択状態になっているはずなので、GRUBを選んでEnter。
    GRUBの画面に切り替わって、唯一の選択肢KNOPPIXがあるので、選んでEnter。
    KNOPPIXが起動する。

  9. システムドライブのイメージを移行作業用にコピーする。
    ・ネットワークの設定
    KNOPPIXのターミナル操作

    #ifconfig eth0 xxx.xxx.xxx.xxx netmask 255.255.254.0
    #route add default gw yyy.yyy.yyy.yyy
    #cat > /etc/resolv.conf
    nameserver 8.8.8.8
    ctrl+d

    xxx.xxx.xxx.xxxはVPSの割り当てIPアドレス
    yyy.yyy.yyy.yyyは指定されたデフォルトゲートウェイ
    8.8.8.8はPublic DNS

    #dd if=/dev/sda | ssh -l hoge nnn.nnn.nnn.nnn “cat > /var/lib/libvirt/images/sakura.img”

    hoge:Proliantのユーザ nnn.nnn.nnn.nnn:Proliantのアドレス

  10. Proliantの端末で virt-manager と打って仮想環境マネージャを起動する。
  11. 仮想環境マネージャでlocalhostに新規Virtualmachineを作成する。
    OSインストール方法は既存のイメージ使用を選んで、ファイルはsakura.imgを選択、タイプはrawにする(raw=ddイメージと同等)

  12. 作成したVirtualmachineの設定画面でデバイスの追加を行い、ストレージデバイス、Disk bus=Virtioにして適当なファイルを作る。
  13. Virtualmachineを起動する。
    Windowsが立ち上がってくると新規デバイスの検出画面が出てくるので、VirtIO SCSIドライバを導入する。

  14. Virtualmachineをシャットダウンする。
    シャットダウン後にVirtualmachineの設定画面を開き、IDE Disk 1の設定を開き、Disk bus=Virtioに変更する。
    2個前の手順で追加したストレージデバイスを削除する。

  15. Virtualmachineを起動する。
    Windowsが立ち上がってくると再び新規デバイスの検出画面が出てくるので、VirtIO SCSIドライバを導入して(これで起動ドライブがVirtioに繋がった)シャットダウンする。

 この手順で、/var/lib/libvirt/images/sakura.img が既存のWindowsイメージをVirtio起動用にした状態のddイメージになった。

 これを新サーバに導入する手順。

  1. 新VPSの設定画面でカスタムインストールを選択して、Debianあたりを導入する。
    この時のパーティショニングは、
    先頭 30GB 非マウント
    第2 残量全て /にマウント
    で切っておく。

  2. 先ほどのVirtio化イメージを新VPSに流し込む。
    新VPSのコマンドラインで

    #ssh -l hoge nnn.nnn.nnn.nnn “cat /var/lib/libvirt/images/sakura.img” | dd of=/dev/vda

    hoge:Proliantのユーザ nnn.nnn.nnn.nnn:Proliantのアドレス

  3. 新VPSを再起動する。

 これで旧VPSで走っていたWindowsが完全コピーで新VPSに移動できた。
 VNCコンソールからネットワークのIPアドレス等を新VPS用に再設定する。
 システム構成が変わるので再アクティベーションが必要になる。

(790)


カテゴリー: Windows VPS   タグ: , ,   この投稿のパーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です