Skapa gemensam OVS på SAN

OVS är den gemensamma storage repository (SR) där alla Oracle VM (OVM) i samma storage pool (SP) kan komma åt sina / varandras virtuella maskiner (VM). OVS länkas på varje server under roten som en länk till /var/ovs/mount/<OCFS2 UUID>.

Oracle valde här att använda sig av sitt eget clusterfilsystem OCFS2 och vad jag har sett hittills så fungerar det alldeles utmärkt. Installationen och konfigurationen är smidig och ”det bara funkar”.

Om man installerar OVM utan att låta den skapa en lokal OVS så kan man göra det i efterskott. I mitt fall så installeras OVM på servrarna utan lokal hårddisk där varje server istället tilldelas ett LUN från SAN:et. Installationsscriptet partitionerar / formatterar och installerar OVM på den, dock utan att låta installationsprogrammet skapa en ”lokal” OVS eftersom jag vill han en gemensam för alla servrar. Kruxet är att jag inte kan låta installationsscriptet skapa /OVS/ automatiskt eftersom jag inte vet hur man tar reda på om OVS LUN:et redan är uppsatt. 😦 Det får bli en uppgift för en annan dag…

Jag skapade ett 100 GB stort LUN på SAN:et för OVS och tilldelade detta LUN till alla servrar som ska vara med i samma SP. Det är viktigt att boot LUN:et har SCSI ID 0 och att OVS LUN:et får samma SCSI ID (förslagsvis 1) på alla servrar! Alla servrar har alltså förutom sitt eget boot LUN även tillgång till det gemensamma OVS LUN:et.

I installationsscriptet för OVM har jag angett WWID:t för OVS LUN:et så att multipath namnger den som ”OVS” när multipathd startar. Efter att den första servern har installerat OVM så ska OVS skapas, denna server blir master i OCFS2 clustret. Börja med att kolla att multipath kan se alla LUN som den ska:

# multipath -ll
mpath0 (3600xxxxxxxxxxxxxxxxxxxxxxxxxde11) dm-0 DGC,RAID 5
[size=20G][features=1 queue_if_no_path][hwhandler=1 emc][rw]
\_ round-robin 0 [prio=2][active]
\_ 0:0:1:0 sdd 8:48  [active][ready]
\_ 1:0:0:0 sdf 8:80  [active][ready]
\_ round-robin 0 [prio=0][enabled]
\_ 0:0:0:0 sdb 8:16  [active][ready]
\_ 1:0:1:0 sdh 8:112 [active][ready]
OVS (3600xxxxxxxxxxxxxxxxxxxxxxxxxdf11) dm-4 DGC,RAID 5
[size=100G][features=1 queue_if_no_path][hwhandler=1 emc][rw]
\_ round-robin 0 [prio=2][active]
\_ 1:0:1:1 sdi 8:128 [active][ready]
\_ 0:0:0:1 sdc 8:32  [active][ready]
\_ round-robin 0 [prio=0][enabled]
\_ 0:0:1:1 sde 8:64  [active][ready]
\_ 1:0:0:1 sdg 8:96  [active][ready]

Som det syns så kallas boot LUN:et för ”mpath0” och OVS LUN:et för ”OVS”, precis som det beställts i /etc/multipath.conf. Att boot LUN:et behåller sitt defaultnamn ”mpath0” beror på att jag vill att filen /etc/multipath.conf ska vara identisk på alla servrar.

Formattera OVS devicen med OCFS2:

# mkfs.ocfs2 -T datafiles -N 6 /dev/mpath/OVS

Parametern ”-T datafiles” anger att OCFS2 ska optimera filsystemet för datafiler och parametern ”-N 6” anger hur många noder som ska accessa filsystemet.

Sen ska SR skapas:

# /opt/ovs-agent-latest/utils/repos.py -n /dev/mpath/OVS

Den återkommer med en lång UUID harang, notera denna för senare bruk. Nu ska SR:et initieras:

# /opt/ovs-agent-latest/utils/repos.py -i

Sätta detta SR som root SR genom att ange dess UUID:

# /opt/ovs-agent-latest/utils/repos.py -r <OCFS2 UUID>

När detta är klart kan man lista vilka SR som finns:

# /opt/ovs-agent-latest/utils/repos.py -l

SR:et är nu klar att användas och ska nu länkas in. Troligtvis finns det en katalog /OVS som då ska flyttas undan:

# mv /OVS /OVS.org

Sen ska en länk skapas till SR, återigen behövs UUID:

# ln -nsf /var/ovs/mount/<OCFS2 UUID>/ /OVS

Nu ska SR:et vara skapad, formatterad, initierad och klar. För att lägga till de andra servrarna i SP:n och på så sätt låta dom komma åt på SR:et kan OVMM användas, den gör all nödvändig konfigurering av OCFS2.

Konfigurationsfilen för OCFS2 ligger i /etc/ocfs2/cluster.conf, där listas alla servrar som accessar filsystemet.

Filen /etc/ovs-config anger vilket NIC som ovs-agent använder för kommunikation.

Filen /etc/ovs-info innehåller versionsinformation om OVS och Xen

Filen /etc/ovs/repositories.options ska man tydligen inte fippla i, det sköts av ovs-makerepo.

Filen /etc/ovs-agent/agent.ini innehåller inställningar för ovs-agent där man bl.a. sätter om / ifall SSL ska användas för kommunikation mellan servrar samt lösenordet för detta.  Vill man inte fippla i filen kan man använda sig av /opt/ovs-agent-latest/utils/config_agent.py som ställer ledande frågor om lösenord, IP adresser för åtkomst, etc.

Ifall man vill rensa en server från att ha varit med i en server pool:

# service stop ovs-agent
# rm -rf /etc/ovs-agent/db
# service start ovs-agent

# /opt/ovs-agent-latest/utils/repos.py –new /dev/sdb1
# /opt/ovs-agent-latest/utils/repos.py –root <OCFS2 UUID>

Då ska /OVS vara rensad och klar med allt som ska 🙂

Lämna en kommentar