Intel Modular Server

From Proxmox VE
Jump to: navigation, search

Introduction

Intel Modular Server (IMS) is a powerful server platform with integrated SAN. This how to describes the installation and configuration of Proxmox VE on IMS - with the support of live migration (KVM guests and containers) between compute modules.

A big thanks to Intel, sponsoring the hardware to the Proxmox VE test lab.

Before you start

Make sure you got the latest firmware on the IMS - at the time of these tests we got the firmware V5.5.

Depending on the workload, you need to clarify among all other things the following in advance:

  • Number of KVM guests, including storage requirements
  • Number of OpenVZ containers, including storage requirements
  • Backup considerations

Hardware configuration

Storage

The storage drive bay supports six 3.5" SAS/SATA or fourteen 2.5" SAS hard disk drives. We prefer the model with 14 drives as it provides more flexibility.

Note:

If you need more storage (more than 14 disks), you can connect external storage via mini SAS port, or you can connect your existing iSCSI or NFS storage.

Storage is the most important part for overall performance. So if your budget is limited, use cheaper CPU´s but never cheap and slow hard drives.

Pool1: Proxmox VE installation disk (and container storage)

  • Create a storage pool for all installation disks (for best performance, use 4 disks)
  • Create virtual drives (for best performance, use Raid10), and assign each one to a compute module as the boot drive (0)

Keep in mind, that all OpenVZ containers are also stored on these disks.

Example: Four 300GB disks and three compute modules

As we use Raid10, we have a total capacity of 600 GB, so we can assign 200 GB to each compute module for the installation and the local storage (mainly used to store containers).

Pool2: Shared LVM storage for KVM guests

By using the shared LUN feature, you can assign a virtual disk to multiple compute modules enabling live migration of KVM guests between compute modules.

This is one of the main advantages of the IMS, as you do not need an extra SAN box. No need for expensive fiber channel (FC) infrastructure or the complexity of configuration of an extra storage network for iSCSI.

  • Create a storage pool for LVM storage (for best performance, use 4 disks)
  • Create one virtual drive (for best performance, you can also use Raid10) and assign the disk to ALL compute modules as drive 1.

Example: Four 300GB disks

As we use Raid10, we have a total capacity of 600 GB, so we can use 600 GB for our KVM virtual machines.

Pool3: Backup and ISO images - NFS

  • Create a storage pool, big enough for storing the backup data and ISO images
  • Create one big virtual drive and assign it to one single compute module as the third drive (2)

Example: Three 300GB disks

We use Raid5, so we have 600 GB for backups and ISO images.

Hot spare drive

We recommend you add at least one global hot spare disk. We suggest to use identical disks on all slots.

Compute Modules

You can use up to six compute modules each one with 2 Intel Xeon processors 5500 series´s and up to 96 GB of memory.

Our test setup:

  • Three MFS5520VI
  • Each module has two Xeon E5540
  • and 12 GB memory (6 x 2 GB)

Network

Nothing special needed.

Installation of Proxmox VE

Bare-metal ISO install

By using the integrated remote console, installation can be done by mapping the ISO images to the compute modules. Note: it is recommended to install via USB Stick  as the iso redirect does not always work and is slower. See also Installation After reboot, install the latest packages on all nodes:

aptitude update && aptitude safe-upgrade
  • Proxmox VE package list:
pveversion -v

pve-manager: 1.5-8 (pve-manager/1.5/4674)
running kernel: 2.6.18-2-pve
proxmox-ve-2.6.18: 1.5-5
pve-kernel-2.6.18-2-pve: 2.6.18-5
qemu-server: 1.1-11
pve-firmware: 1.0-3
libpve-storage-perl: 1.0-10
vncterm: 0.9-2
vzctl: 3.0.23-1pve8
vzdump: 1.2-5
vzprocps: 2.0.11-1dso2
vzquota: 3.0.11-1
pve-qemu-kvm-2.6.18: 0.9.1-5

Create Cluster

