Here is how I ran a copy of my Rackspace cloud server locally on my Hyper-V 2008 R2 Server. Why would you want to do that you ask? Well, there are many reasons. For example, I want to run all my applications in a test/staging environment before I push them live. I want to test all updates to my servers before I push them out live, testing large processes out without wasting money on CPU/bandwidth before running them live, etc. It is very nice to have a near exact copy of what you are running on rackspace cloud servers locally.
Part of the problem was I didn’t have any spare servers laying around that I could install linux and Xen on but I already had a Hyper-V server. This would allow me to run a linux VM, but how do you get a Rackspace cloud server backup running in Hyper-V.
First, Download a copy of the OS you are running for your host machine. For example, my rackspace cloud server is running Centos 5.5. So I will download the install DVDs from CentOS 5.5 download
Second, download a copy of your server backup. To do that, you need to make sure you have Cloud Files backup turned on for you Cloud Servers. There was no option to enable it when I was looking, so I had to write up a ticket requesting them to turn it on. It took about 3 days or so for them to enable it, but once it was enabled I could make backups of my cloud servers and they were copied to cloud files. Once you have backups to cloud files enabled, and you have a backup in there you can download, you can download the backup off of the cloud files admin website. Or if you have a program like jungle disk setup, I believe that would work as well.
This would probably work for other virtualization environments or linux distros as well, but you will have to piece together your own instructions in place of the Hyper-V and CentOS part.
Lets start setting up our Virtual Machine
Open Hyper-V, Select New-> Virtual Machine
- Give it a name, save it where you want
- Give it as much memory as you want
- Leave networking set to “Not Connected” for now
- Create a virtual hard disk, defaults are fine
- Select “Install an operating system from a boot CD/DVD-ROM” and select the ISO for the OS you downloaded above.
- and Finish
Next, Right click on your new VM and click settings
Select Network Adapter, then remove it.
At the top, select Add Hardware, choose Legacy Network Adapter and click add. Then select the network you wish to add it to. The Rackspace VMs are connected to 2 networks by default, one public and one private, if you wish to have the same setup, you will want to add 2 legacy network adapter. We removed the synthetic network adapters since linux would have some trouble loading the drivers by default. You could add the integration services to load them later on, but Legacy Network adapters will work just fine. Once done, click ok.
Start the new VM.
I’ll walk through the setup for CentOS 5.5, but if you used a different OS, you can follow along and the setup should be similar.
Once loaded, Hit enter for graphical mode
You can test the CD media if you want, but I’ll skip that part.
Ok, accepts all the defaults, if it asks to initialize this drive, erasing ALL DATA click yes.
For partitioning your hard drive select Create custom layout
First, figure out how large you want your swap partition to be. From what I can gather in Rackspace it is usually double the amount of RAM you have dedicated to the VM. I have a 2GB VM so I will create a 4GB (4096MB) swap partition.
Lets create the partitions:
- Click New
- Mount Point: /
- for Size you will want to make it as large as you can but leaving room for your swap partition. So for me it is: 130046 (Free Space) – 4096 (Swap Partition) = 125950.
- Click OK
Check how much free space you have left. Mine is just shy of 4096, it is 4094, so good enough.
- Click New
- For File System Type, Select swap
- For Size, insert the free space you have left, 4094 is mine.
- Click OK
Choose the defaults, and continue through entering your root password.
For software, you want to uncheck everything. Select Customize now and continue unchecking everything. Go through all the sections and make sure nothing is installed, we want a completely plain nothing installed server.
Then click next twice to start the install. Once done, click reboot.
Ok, now once its back online, login using your root credentials. Assuming you setup the networking right in Hyper-V, you should be able to type ifconfig to see the ipaddress of your VM.
We are going to need to sftp and ssh into the VM. So grab yourself a copy of putty and Filezilla so you can login and make changes. Technically you don’t need putty, you could do this throught the Hyper-V console, but it will make things easier if you want to copy and paste stuff from the website.
Open putty, for Hostname type the IP address of your VM. Click open. It will probably pop up a Security Alert. Click yes. Login with your root credentials.
We need to make a folder for our backup to go. You can put yours in a different location, but if you do, just make sure you change that location in the rest of the tutorial.
Leave the putty window open, since we will come back to it.
Open Filezilla and open the Site Manager
- Click New Site, and give it a name.
- Fill in Host with the IP address of your VM, and use Port 22.
- Select Servertype: SFTP.
- Select Logontype: normal
- Select User: root
- Password: whatever your root password is
- Click Connect
- It might ask you to trust the computer. Click OK.
- On the right side browse to /root/server
- On the left side browse to your Cloud Server (Cloud Files) backup that you downloaded from before. Then copy the backup to the VM.
Now back in putty.
ln -s / /root/server/image cd /root/server tar xvpzf Your-cloud-server-backup-name.tar.gz.0
That will put your backup over the top of the base linux installation. Depending on the size of your backup, this might take a while.
If you see anything like this:
tar: ./image/usr/local/bin/php-config: time stamp 2010-07-08 03:55:01 is 8677 s in the future
It’s probably because the computer clock in the VM is incorrect. You can reset the clock by typing:
(that is MonthDayHourMinuteYear)
for example, date 070806002010
Then you can run the tar command again if you like. There is no harm running it multiple times as it will just keep overwriting the files.
The VMs are currently setup for virtual SCSI disks, since we are using virtual IDE we need to change a few things
Edit these files:
replace all sda with hda
replace all sda with hda
Now, we need to fix the networking, for the first network adapter:
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /root/ifcfg-eth0.bak vim /etc/sysconfig/network-scripts/ifcfg-eth0
I’m using a DHCP network, so I will change the network to DHCP, if you needs statics, just change the static IP.
DEVICE=eth0 BOOTPROTO=static IPADDR=173.xxx.xxx.xxx NETMASK=255.255.255.0 ONBOOT=yes
DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes
For the second network adapter:
cp /etc/sysconfig/network-scripts/ifcfg-eth1 /root/ifcfg-eth1.bak vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1 BOOTPROTO=static IPADDR=10.xxx.xxx.xxx NETMASK=255.255.224.0 ONBOOT=yes
DEVICE=eth1 BOOTPROTO=dhcp ONBOOT=no
If you want to enable the second network adapter on boot, just put a yes in there for ONBOOT.
Change the gateway:
NETWORKING=YES HOSTNAME=whatever-you-have-yours-set-to GATEWAY=173.xxx.xxx.xxx
NETWORKING=YES NETWORKING_IPV6=no HOSTNAME=whatever-you-want-your-test-environment-set-to
After reboot, you should have a functional copy of your rackspace server running locally on Hyper-V.
Note: If you have ip addresses set in your applications/firewall they will most likely be pointing to your live rackspace server, so you may want to edit those before playing around in this environment.