正如标题所说,我定期下载我的 Rackspace 映像来备份我的 VPS,但我想知道是否可以在 KVM 上本地运行它们(例如),这样我就可以在我的应用程序上运行测试而不会影响生产。
答案1
在提出原始问题将近一年后,我认为我已经建立了一个很好的程序来下载 Rackspace 镜像并在本地运行它们,在西恩在 Ubuntu Precise 上运行。
我将在此处写下步骤,以便您可以轻松地按照此方法操作,如果您想要尝试的话。这些步骤至少适用于 linux/Ubuntu domU,对于其他 domU 则可能有所不同。
(这些说明也发布在我们的博客上http://www.everichon.com/blog/2013/05/29/running-rackspace-images-locally/)
安装 Ubuntu precise (12.04 LTS),然后按照http://blog.heidt.biz/blog/2012/09/17/setting-up-ubuntu-12-dot-04-precise-pangolin-as-xen-dom0/将您的服务器设置为 Xen Dom0。至少确保运行 12.04 并安装 xen 和 xe-tools,以及用于 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
是我们感兴趣的,因为它包含来自云服务器的根分区。为了更轻松地使用映像文件,我们将把它转换为原始磁盘映像。这是通过使用
qemu-img
(如果您的系统上没有,请执行sudo apt-get install qemu-utils
)来完成的。要将 image.vhd 转换为更易于使用的内容,请执行qemu-img convert -p image.vhd disk.img
使用 fdisk 检查磁盘映像。(注意:我只处理过来自 rackspace 的 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
(针对 rackspace 的环境)至:
# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet dhcp
仅使用 dhcp 和一个虚拟网络接口以及我的本地服务器。完成这些更改后,我们就大功告成了。卸载虚拟磁盘,
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
答案2
是的,你可以运行它们,它们使用的虚拟机管理程序是 Xen IIRC。你还可以下载并安装 Openstack 并拥有自己的私有云。
答案3
这是关于“在 Hyper-V 上本地运行 Rackspace 云服务器”的良好链接
http://www.sudonym.com/375/run-rackspace-cloud-server-locally-on-hyper-v