タグ別アーカイブ: qemu

KNOPPIXをVirtio(virtio_blk)=さくらVPS新プラン上で動作するようにする – VPSでddによるイメージフルバックアップ環境設定

 既存のLinux GRUB上からKNOPPIXを起動する手順で配置したKNOPPIXを起動しようとすると新さくらのVPS上では”Could not mount disk to /mnt-system.”エラーが出て起動できない。
 これは、KNOPPIXのmini rootにVirtioドライバが組み込まれていないためであるので、mini rootを修正してVirtio_blkから起動できるようにする。

 基本的な作業環境は、先の手順でKNOPPIXを配置した環境。
 KNOPPIXは6.7.1日本語版CD

  1. 必要なドライバを取得する
    適当なマシンでKNOPPIXを起動して以下のファイルをコピーする。
    /KNOPPIX/lib/modules/3.0.4/kernel/drivers/virtio/virtio.ko
    /KNOPPIX/lib/modules/3.0.4/kernel/drivers/virtio/virtio_ring.ko
    /KNOPPIX/lib/modules/3.0.4/kernel/drivers/virtio/virtio_balloon.ko
    /KNOPPIX/lib/modules/3.0.4/kernel/drivers/virtio/virtio_pci.ko
    /KNOPPIX/lib/modules/3.0.4/kernel/drivers/block/virtio_blk.ko

  2. mini rootを作業用に展開する

    #mkdir /tmp/minirt
    #cd /tmp/minirt
    #gzip -d /boot/KNOPPIX/minirt.gz | cpio -i -c

  3. mini rootにドライバを配置する

    #mkdir /tmp/minirt/modules/virtio

    先ほどのドライバを /tmp/minirt/modules/virtio の中へコピーする。

  4. 起動スクリプトを編集する

    #vi /tmp/minirt/init

    ドライバの組み込みとスペシャルファイルの作成設定
    KNOPPIX 6.7.1の場合355行(KNOPPIXロゴ下load_modules呼出下)]

    insmod /modules/virtio/virtio.ko
    insmod /modules/virtio/virtio_ring.ko
    insmod /modules/virtio/virtio_balloon.ko
    insmod /modules/virtio/virtio_pci.ko
    insmod /modules/virtio/virtio_blk.ko
    mknod /dev/vda b 251 0
    mknod /dev/vda1 b 251 1
    mknod /dev/vda2 b 251 2
    mknod /dev/vda3 b 251 3
    mknod /dev/vda4 b 251 4
    mknod /dev/vda5 b 251 5
    mknod /dev/vda6 b 251 6
    mknod /dev/vda7 b 251 7
    mknod /dev/vda8 b 251 8
    mknod /dev/vda9 b 251 9

    仮想デバイスのマウント設定
    KNOPPIX 6.7.1の場合622行]

    elif ! findknoppix $(listpartitions ‘hd[a-z]’ ‘hd[a-z][0-9]*’ ‘scd[0-9]*’ ‘sr[0-9]*’ ‘sd[a-z]’ ‘sd[a-z][0-9]*’); then

    elif ! findknoppix $(listpartitions ‘hd[a-z]’ ‘hd[a-z][0-9]*’ ‘scd[0-9]*’ ‘sr[0-9]*’ ‘sd[a-z]’ ‘sd[a-z][0-9]*’ ‘vda’ ‘vda[0-9]’); then

    if [ -d /sys/bus/usb/drivers/usb-storage ]; then
    for i in 1 2 3 4 5 6 7 8 9 10; do
    message -n -e “\r${CRE}${BLUE}${WAITFORUSB}${NORMAL}”
    sleep 2

    findknoppix $(listpartitions ‘scd[0-9]*’ ‘sr[0-9]*’ ‘sd[a-z]’ ‘sd[a-z][0-9]*’) && break

    findknoppix $(listpartitions ‘scd[0-9]*’ ‘sr[0-9]*’ ‘sd[a-z]’ ‘sd[a-z][0-9]*’ ‘vda’ ‘vda[0-9]’) && break

  5. mini rootを再パッケージして配置する
    # cd /tmp/minirt
    # find . | cpio -c -o | gzip -c > /boot/KNOPPIX/minirt.gz

 この手順で、/boot/KNOPPIX/minirt.gz イメージがVirtioのvdaデバイスから起動できるようになったので、従来の手順同様にGRUBからKNOPPIXを選択すれば新さくらのVPSでもKNOPPIXを起動できるようになる。
 これで本体OSを止めてKNOPPIXから起動できるようになるので、従来のddイメージコピーで安全にフルコピーがとれるようになる。
 さくらのVPS間でのdd over sshでのイメージコピーは7~9MB/s程度のレートで転送できるので、先頭20GBのみの転送で使用すればダウンタイムは1時間以下である。
 新規でさくらのVPSの環境を構築する場合にも、イメージバックアップを利用したい場合には、最初にカスタムインストールを行って、先頭に/と/bootパーティションを押し込んで、/homeを別途切っておいたほうがダウンタイムを押さえられる(/homeは後からscp等でコピーする)

1ディスクデバイス上の先頭にパーティションを切った場合、ddのbs(ブロックサイズ)オプションとcount(ブロック数)オプションを組み合わせて、bs * countバイトだけコピーできる。

 イメージバックアップを行う場合、セクタ換算で処理するために、200GB中10GBしか使用していなくても200GBの転送が発生するが、田中社長ブログにあるrsyncの方法によれば実際に使っている容量しか転送しないため、相対的に転送処理時間が長くなる可能性があるが、KNOPPIXを経由してイメージバックアップすると完全複製なので、旧サーバの上物が完全移行できる。
 クラウドのように同構成のサーバを複数展開したい場合、1サーバをセットアップしてイメージバックアップを展開用サーバに保存して、VPSを任意に追加してイメージを入れていくことでVPSでも横展開が楽に行える。

 この利用パターンで、エリア毎にDBの設定レコードだけが異なるサイト群を立ち上げるのに、1サイトにシステムを展開してイメージ展開している。
 新規サイトの展開時間はネットワークの転送速度で決まるが、20GBのみ切り出したシステムでは1サイト40分程度の作業時間で転送できる。 1からセットアップするのに比べれば速いが、クラウドに比べると遅い感じもする。
 並列に展開できるので、寝る前にVPS5個位展開開始してやると、朝には展開完了していて、管理画面から再起動をかけてifcfg等を軽くいじるだけなので、相当急いで何十単位でサイト展開するわけでなければこの手順で十分いけるかと思う。

(60)


カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | タグ: , , , , , , | 4件のコメント