如何在本地运行 Rackspace 镜像?

如何在本地运行 Rackspace 镜像?

正如标题所说,我定期下载我的 Rackspace 映像来备份我的 VPS,但我想知道是否可以在 KVM 上本地运行它们(例如),这样我就可以在我的应用程序上运行测试而不会影响生产。

答案1

在提出原始问题将近一年后,我认为我已经建立了一个很好的程序来下载 Rackspace 镜像并在本地运行它们,在西恩在 Ubuntu Precise 上运行。

我将在此处写下步骤,以便您可以轻松地按照此方法操作,如果您想要尝试的话。这些步骤至少适用于 linux/Ubuntu domU,对于其他 domU 则可能有所不同。

(这些说明也发布在我们的博客上http://www.everichon.com/blog/2013/05/29/running-rackspace-images-locally/

  1. 安装 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 卷组。

  2. 转到 Rackspace Cloud 上的服务器页面 ( manage.rackspacecloud.com -> Hosting -> Cloud servers),然后选择要在本地运行的服务器。转到Images该服务器的选项卡。创建按需映像。(根据服务器的首次创建时间,按需映像将直接进入云文件或与服务器一起存储。如果映像与服务器一起存储,则必须在创建后将其移动到云文件。)

  3. 检查云文件中图像的名称。转到Hosting -> Cloud Files并打开容器cloudservers。那里应该有名为的文件myservername_YYYYMMDD_XXXXX_cloudserverZZZZZ.tar.gz.0,这就是您想要的文件。

  4. 将镜像下载到你的服务器。在 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

  5. 下载完成后,解压下载的文件(tar zxf myservername_YYYYMMDD_XXXXX_cloudserverZZZZZ.tar.gz.0)。完成后,您将获得以下文件:

    image
        -> image.vhd
        -> manifest.ovf
        -> snap.vhd
    

    image.vhd是我们感兴趣的,因为它包含来自云服务器的根分区。

  6. 为了更轻松地使用映像文件,我们将把它转换为原始磁盘映像。这是通过使用qemu-img(如果您的系统上没有,请执行sudo apt-get install qemu-utils)来完成的。要将 image.vhd 转换为更易于使用的内容,请执行qemu-img convert -p image.vhd disk.img

  7. 使用 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
    

    注意第一个分区的起始偏移量和扇区大小。

  8. (可选)检查磁盘映像是否正常。为此,我们将其挂载回送并简单地查看它是否正常工作。

    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

  9. 为你的新 DomU 创建逻辑卷和交换卷。lvcreate -L20G -n myservername-disk vg0并且lvcreate -L2G -Cy -n myservername-swap vg0初始化交换磁盘mkswap /dev/vg0/myservername-swap

  10. 将磁盘映像复制到新的逻辑卷。dd if=disk.img of=/dev/vg0/myservername-disk bs=4096 skip=256bs参数skip用于获取分区的正确偏移量。bs=512 skip=2048当然,我可以使用,但增大块大小会使复制速度更快。(512*2048 = 4096*256,因此偏移量无关紧要。)

  11. 检查逻辑卷上的文件系统(并修复任何错误),调整 fs 大小以适合 lv,然后再次检查。

    e2fsck -f /dev/vg0/myservername-disk
    resize2fs -p /dev/vg0/myservername-disk 
    e2fsck -f /dev/vg0/myservername-disk     
    
  12. 检查虚拟机中的虚拟磁盘设置。DomU 配置文件需要此设置。挂载逻辑卷。mount /dev/vg0/myservername-disk tmp然后检查 fstab 文件和 grub 文件(如果存在)menu.lst

    more tmp/etc/fstab
    more tmp/boot/grub/menu.lst 
    

    请记下根目录和交换目录的磁盘名称!

  13. 更新 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

  14. 为您导入的 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 中发现的设备名称相同的设备名称。

  15. 现在一切都准备就绪!要验证,请创建 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

相关内容