正如标题所说,我经常下载我的Rackspace映像以备份我的VPS,但是我想知道是否可以在KVM上本地运行它们(例如),以便我可以在不影响生产的情况下对我的应用程序运行testing。
在原问题差不多一年的时间之后,我想我有一个很好的程序,可以在Ubuntu Precise下运行的Xen下载Rackspace镜像并在本地运行。
我会在这里写下这些步骤,所以如果你想尝试一下,那么有一个简单的方法可以让你遵循。 这些步骤至less适用于linux / Ubuntu domU,对于其他YMMV。
(这些说明也发布在我们的博客上http://www.everichon.com/blog/2013/05/29/running-rackspace-images-locally/ )
安装Ubuntu精确(12.04 LTS),并按照http://blog.heidt.biz/blog/2012/09/17/setting-up-ubuntu-12-dot-04-precise-pangolin-as- xen-dom0 /将您的服务器设置为Xen Dom0。 至less确保安装了xen和xe-tools的12.04版本以及用于DomU的虚拟磁盘的LVM卷组。
转至机架空间云( manage.rackspacecloud.com -> Hosting -> Cloud servers )上的服务器页面,然后select要在本地运行的那个。 转到该服务器的Images选项卡。 创build一个按需图像。 (根据服务器首次创build的时间,点播图像将直接转到云文件或与服务器一起存储,如果图像与服务器存储在一起,则必须在创build后将其移至云文件。
检查云文件中图像的名称。 转到Hosting -> Cloud Files然后打开容器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一样运行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是我们感兴趣的,因为它包含了cloudserver的根分区。
为了更容易处理图像文件,我们将其转换为原始磁盘映像。 这是使用qemu-img (如果你的系统没有这个function,可以使用sudo apt-get install qemu-utils )。 要将image.vhd转换为更容易处理的内容,请执行qemu-img convert -p image.vhd disk.img
使用fdisk检查磁盘映像。 (注意:我一直只使用20 GB的大型映像,我的笔记是关于它们的,如果使用其他大小,则必须相应地调整一些步骤) fdisk -l disk.img should give something如下所示:
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创build逻辑卷和交换卷。 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
检查虚拟机中的虚拟磁盘设置。 这将是您的DomUconfiguration文件所需要的。 安装逻辑卷。 mount /dev/vg0/myservername-disk tmp 。 然后检查fstab文件,(如果存在)grub menu.lst文件。
more tmp/etc/fstab more tmp/boot/grub/menu.lst
注意root和swap的磁盘名称!
更新DomU的networking设置。 在虚拟磁盘仍然安装的情况下,将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和一个虚拟networking接口和我的本地服务器。 这些变化之后,我们应该做的。 卸载虚拟磁盘, umount tmp 。
为你导入的DomU创build一个xenconfiguration文件, 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中发现的虚拟设备使用相同的设备名称。
现在一切都准备好了! 要validation,请创builddomU并通过运行xm create -c /etc/xen/myservername.cfg连接控制台
是的,你可以运行它们,他们使用的pipe理程序是Xen IIRC。 您也可以下载并安装OpenStack并拥有自己的私有云。
“在Hyper-V上本地运行Rackspace Cloud Server”
http://www.sudonym.com/375/run-rackspace-cloud-server-locally-on-hyper-v