Virtualization with unRAID and Proxmox 3.1


Proxmox VE is a complete open source server virtualization management solution. It is based on KVM virtualization and container-based virtualization and manages virtual machines, storage, virtualized networks, and HA Clustering.

As a purely academic exercise and because I’m into virtualization, I decided to try proxmox because of the overall smaller footprint compared to other virtualization environments. Also, it’s better suited for a headless server installs. As the underlying OS (debian) is installed for you as part of the install, I found the whole install to be relatively painless.

Obviously special thanks goes out to user grumpybutfun on the unRAID forums, for creating the unRAID vhd file in the first place. See Virtualizing unRAID in KVM on openSUSE 13.1 (64Bit).

This is a quick and dirty guide and not tremendously thorough and I assumed that the user is able to copy files via SCP or WinSCP and able to use vi or nano. All in all, the proxmox Web UI is not as functional as ESXi’s or Virt-Manager’s for that matter, so some command line editing skills are necessary to change the configuration file.

I am also using an AMD cpu so some things may not entirely follow for intel users, I’ll try to indicate those differences.

Installation

Download the Proxmox VE 3.1 ISO Installer and write it to a USB flash drive, you can google the download link. Because I used Windows, I used SUSE Studio ImageWriter from here to write the iso to the usb. Just make sure your USB contains no partitions. I deleted all the partitions on my usb with the Home version of Minitool Partition Wizard, again you can google the link.

The installation is very straight forward and consists of selecting your timezone, installation disk (see partitioning below), ip address and setting a root pasword.

See here for a complete guide.

Partitioning (Hard Way)

After initial installation I did the following:

I resized the Logical Volume’s that were initially created by the proxmox installer, specially in the PVE volume group. I didn’t like how it partitioned my 120GB SSD. So I booted up with GParted and opted to work in the terminal as GParted is unable to alter Logical Volumes (at least it was in my case with the lastest gparted-live-0.17.0-4-i486.iso.

By default, the proxmox installion creates:

/dev/pve/root 
/dev/pve/swap
/dev/pve/data 

In short I did the following from a terminal window while booted from the GParted iso:

vgchange -a y (make the LVM disk visible to the kernel)
e2fsck -f /dev/pve/root (check the filesystem)
resize2fs /dev/pve/root 8G (shrink root to 8G)
resize2fs /dev/pve/swap 2G (shrink swap to 2G)
e2fsck -f /dev/pve/data (check the filesystem)
lvextend -L+40G /dev/pve/data (expand data with an addition 40G of space)
resize2fs /dev/pve/data (resize data - where VMs go - occupying the rest of Volume Group)

Leaving about 5.50 G in the VG for snapshots. I still haven’t messed around with snapshots yet, so I’m not sure if it’s too little.

Partitioning (Easy Way)

If you want to simplify your life and save some time when it comes to partitioning, you can pass arguments to the boot: prompt right before booting and avoid the above.

View post on imgur.com

The above example linux ext4 maxroot=10 swapsize=20 configures the partition filesystem to ext4 (ext3 is the default), creates a root partition of 10GB and swapsize of 20GB.

Some more options:

linux ext4 – sets the partition format to ext4. The default is ext3.
hdsize=nGB – this sets the total amount of hard disk to use for the Proxmox installation. This should be smaller than your disk size.
maxroot=nGB – sets the maximum size to use for the root partition. This is the max size so if the disk is too small, the partition may be smaller than this.
swapsize=nGB – sets the swap partition size in gigabytes.
maxvz-nGB – sets the maximum size in gigabytes that the data partition will be. Again, this is similar to maxroot and the final partition size may be smaller.
minfree=nGB – sets the amount of free space to remain on the disk after the Proxmox instillation.

Install webmin (Optional)

Download webmin from here.

Copy it via scp or winscp and install with the following from a ssh shell logged in as root:

dpkg -i webmin_1.670_all.deb

If the above complains about missing dependencies, execute the following:

apt-get -f install

Prior to that you’d probably want to run the following to update your system:

apt-get update
apt-get upgrade

Log in with your root password, as created during the installation process, at (https://IP:10000) to administer your proxmox server.

Make sure iommu is activated

Log into a ssh shell as root, if not done so already and do the following:

vi /etc/default/grub

Change:

GRUB_CMDLINE_LINUX_DEFAULT="quiet"

To:

GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"[/code]

I believe for intel it’s:

intel_iommu=on

Then:

update-grub
echo "options kvm allow_unsafe_assigned_interrupts=1" > /etc/modprobe.d/kvm_iommu_map_guest.conf
reboot

Install an unRAID VM

Create your initial VM for unRAID at https://IP:8006, of course log in as root. You will find the Create VM button at the top right corner. I’ll let you follow the wizard. This is how I configured mine:

View post on imgur.com

View post on imgur.com

Copy over grumpybutfun’s unRAID vhd file via scp or winscp to:

/var/lib/vz/images/100

Here, 100 is a Virtual Machine ID and stands for the first VM created in my case, it may be different for you. I also deleted the .qcow2 file and the line in the conf file representing the disk as it was created by the wizard. I renamed the unRAID vhd file to vm-100-disk-1.raw with the command line, not sure if that’s necessary though.

Then I modified the configuration in:

/etc/pve/qemu-server/100.conf

Compare yours with the following: The net0 (NIC mac address), usb0 (unRAID usb), hostpci0 (HBA) and cpu lines may be different in your case.

bootdisk: virtio0
cores: 1
cpu: Opteron_G5
hostpci0: 02:00.0
memory: 1024
name: unRAID
virtio0: local:100/vm-100-disk-1.raw
net0: virtio=56:74:22:0A:65:22,bridge=vmbr0
ostype: l26
sockets: 1
usb0: host=0930:6545

Configure Passthrough

Note: The hostpci0 line (device passthrough) is for my M1015, which can be found via lspci. This is necessary if you are passing in a HBA/RAID card for unRAID to use. The usb0 line is for the unRAID usb (which must have a label of UNRAID and is mandatory to get unRAID booting correctly). The usb address could be found via lsusb.

lsusb in my case:

Bus 003 Device 002: ID [b]0930:6545[/b] Toshiba Corp. Kingston DataTraveler 102 Flash Drive / HEMA Flash Drive 2 GB / PNY Attache 4GB Stick

lcpci in my case:

<strong>02:00.0</strong> Serial Attached SCSI controller: LSI Logic / Symbios Logic SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] (rev 02)

Note for Intel Users: Change your cpu from Opteron_G5 to the appropriate setting if not running an AMD processor. This can actually be done via the Web UI.

Start unRAID

Click on your unRAID VM and hit the Console button on the far right (not shown on the image below), then the Start button (you will need Java installed for the console to work on your system).

View post on imgur.com

If everything works out, you should see the following:

View post on imgur.com

Licensing

There’s a way to get rid of the nag in 3.1, but I digress. What I’m not sure about it is the ongoing support for non-subscription based installations as the enterprise repository requires a license to update from. You can uncomment the line from /etc/apt/sources.list.d/pve-enterprise.list to ensure that apt-get update doesn’t fail. All updates will be from the non-subscription repository which are publicly available I assume.

Additional Resources

Also. Here is a tutorial series I found on proxmox for noobs like me.

Good luck!

Leave a comment

Your email address will not be published. Required fields are marked *