Как я могу запустить образы Rackspace локально?
Как видно из заголовка, я регулярно загружаю свои образы Rackspace для резервного копирования моего VPS, однако мне интересно, возможно ли их запускать локально на KVM (например), чтобы я мог запускать тесты для своего приложения без привязки к работе.
3 ответа
Спустя почти год после первого вопроса, я думаю, у меня есть хорошая процедура для загрузки образов Rackspace и их локального запуска под Xen на Ubuntu Precise.
Я напишу шаги здесь, так что есть простой рецепт для вас, если вы хотите попробовать его. Шаги работают для Linux/Ubuntu, по крайней мере, для других 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/ для настройки вашего сервера в качестве Xen Dom0. По крайней мере, убедитесь, что у вас установлена работающая версия 12.04 с установленными xen и xe-tools, и группа томов LVM для использования в качестве виртуальных дисков для вашего DomU. 
- Перейдите на страницу ваших серверов в облаке RackSpace ( - 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. (ПРИМЕЧАНИЕ: я работал только с большими изображениями размером 20 ГБ из стойки, и мои заметки о них. Если вы используете другой размер, вам придется соответствующим образом настроить некоторые шаги!) - 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- Обратите внимание на начальное смещение для первого раздела и размер сектора. 
- (Необязательно) Проверьте, что образ диска в порядке. Для этого мы монтируем его loopback и просто видим, что он работает. - 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- Обратите внимание на имена дисков для root и swap! 
- Обновите настройки сети для вашего 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 и одного виртуального сетевого интерфейса и моего локального сервера. После этих изменений мы должны быть готовы. Размонтировать виртуальный диск, - umount tmp,
- Создайте файл конфигурации xen для вашего импортированного DomU, - 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
Да, вы можете запустить их, гипервизор, который они используют - Xen IIRC. Вы также можете загрузить и установить Openstack и иметь собственное частное облако.
Вот хорошая ссылка на "Запуск Rackspace Cloud Server локально на Hyper-V"
http://www.sudonym.com/375/run-rackspace-cloud-server-locally-on-hyper-v