Denhär hjälpte mig att synka två träd efter restore:
robocopy d:\temp2\ d:\skarpserver /e /xo /l
2012-10-08 den 12:35 (Svammel)
Denhär hjälpte mig att synka två träd efter restore:
robocopy d:\temp2\ d:\skarpserver /e /xo /l
2010-05-31 den 16:53 (EMC Clariion, Oracle VM Server, Svammel)
Mycket spännande! Clariion med Flare 26 eller högre (på cx500 är 26 det högsta som kan installeras!) så finns det stöd för ALUA, med andra ord så kan även den inaktiva pathen till ett LUN användas för access.
Till skillnad från aktiv / passiv där all access via ”fel” path refuseras så omdirigeras alla accesser till ”rätt” inom cx500-an om man använder ALUA. Naturligtvis kostar det prestanda att accessa via fel path, och är man inte uppmärksam så sker en trespass vilket kan få kostsamma följder för andra LUN på samma anslutning eller i värsta fall att LUN:et ping-pongas mellan SP:er beroende på vilken server som accessar LUN:et mest.
Jag har vänt ut-och-in på Internet i min jakt på den optimala konfigureringen av multipath för ALUA, och det verkar som om man i princip inte behöver ändra speciellt mycket i konfigurationsfilen /etc/multipath.conf. En intressant åsikt om ALUA är att man inte ska låta den få styra helt, så därför så ser min multipath.conf ut såhär:
defaults {
user_friendly_names yes
}blacklist {
devnode ”^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*”
devnode ”^(hd|xvd|vd)[a-z]*”
}# Make sure our multipath devices are enabled.
blacklist_exceptions {
wwid ”*”
}devices {
device {
vendor DGC
product .*
product_blacklist LUNZ
path_grouping_policy group_by_prio
path_checker tur
no_path_retry queue
prio_callout ”/sbin/mpath_prio_alua /dev/%n”
failback immediate
features ”1 queue_if_no_path”
hardware_handler ”1 emc”
}
}multipaths {
multipath {
wwid 3600xxxxxxxxxxxxxxxxxxxxxxxxxde11
alias boot
}
multipath {
wwid 3600xxxxxxxxxxxxxxxxxxxxxxxxxdf11
alias OVS
}
}
Det inställningar som skiljer är ”path_checker” som istället för ”alua” har ”tur” samt att ”hardware_handler” har ”1 emc” istället för ”1 alua”. Av någon outgrundlig anledning så finns inte ”1 alua” i OVM så det får helt enkelt stå kvar vid ”1 emc” för alternativet är att det blir ”0” och hur jag än letat så fann jag ingen information om vad detta innebär.
Värt att notera är att aliasen som finns utpekade i konfig-filen funkar, men inte för ”boot” LUN:et. Den listas fortfarande som /dev/mpath/mpath0 till skillnad för aliaset för OVS LUN:et som förväntat listas som /dev/mpath/OVS. Knepigt värre, men huvudsaken är att det funkar 🙂
Vill man se om / ifall inställningarna ”tagit” så kan man starta ett kommandoskal för multipath:
# multipathd -k
Här visar kommandot ”show config” huruvida och vilka inställningar som gäller.
Lite matnyttig info från EMC:
2010-05-08 den 21:31 (EMC Clariion, Installation, Svammel, XenServer)
Det var inte en enkel eller självklar operation visade det sig. I alla fall inte om man som jag utgår från Citrix XenServer och försöker sätta sig in i hur det är uppbyggt. Eftersom jag kan noll om Linux så började jag där jag stod: med XenServer.
Citrix har visserligen lagt till stöd för dm-multipath för åtkomst till Storage Repository (SR), men det gäller inte för själva bootningen av XenServer. Vad ska man med ett redundant SAN till om måste ha kvar lokala hårddiskar? Nej, jag gav mig fasen på att detta *måste* gå att få att fungera annars är Linux inte moget för affärskritiska installationer.
Det tog inte lång stund innan jag hittade att i alla fall RedHat kan och har alldeles föredömligt enkel installation av sin Linux (RHEL) för bootning via SAN. Det är ypperligt i och med att Citrix bygger XenServer på CentOS, vilket i sin tur är en klon av RHEL. Tyvärr så måste Citrix ha missat att denna funktionalitet är i allra hägsta grad väsentlig, för det är lögn i h-e att få igång boot via SAN om man samtidigt vill att bootdisken ska vara multipathkapabel.
Visserligen går det alltså bra att installera XenServer på ett LUN som presenteras av BIOS på HBA, men bara för att LUN-et presenteras som en lokal hårddisk så är den inte alls skyddad av multipath. Citrix Xenserver går fetbort med andra ord, oavsett om det är DELL’s paketerade och för-licensierade eller Citrix egen variant.
Så jag vidgade mina vyer och funderade ett tag på att installera XenServer från CentOS, alltså skapa en helt egen installation. Eller att återigen uppta mina försök med Opensolaris. Inget av alternativen var särskilt lockande, egen komposition skulle innebära att jag mister Citrix nästan ypperliga administrationsverktyg XenCenter och Opensolaris är lite i limbo nu sen Oracle köpte SUN.
Oracle ja. Då kom jag på att dom hade upprört Linuxvärlden för något år sen när dom klonade RHEL (CentOS?) och skapade en egen Linuxvariant: Unbreakable Linux. För övrigt är det den enda Linuxplattform som Oracle stödjer för installation av sin välrenommerade databasserver. Och att dom dessutom efter mycket om och men numera stödjer installation av databasservern på sin egen hypervisor, byggd på Xen.
Oracle sitter alltså numera på en egen välsupportad Linuxdistribution, en egen välsupportad hypervisor samt ett av de bästa (om inte det bästa!) Unixoperativsystemet: Solaris. Dessutom köpte dom upp och lade ner VirtualIron, även den byggd på Xen, till förmån för sin egen distribution av XenServer. Och som om det inte vore nog så äger Oracle numera både MySQL, målet för min utflykt i virtualiserings-djungeln, samt VirtualBox, den enligt mig bästa klientvirtualiseringsmiljön.
Så jag tänkte att om OVM duger för Oracle så kan det knappast vara fy skam. I och med att Oracle tidigare inte tillhandahöll egen hårdvara så måste deras Linux / XenServer distribution fungera på de flesta stora HW leverantärernas servrar. Att Oracle främst förknippas med stora installationer borde innebära att det här med fibrechannel, SAN, multipath, etc. är kända och väldokumenterade företeelser.
Efter lite säkning fick jag napp! EMC har alldeles nyligen skapat ett dokument som steg-för-steg visar hur man sätter upp Oracle VM (OVM, Oracles XenServerdistribution) med multipath och bootning från deras Clariion CX SAN: http://www.emc.com/collateral/hardware/white-papers/h6904-deploying-oracle-vm-clariion-wp.pdf
Bingo! Det var exakt detta jag behövde. En stabil och välpolerad paketering av XenServer som är gjord med tanke på hög tillgänglighet, dessutom väldokumenterad och det bästa av allt: graaatis! 🙂
Jag laddade hem OVM och började genast plocka isär installations CD-n för att se om den kunde bootas via PXE istället. Även detta visade sig vara väldokumenterat: http://itnewscast.com/chapter-4-oracle-vm-server-sizing-installation-and-updates#Oracle_VM_Server_PXE_Kickstart_Installation
I princip så packade jag upp installations CD skivan till en mapp (http://minserver/boot/ovm) på min webserver och lade till ett nytt menyalternativ i bootmenyn för pxelinux så var det hela klart för testning.
Även om dokumentationen inte alls stämde med vad jag tillslut lyckades snickra ihop så var den en mycket god hjälp på vägen. Det tog faktiskt mindre än två timmar från det att jag ”upptäckte” OVM tills det att installationen bootade via PXE.
Tyvärr tog min tur slut där. Även om själva bootningen via PXE var en smal sak att få igång så hamnade jag i trubbel i och med att installationen inte fattade ett jota av mina LUN-er och misslyckades hela tiden med att rensa / skapa partitioner.
Trots detta bakslag så gav jag mig inte. Själva bootningen och loggningen under uppstart var det den snyggaste (och då menar jag inte snygg såssom estetisk med flashiga färger) och mest polerade som jag har sett hittills. OVM verkade helt enkelt vara för bra för att jag skulle ge upp redan. Så jag lusläste EMC’s dokumentation och på sidan 10 stod det klart och tydligt:
”…you will need the linux mpath option during the initial installation, because Oracle VM Server supports enabling DMMP during installation.”
Äntligen! Nu gällde det bara att para ihop detta magiska kommando med PXE bootning så skulle alltså installationen kunna flyta på såsom jag ville från början. Nästa steg var alltså att återgå till dokumentet om PXE installation och sy ihop allt. När jag läste dokumentationen så upptäckte jag nästa grej som befäste min tro på OVM: möjlighet till prekonfigurerad och därmed automatiserad installation med hjälp av Anaconda/Kickstart.
Detta var verkligen, verkligen ett stort steg framåt i jämförelse med den futtiga och begränsade ”answerfile.xml” som Citrix Xenserver har att erbjuda. En titt i dokumetationen för Kickstart samt exemplen på sidan för OVM / PXE visade att möjligheterna är om inte helt så nästan oändliga: http://fedoraproject.org/wiki/Anaconda/Kickstart.
Dokumentationen för Anaconda visade sig även den innehålla guldkorn: http://fedoraproject.org/wiki/Anaconda_Boot_Options
Under mina försök med att automatisera installationen av Citrix XenServer mha answerfile.txt blev jag bara frustrerad över att det resulterade i att eth0 pga PXE bootning(?) inte blev konfigurerad trots inställningar i answerfile-en. I jämförelse med OVM lyser det verkligen igenom att Citrix XenServer inte riktigt är redo för enterpriseinstallationer såsom Citrix vill hävda.
Det intressantaste i mitt tycke var möjligheten att kunna peka ut vilket av nätverkskorten som skulle användas för installation efter PXE bootning, nämligen parametern ”ks=bootif”. Denna inställning talar om för Anaconda att den ska använda nätverkskortet med MAC-adressen som pekas ut av parametern BOOTIF, som i sin tur tydligen sätts av pxelinux om man i dess konfigurationsfil sätter parametern ”IPAPPEND 2”.
Det hela resulterade alltså i att följande rader lades till i filen ”pxelinux.cfg/default” i TFTP servern:
LABEL OVM
MENU LABEL ^O Oracle VM Server Install
KERNEL http://minserver/boot/ovm/images/pxeboot/vmlinuz mpath
IPAPPEND 2
INITRD http://minserver/boot/ovm/images/pxeboot/initrd.img ksdevice=bootif ks=http://minserver/boot/ovm/kickstart.cfg
Själva filen ”kickstart.cfg” innehåller följande:
# Kickstartfil för Oracle VM Server
install
url –url http://minserver/boot/ovmlang en_US.UTF-8
keyboard sv-latin1
timezone –utc Europe/Stockholmnetwork –device eth0 –noipv6 –bootproto dhcp
network –device eth1 –noipv6 –bootproto static –ip=192.168.99.99 –netmask=255.255.255.0firewall –enabled –port=21:tcp –port=22:tcp –port=53:udp –port=53:tcp –port=80:tcp –port=2049:tcp –port=5900-5950:tcp –port=8002:tcp –port=8003:tcp –port=8899:tcp –port=7777:tcp –port=6389:tcp
selinux –disabledauthconfig –enableshadow –enablemd5
rootpw –iscrypted XXXXXXXXXXovsagent –iscrypted XXXXXXXXXX
ovsmgmntif eth0# Partitionera hårddisken utan lokal SR (bortkommenterad)
clearpart –all –initlabel –drives=mapper/mpath0
part /boot –asprimary –fstype ext3 –size=100 –ondisk=mapper/mpath0
part / –fstype ext3 –size=3072 –ondisk=mapper/mpath0
#part /OVS –fstype ocfs2 –size=1024 –grow –ondisk=mapper/mpath0
part swap –recommended –ondisk=mapper/mpath0
bootloader –location=mbr –dom0_mem=543 –driveorder=mapper/mpath0%packages –excludedocs
@office
@admin-tools
@editors
@text-internet
@gnome-desktop
@dialup
@core
@base
@games
@java
@base-x
@graphics
@printing
@sound-and-video
@ovs-virtualization
@graphical-internet
tftp
bridge-utils
squashfs-tools%post
# Sätt på SNMP
chkconfig snmpd on# Skapa parameter för serverns IP adress (S_IP)
eval `ifconfig eth0 | awk -F ”[: ]+” ‘NR==2 {print ”export S_IP=” $4}’`# Hämta konfigurationsfil och skapa parametrar
cd /tmp
wget http://minserver/boot/ovm/hostnames.txteval `grep ”DOMAIN=” hostnames.txt | awk -F ”[= \r]” ‘{print ”export S_DOMAIN=” $2}’`
eval `grep ”CONTACT=” hostnames.txt | awk -F ”[= \r]” ‘{print ”export S_CONTACT=” $2}’`
eval `grep ”SPA=” hostnames.txt | awk -F ”[= \r]” ‘{print ”export S_SPA=” $2}’`
eval `grep ”SPB=” hostnames.txt | awk -F ”[= \r]” ‘{print ”export S_SPB=” $2}’`
eval `grep ”$S_IP=” hostnames.txt | awk -F ”[= \r]” ‘{print ”export S_HOSTNAME=” $2}’`
# Sätt serverns namn
sed -i -e ”s/HOSTNAME=.*$/HOSTNAME=$S_HOSTNAME.$S_DOMAIN/” /etc/sysconfig/network
rm -f /var/log/HostIdFile.txt
# Hämta och installera EMC Navisphere Agent
cd /tmp
wget http://minserver/boot/ovm/emc/NaviHostAgent-Linux-32-x86-en_US-6.29.5.0.66-1.i386.rpm
rpm -Uvh NaviHostAgent-Linux-32-x86-en_US-6.29.5.0.66-1.i386.rpm# Skapa en agentID.txt som talar om hur Navisphere ska kommunicera med Clariion
echo $S_HOSTNAME.$S_DOMAIN > /agentID.txt
echo $S_IP >> /agentID.txt# Ändra konfigurationsfil för Navisphere Agent så den visar rätt i Navisphere Manager
sed -i -e ”s/Navisphere Agent$/$S_HOSTNAME.$S_DOMAIN/” /etc/Navisphere/agent.config
sed -i -e ”s/John.*$/$S_CONTACT/” /etc/Navisphere/agent.config
# Hämta och installera EMC admsnap kommandot
cd /tmp
wget http://minserver/boot/ovm/emc/admsnap-2.9.0.0.8-0.i386.rpm
rpm -Uvh admsnap-2.9.0.0.8-0.i386.rpm# Ändra hosts filen
echo $S_IP $S_HOSTNAME.$S_DOMAIN $S_HOSTNAME >> /etc/hosts
# Starta Navisphere Agent
/etc/rc.d/init.d/naviagent start
Det som skiljer denna fil från en ”standardinstallation” är att jag lagt till TCP port 6389 för att EMC’s Navisphere Manager ska kunna ha kontakt med min Clariion samt att jag inte låter den skapa en lokal SR i och med att denna ska ligga på SAN-et och att jag vill att SNMP ska startas i samband med serverstart.
Avslutningsvis så hämtar den EMC Navisphere Agent och snapadm verktyget, installerar dessa och låser upp kommunikationsvägen till EMC Clariion SP-erna samt skapar en agentID.txt fil med information om hur Navisphere ska kommunicera med Clariion.
Ersätt XXXXXXXXXX i filen ovan med en MD5 krypterad sträng för de lösenord som du vill ha. MD5 strängen skapas enklast med följande kommando:
# grub-md5-crypt
Den frågar dig efter lösneordet två gånger och återkommer med den MD5 krypterade strängen.
Ersätt Y.Y.Y.Y och Z.Z.Z.Z med IP adressen för SPA respektive SPB i EMC SAN-et.
2010-04-27 den 13:10 (Svammel)
Denna blogg används för att samla alla mina äventyr kring installation och hantering av mina servrar.
Utgångspunkten är ett rack fylld med 13 DELL servrar och en EMC Clariion CX fiber SAN, allt sammankopplat med 2st. Gb switchar och 2st. fiberswitchar, säkrat med 2 st. UPS:er, styrd med 2 st. PDU:er och övervakad med en KVM/IP switch. Vissa delar är nya, andra är begagnade och några är fådda 😀
Målet är att ha en fullt redundant, fjärrhanterbar och ”alltid” tillgänglig servertjänst som tillhandahåller websidor med hjälp av PHP och MySQL.
Verktygen för att uppnå målet begränsas av att det hela inte får kosta något utöver det som redan finns. Detta är en utmaning i sig men något som jag verkligen ser fram emot att bevisa, om inte annat så bara för migsjälv.
Så om datateknik intresserar dig och du klarar att följa mina irrfärder så är du välkommen att hänga med på mina äventyr. 🙂