既存の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
- 必要なドライバを取得する
適当なマシンで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
- mini rootを作業用に展開する
#mkdir /tmp/minirt
#cd /tmp/minirt
#gzip -d /boot/KNOPPIX/minirt.gz | cpio -i -c
- mini rootにドライバを配置する
#mkdir /tmp/minirt/modules/virtio
先ほどのドライバを /tmp/minirt/modules/virtio の中へコピーする。
- 起動スクリプトを編集する
#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
- 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等を軽くいじるだけなので、相当急いで何十単位でサイト展開するわけでなければこの手順で十分いけるかと思う。
(572)