タイトルにあるように、VPSのバックアップ用にRackspaceイメージを定期的にダウンロードしていますが、テストを実行できるようにKVM(たとえば))でローカルに実行できるかどうか疑問に思っています。愛情のない私のアプリケーション。
元の質問のほぼ1年後から、Ubuntu Preciseで実行されている Xen の下で、Rackspaceイメージをダウンロードしてローカルで実行するための適切な手順が設定されていると思います。
ここに手順を書き留めておきますので、試してみたい場合に従う簡単なレシピがあります。この手順は、少なくともlinux/Ubuntu domUで機能し、他のYMMVでも機能します。
(これらの手順は、ブログにも掲載されています http://www.everichon.com/blog/2013/05/29/running-rackspace-images-locally/ )
Ubuntu Precision(12.04 LTS)をインストールし、 http://blog.heidt.biz/blog/2012/09/17/setting-up-ubuntu-12-dot-04-precise-)に記載されている手順に従います。 pangolin-as-xen-dom0 / サーバーをXenDom0としてセットアップします。少なくとも、xenとxe-toolsがインストールされた実行中の12.04と、DomUの仮想ディスクに使用するLVMボリュームグループがあることを確認してください。
Rackspace Cloud(manage.rackspacecloud.com -> Hosting -> Cloud servers
)のサーバーページに移動し、ローカルで実行するサーバーを選択します。そのサーバーのImages
タブに移動します。オンデマンドイメージを作成します。 (サーバーが最初に作成された時間に応じて、オンデマンドイメージはクラウドファイルに直接移動するか、サーバーに保存されます。イメージがサーバーに保存されている場合は、作成後にクラウドファイルに移動する必要があります。)
クラウドファイル内の画像の名前を確認してください。 Hosting -> Cloud Files
に移動し、コンテナcloudservers
を開きます。そこにmyservername_YYYYMMDD_XXXXX_cloudserverZZZZZ.tar.gz.0
のような名前のファイルがあるはずです、そしてそれはあなたが望むファイルです。
イメージをサーバーにダウンロードします。 Ubuntu 12.04でこれを行う最も簡単な方法は、Swift
を使用することです。インストールするには、Sudo apt-get install Swift
だけです。次に、Swift -A https://auth.api.rackspacecloud.com/v1.0 -U username -K API_key download cloudservers myservername_YYYYMMDD_XXXXX_cloudserverZZZZZ.tar.gz.0
のように実行します
ダウンロードが完了したら、ダウンロードしたファイル(tar zxf myservername_YYYYMMDD_XXXXX_cloudserverZZZZZ.tar.gz.0
)を解凍します。完了すると、次のファイルが作成されます。
image
-> image.vhd
-> manifest.ovf
-> snap.vhd
image.vhd
は、クラウドサーバーからのルートパーティションが含まれているため、関心のあるものです。
イメージファイルの操作を簡単にするために、イメージファイルをrawディスクイメージに変換します。これは、qemu-img
を使用して実行されます(システムで使用できない場合は、Sudo apt-get install qemu-utils
を実行してください)。 image.vhdを操作しやすいものに変換するには、qemu-img convert -p image.vhd disk.img
を実行します。
Fdiskを使用してディスクイメージを確認します。 (注:私はラックスペースから20 GBの大きな画像しか扱っていませんが、メモはそれらに関するものです。別のサイズを使用する場合は、それに応じていくつかの手順を調整する必要があります!)fdisk -l disk.img
は次のようになります。以下:
Disk sda1.img: 20.4 GB, 20400758784 bytes
255 heads, 63 sectors/track, 2480 cylinders, total 39845232 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
disk.img1 * 2048 39845887 19921920 83 Linux
最初のパーティションの開始オフセットとセクターサイズに注意してください。
(オプション)ディスクイメージに問題がないことを確認します。このために、ループバックをマウントして、動作することを確認します。
mkdir tmp
mount -o loop,offset=1048576 disk.img tmp/
ls -la tmp
(The offset above is start for the first partition * sector size)
これにより、ディスクに問題がないことがわかります。次に、イメージをアンマウントします。 umount tmp
新しいDomUの論理ボリュームとスワップボリュームを作成します。 lvcreate -L20G -n myservername-disk vg0
およびlvcreate -L2G -Cy -n myservername-swap vg0
。また、スワップディスクmkswap /dev/vg0/myservername-swap
を初期化します。
ディスクイメージを新しい論理ボリュームにコピーします。 dd if=disk.img of=/dev/vg0/myservername-disk bs=4096 skip=256
。 bs
およびskip
引数は、パーティションの正しいオフセットを取得するためにあります。もちろん、bs=512 skip=2048
を使用することもできますが、ブロックサイズを大きくすると、コピーがはるかに高速になります。 (そして512 * 2048 = 4096 * 256なので、オフセットは関係ありません。)
論理ボリューム上のファイルシステムを確認し(エラーを修正し)、fsのサイズをlvに合わせて変更し、もう一度確認します。
e2fsck -f /dev/vg0/myservername-disk
resize2fs -p /dev/vg0/myservername-disk
e2fsck -f /dev/vg0/myservername-disk
仮想マシンの仮想ディスク設定を確認してください。これは、DomU構成ファイルに必要になります。論理ボリュームをマウントします。 mount /dev/vg0/myservername-disk tmp
。次に、fstabファイルと、(存在する場合は)grub menu.lst
ファイルを確認します。
more tmp/etc/fstab
more tmp/boot/grub/menu.lst
ルートとスワップのディスク名に注意してください!
DomUのネットワーク設定を更新します。仮想ディスクをマウントしたまま、interfaces
ファイルをローカル環境に適したものに編集します。 vi tmp/etc/network/interfaces
。私は通常、次のようなものから私のものを変更しました:
# The loopback network interface
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 184.106.XXX.YYY
netmask 255.255.XXX.YYY
gateway 184.106.XXX.YYY
dns-nameservers 173.203.XXX.YYY 173.203.XXX.YYY
auto eth1
iface eth1 inet static
address 10.179.XXX.YYY
netmask 255.255.XXX.YYY
up route add -net 10.176.XXX.YYY0 netmask 255.240.XXX.YYY gw 10.179.XXX.YYY
down route del -net 10.176.XXX.YYY netmask 255.240.XXX.YYY gw 10.179.XXX.YYY
up route add -net 10.191.XXX.YYY netmask 255.255.XXX.YYY gw 10.179.XXX.YYY
down route del -net 10.191.XXX.YYY netmask 255.255.XXX.YYY gw 10.179.XXX.YYY
(ラックスペースの環境の場合)から:
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
dhcpと1つの仮想ネットワークインターフェイスとローカルサーバーを使用するだけです。これらの変更の後、完了する必要があります。仮想ディスクumount tmp
をアンマウントします。
インポートしたDomUのxen構成ファイルvi /etc/xen/myservername.cfg
を作成し、次のように入力します。
name = "myservername"
bootloader = '/usr/lib/xen-default/bin/pygrub'
#uncomment the following if you want to boot into single user mode
#extra = " single"
vcpus = '2'
memory = '512'
#
# Disk device(s). (Use the correct mappings from step 12.)
#
disk = [
'phy:/dev/vg0/myservername-disk,xvda1,w',
'phy:/dev/vg0/myservername-swap,xvda2,w',
]
#
# Networking
#
vif = [ 'bridge=xenbr0' ]
#
# Behaviour
#
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'
繰り返しになりますが、仮想デバイスには、手順12で見つけたものと同じデバイス名を使用する必要があることに注意してください。
これですべての準備が整いました!確認するには、domUを作成し、xm create -c /etc/xen/myservername.cfg
を実行してコンソールを接続します
はい、実行できます。使用するハイパーバイザーはXenIIRCです。 Openstackをダウンロードしてインストールし、独自のプライベートクラウドを作成することもできます。
「Hyper-VでRackspaceCloudServerをローカルに実行する」に関する適切なリンクは次のとおりです。
http://www.sudonym.com/375/run-rackspace-cloud-server-locally-on-hyper-v