Proxmox-kluster med Fibre Channel

16 September, 2018

Kommer man från en virtualiseringsplattform som bestått av VMware ESXi, Hyper-V och liknande kommersiella plattformar så är det sällan ett problem att bygga ett virtualiseringskluster med delad lagring som innefattar Fibre Channel. iSCSI och NFS är överlag inte ett problem med Proxmox men Fibre Channel kan innebära större utmaningar än det rimligen borde vara.

Nyckeln till att få det hela att fungera är egentligen flera dito. Under VMware ESXi kan man exempelvis bara lägga till ett Fibre Channel-LUN på alla servrar som ska hantera virtuella maskiner och sen löser sig resten automatiskt. Har du endast en enda Proxmox-server kan du helt enkelt formattera enheten som vilken hårddisk som helst och sen lägga till den i Proxmox, men har du flera servrar som ska agera i ett kluster med failover-funktion krävs det lite mer. Denna guide förutsätter att du redan satt upp ditt kluster med allt vad det innebär.

Det finns ett stort aber med att köra den här typen av lagring i Proxmox. Till skillnad från NFS så tycks Proxmox åtminstone med mitt lätt uråldriga SAN (E610F från Promise) inte klara av att låta flera medlemmar i ett kluster komma åt och använda Fibre Channel SAN:et samtidigt via Fibre Channel. Istället är det en av medlemmarna i klustret som jobbar mot ett LUN i SAN:et via Fibre Channel och sedan delar ut detta LUN till andra medlemmar i klustret. Det finns ett stort aber i detta sammanhang och det är att utdelningen inte sker via Fibre Channel utan via ethernet, antingen i form av ett bond eller en enstaka länk. Det är viktigt att komma ihåg detta eftersom prestandan mot Fibre Channel LUN:et för de andra medlemmarna i klustret inte kommer bli optimal, men det fungerar åtminstone hjälpligt. En kommersiell virtualiseringsplattform som tidigare nämnda VMware ESXi klarar av detta utan omsvep och det hade onekligen varit önskvärt om Proxmox gjorde det samma. Jag har ännu inte testat kombinationen Proxmox och iSCSI men jag misstänker att det fungerar på samma sätt som med Fibre Channel om man har ett kluster.

Under Proxmox måste man först och främst skapa en volym med LVM på den enhet som ditt FC-lun presenterar för dig.

sgdisk -N 1 /dev/sdXX

Därefter är det dags att göra iordning LUN:et för LVM:

pvcreate –metadatasize 250k -y -ff /dev/sdXX

Slutligen är det dags att skapa den logiska volymen i LVM:

lvcreate –name namn –size XXXXG namn

Exempelvis skapade jag en volym på 4,6 terabyte med namnet vmdata01 i volymgruppen vmdata:

lvcreate –name vmdata01 –size 4600G vmdata

I det här läget är det för det mesta inga problem att lägga till volymen i Proxmox-klustret i det här läget men det finns två saker som återstår för att detta ska fungera.

Det första är att installera multipath-funktionaliteten:

apt-get install multipath-tools -y

Därefter startar du det hela och kollar om topologin för multipath ser bra ut:

multipath -ll

Om din volym inte syns i klustret eller inte kan läggas till får du göra det manuellt:

pvesm add lvm vmdata01 –vgname vmdata01

Det sista du kan behöva göra är att starta om den eller de servrar i klustret som är anslutna till ditt SAN via Fibre Channel.

Efter detta borde du kunna migrera virtuella gäster mellan dina servrar i klustret utan problem.