Promote one server to the master and join the other nodes, see Proxmox VE Cluster

Setup the LVM disk for KVM guest

Login to the master via SSH and partition the disk:

  • Create a big single partition (sdb1)
fdisk /dev/sdb
  • Create the physical volume:
pvcreate /dev/sdb1
 Physical volume "/dev/sdb1" successfully created
  • Create the volume group 'vmdisks' (just choose a unique name):
vgcreate vmdisks /dev/sdb1
  Volume group "vmdisks" successfully created

And finally: Add the LVM Group to the storage list via the web interface.

Add-LVM-Group

Optional: Setup a NFS server on one Proxmox VE node

For small setups its quite useful to install a NFS server just on Proxmox VE (If you already have a NFS server in your network, just use the existing one).

Login to the server where the third hard disk is assigned via SSH and partition the disk:

  • Create a big single partition (sdc1)
fdisk /dev/sdc
  • Format the partition with ext3
mkfs.ext3 /dev/sdc1
  • query the UUID of the partition
blkid
  • Add the partition to your /etc/fstab (replace the UUID with yours)
nano /etc/fstab

UUID=2f1fe410-293f-4f1d-bdfb-8b45f1d3b4aa /srv ext3 defaults 0 2
  • create dir´s:
mkdir /srv
cd /srv
mkdir iso
mkdir backup
  • install nfs-server package (use the packages from lenny-backports, nfs-kernel-server >= 1.2.2-1)
aptitude -t lenny-backports install nfs-kernel-server
  • Configure nfs exports (just an example, adapt this to your network setup):
nano /etc/exports
/srv/backup     192.168.0.0/255.255.240.0(rw,sync,no_subtree_check,no_root_squash)
/srv/iso        192.168.0.0/255.255.240.0(rw,sync,no_subtree_check,no_root_squash)
  • And finally, restart NFS server:
/etc/init.d/nfs-kernel-server restart

NFS-ISO Store

Now, you can add the NFS-ISO Store via web interface.

Add-NFS-ISO-Store

Backup Store

Add the NFS-Backup Store via web interface.

Add-NFS-Backup-Store

Optional: Configure Multi-Path

The Intel modular server can be configured with two storage controllers. If one controller goes down the other one can take over. In order for fail-over to work the OS on each blade must be configured to be multipath aware.  The ProxMox 2.x bare-metal iso, based on Debian 6,  is not fully multi-path aware by default.  The following is a how-to tested on ProxMox VE 2.2. Many thanks to Tozz, Kaya, mjoconr and others on the forum for help with this!  This how-to is based on the above flex server configuration with  installation disk = sda1  shared LVM storage = sdb1  and backup/iso images = sdc1

Configure Multi-Path for ProxMox 3.x and lower

  • Install the following packages:
aptitude install multipath-tools multipath-tools-boot libfuse2 liblzma2
  • The grub packages in Debian 6 do not support multipath-tools-boot and therefore you need to install packages from Debian 7 repositories.  The following package links worked on February 18th 2013, but may need to be updated as packages change, download and install the following packages: (you can just cut and paste these in the command land to download, use dpkg -i to install)
wget http://ftp.us.debian.org/debian/pool/main/e/eglibc/multiarch-support_2.13-38_amd64.deb
wget http://ftp.us.debian.org/debian/pool/main/x/xz-utils/liblzma5_5.1.1alpha+20120614-2_amd64.deb
wget http://ftp.us.debian.org/debian/pool/main/g/grub/grub-legacy_0.97-67_amd64.deb
wget http://ftp.us.debian.org/debian/pool/main/g/grub2/grub-pc_2.00-13_amd64.deb
wget http://ftp.us.debian.org/debian/pool/main/g/grub2/grub-common_2.00-13_amd64.deb
wget http://ftp.us.debian.org/debian/pool/main/g/grub2/grub2-common_2.00-13_amd64.deb
wget http://ftp.us.debian.org/debian/pool/main/g/grub2/grub-pc-bin_2.00-13_amd64.deb
  • Find the wwid of each disk
# /lib/udev/scsi_id --whitelisted --device=/dev/sda
# /lib/udev/scsi_id --whitelisted --device=/dev/sdb
# /lib/udev/scsi_id --whitelisted --device=/dev/sdc

  • create /etc/multipath.conf  and add the wwid's and aliases for each disk. In the example below I have added an entry for the installation disk sda = system,  shared LVM Storage sdb = vmdisks and backup/iso images sdc = vzdumps.


blacklist {
        devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
        devnode "^(hd|xvd)[a-z][[0-9]*]"
        devnode "^cciss!c[0-9]d[0-9]*[p[0-9]*]"
}
devices {
        device {
        vendor                  "Intel"
        product                 "Multi-Flex"
        path_grouping_policy    "group_by_prio"
        getuid_callout          "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
        prio                    "alua"
        path_checker            tur
        path_selector           "round-robin 0"
        hardware_handler        "1 alua"
        failback                immediate
        rr_weight               uniform
        rr_min_io               100
        no_path_retry           queue
        features                "1 queue_if_no_path"
        }
}


multipaths {         
        multipath {
                 wwid    id-of-sda
                 alias   system
         }
        multipath {
                 wwid    id-of-sdb
                 alias   vmdisks
         }
        multipath {
                 wwid    id-of-sdc
                 alias  vzdumps
         }

}

  • Restart multipath
/etc/init.d/multipath-tools-boot restart; /etc/init.d/multipath-tools restart


  • Modify /etc/fstab for new multipath devices (aliases)  This is an example of my /etc/fstab, in this case my two drives are listed by UUID but they could also be listed as /dev/sda and /dev/sdc. I commented the old entries out so you can see what it looked like before the change.   Note: there is no entry for vmdisks or /dev/sdb


# <file system> <mount point> <type> <options> <dump> <pass>
/dev/pve/root / ext3 errors=remount-ro 0 1
/dev/pve/data /var/lib/vz ext3 defaults 0 1

#UUID=294b7d72-4dea-4549-97c9-4320a55f3fb5 /boot ext3 defaults 0 1
/dev/mapper/system-part1 /boot ext3 defaults 0 1

/dev/pve/swap none swap sw 0 0

proc /proc proc defaults 0 0

#UUID=777b58c2-c780-41c3-919f-3640e4f5cce6 /srv ext3 defaults 0 2
/dev/mapper/vzdumps-part1 /srv ext3 defaults 0 2
  • Re-create inittramfs
update-initramfs -u
  • Disable  UUID in /etc/default/grub
  • update Grub
update-grub
  • Reboot Server  and press ESC during GRUB.    Edit boot path  by replacing   UUID  with  /dev/mapper/system-part1  and boot system by hitting  F10
  • After the system boots up, log in and do a  "update-grub"  to save the new boot path. Reboot the server to make sure all is working. 
  • you can  see if multipath is working with the following command:
multipath -ll

the output should look something like this:

vmdisks (22226000155e33228) dm-1 Intel,Multi-Flex
size=1.1T features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
|-+- policy='round-robin 0' prio=50 status=active
| `- 0:0:0:1 sdb 8:16 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
`- 0:0:1:1 sde 8:64 active ready running
system (222980001557edea5) dm-0 Intel,Multi-Flex
size=150G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
|-+- policy='round-robin 0' prio=50 status=active
| `- 0:0:0:0 sda 8:0 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
`- 0:0:1:0 sdd 8:48 active ready running
vzdumps (222dd000155416965) dm-2 Intel,Multi-Flex
size=557G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
|-+- policy='round-robin 0' prio=50 status=active
| `- 0:0:0:2 sdc 8:32 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
`- 0:0:1:2 sdf 8:80 active ready running

  • Then for the final test:  pull out the storage controller to which the blade you just configured has affinity and see if your system still works.  Don't do this on a production system!  

Configure Multi-Path for ProxMox 4.x

  • Install the following packages:
apt-get install multipath-tools multipath-tools-boot libfuse2
  • Find the wwid of each disk
# /lib/udev/scsi_id --whitelisted --device=/dev/sda
# /lib/udev/scsi_id --whitelisted --device=/dev/sdb
# /lib/udev/scsi_id --whitelisted --device=/dev/sdc

  • create /etc/multipath.conf  and add the wwid's and aliases for each disk. In the example below I have added an entry for the installation disk sda = system,  shared LVM Storage sdb = vmdisks and backup/iso images sdc = vzdumps.


blacklist {
        devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
        devnode "^(hd|xvd)[a-z][[0-9]*]"
        devnode "^cciss!c[0-9]d[0-9]*[p[0-9]*]"
}

blacklist_exceptions {
        property "(SCSI_IDENT_.*|ID_WWN|ID_SERIAL)"
}

devices {
        device {
        vendor                  "Intel"
        product                 "Multi-Flex"
        path_grouping_policy    "group_by_prio"
        uid_attribute           "ID_SERIAL"
        prio                    "alua"
        path_checker            tur
        path_selector           "round-robin 0"
        hardware_handler        "1 alua"
        failback                immediate
        rr_weight               uniform
        rr_min_io               100
        no_path_retry           queue
        features                "1 queue_if_no_path"
        product_blacklist       "VTrak V-LUN"
        }
}


multipaths {
        multipath {
                 wwid    id-of-sda
                 alias   system
         }
        multipath {
                 wwid    id-of-sdb
                 alias   vmdisks
         }
        multipath {
                 wwid    id-of-sdc
                 alias  vzdumps
         }
}
  • Restart multipath
/etc/init.d/multipath-tools-boot restart; /etc/init.d/multipath-tools restart


  • Check if /etc/fstab contains UUID and change them for the multipath if needed (on default it is ok, but please check). My /etc/fstab contains:


# <file system> <mount point> <type> <options> <dump> <pass>
/dev/pve/root / ext4 errors=remount-ro 0 1
/dev/pve/data /var/lib/vz ext4 defaults 0 1
/dev/pve/swap none swap sw 0 0
proc /proc proc defaults 0 0
  • Re-create inittramfs
update-initramfs -u
  • Disable  UUID in /etc/default/grub
......
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
GRUB_DISABLE_LINUX_UUID=true
......
  • update Grub
update-grub
  • Reboot Server
  • After the system boots up, log in and do a  "update-grub"  to save the new boot path. Reboot the server to make sure all is working. 
  • you can  see if multipath is working with the following command:
multipath -ll

the output should look something like this:   Note: there is no entry for vzdumps as I don't save the vzdumps on my machines on the storage of IMS

vmdisks (22202000155218288) dm-1 Intel,Multi-Flex
size=1000G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
|-+- policy='round-robin 0' prio=50 status=active
| `- 0:0:0:10 sdb 8:16 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
  `- 0:0:1:10 sdd 8:48 active ready running
system (22278000155b56d9a) dm-0 Intel,Multi-Flex
size=50G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
|-+- policy='round-robin 0' prio=50 status=active
| `- 0:0:0:0  sda 8:0  active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
  `- 0:0:1:0  sdc 8:32 active ready running

  • Then for the final test:  pull out the storage controller to which the blade you just configured has affinity and see if your system still works.  Don't do this on a production system!   (Or begin to change the affinity)

Install Virtual Machines

See also: Installation

Get templates

In order to create a container, you need to get templates first - Either download them via web interface or just upload via web interface (if you got them already). You can also transfer templates directly via scp to /var/lib/vz/template/cache/ on the master server (these templates will be replicated to all cluster nodes).

Upload ISO images to the NFS-ISO Store

In order to install KVM guests, you need a installation media - we use ISO images for maximum convenience. Upload them via web interface (DVD´s cannot be uploaded, size limit) or transfer them via scp to /mnt/pve/NFS-ISO/.

Links