Migrera från ESXi till KVM + ZFS

Permalänk
Hedersmedlem

Migrera från ESXi till KVM + ZFS

Hej,

Detta är en uppföljning på mitt projekt att migrera från en typisk ESXi baserad serversetup till en Ubuntu KVM host med ZuL (ZFS on Linux).

Fick förfrågan i tidigare tråden att fortsätta uppdatera eftersom just KVM är ganska sällsynt här på Swec. Svarar gärna på frågor och funderingar om jag kan.

Är du intresserad så läs gärna tidigare trådar:
Hårdvarusetup: http://www.sweclockers.com/forum/122-server/1182875-bygga-ny-...
ESXi + ZFS problem: www.sweclockers.com/forum/122-server/1187165-dalig-prestanda-...

Senaste inlägget:

Skrivet av SWE|OggE:

Javisst

Jag har kört fast lite igen..

Jag vill som bekant köra min router virtuellt i KVM, det vill säga hostburken kommer ha internet direkt inpluggat i ett av nätverkskorten. Frågan är hur jag sätter upp detta, har två alternativ,

- Passthrough nätverkskortet som ska ut på internet
- Skapa en brygga i linux

Provat passthrough, vilket ger:

Failed to assign device "hostdev0" : Device or resource busy *** The driver 'pci-stub' is occupying your device 0000:06:06.0. *** *** You can try the following commands to free it: *** *** $ echo "10ec 8169" > /sys/bus/pci/drivers/pci-stub/new_id *** $ echo "0000:06:06.0" > /sys/bus/pci/drivers/pci-stub/unbind *** $ echo "0000:06:06.0" > /sys/bus/pci/drivers/pci-stub/bind *** $ echo "10ec 8169" > /sys/bus/pci/drivers/pci-stub/remove_id *** kvm: -device pci-assign,host=06:06.0,id=hostdev0,configfd=34,bus=pci.0,addr=0x3: Device 'pci-assign' could not be initialized 2013-03-09 12:48:33.963+0000: shutting down

Oavsett hur mycket jag försöker unbinda kortet så får jag bara samma fel >.>

Brygga då?
Här har jag problemet att bryggan i sig verkar behöva en ip-address för att fungera.. kopplat eth0 till br0, och sedan kopplat den virtuella routern till br0. Provat på mitt lokala nät, och både br0 och den virtuella routern tar en ip från DHCP, vilket innebär att KVM hosten är direkt kopplad mot internet, samt att det är två ip's på samma mac (lär inte ISP'n gilla)

Har testat att sätta bryggan till en manuell "bogus" IP, samt ingen IP alls, men då kommer inte routern heller ut på internet..

Någon som vet hur man sätter upp en brygga i "lager 2", samma sätt som ESX fungerar?

Mvh,

Detta löstes genom att köpa ett PCI-E anslutet intelkort, vilket fick passthough'n att fungera felfritt direkt. Min rekommenderation är helt klart att ska du köra någon form av passthough under linux, använd PCI-E anslutna grejer, kommer bespara dig mycket huvudvärk.

Jag har installerat upp runt 10 maskiner nu och satt upp bland annat en replikerad mysql, mailserver, apt-cacher proxy och backup. Funkar prima än så länge, satte upp servern "live" i fredags och ska påbörja arbetet med att migrera tjänster, hade även tänkt testa att importera en vmdk-maskin från ESXi direkt in i KVM och se hur det funkar.

Mitt nuvarande problem är att KVM hosten använder väldigt mycket ramminne, har räknat ut att mina maskiner borde ta cirka 12-13 gb, men jag har 25gb used på servern. Misstänker att det är ZFS som äter minnet, så har skapat upp:
/etc/modprobe.d/zfs.conf
och lagt in:

# Min 2048MB / Max 4096 MB Limit options zfs zfs_arc_min=2147483648 options zfs zfs_arc_max=4294967296

För att begränsa ZFS's minnesanvändning, det är tydligen tänkt att köras "ensamt" som en filserver och äter gärna upp allt minne den kan.
Ska starta om maskinen ikväll så ändringarna förhoppningsvis slår igenom.

Mvh Oscar

Permalänk
Medlem

Jag höll på att brottas med KVM och göra samma sak som dig att routa i en VM.
Jag orkade inte hålla på speciellt länge utan bytte till Vmware Workstation där jag redan visste att det fungerade utan problem. Vilket är ett alternativ om man inte vill köpa ett nytt NIC.

Visa signatur

"Datorn har ju fan mer dragningskraft än jorden. Skulle jag ramla skulle jag hamna i datorstolen & inte på golvet."

Permalänk
Medlem
Skrivet av SWE|OggE:

...
Mitt nuvarande problem är att KVM hosten använder väldigt mycket ramminne, har räknat ut att mina maskiner borde ta cirka 12-13 gb, men jag har 25gb used på servern. Misstänker att det är ZFS som äter minnet, så har skapat upp:
/etc/modprobe.d/zfs.conf
och lagt in:

# Min 2048MB / Max 4096 MB Limit options zfs zfs_arc_min=2147483648 options zfs zfs_arc_max=4294967296

För att begränsa ZFS's minnesanvändning, det är tydligen tänkt att köras "ensamt" som en filserver och äter gärna upp allt minne den kan.
Ska starta om maskinen ikväll så ändringarna förhoppningsvis slår igenom.

Mvh Oscar

Detta har jag läst någonstans att andra har haft problem med. ZFS ska ju använda minne som cache när det inte används av andra program, men just detta att det äter upp mer än vad det borde verka vara en del i ZoL som inte är ett problem i nativ ZFS-miljö. Hoppas att det hjälper att begränsa ARC'en och att inte prestandan tar för mycket stryk!

edit: Förtydligande: ZFS ska roffa åt sig mycket minne (i princip allt som finns tillgängligt i maskinen), problemet på ZoL har varit att det inte har släppt ifrån sig minnet när andra applikationer behöver det.

förtydligande
Visa signatur

Core 2 Duo still going strong!

Permalänk
Hedersmedlem
Skrivet av JZ0NiC:

Jag höll på att brottas med KVM och göra samma sak som dig att routa i en VM.
Jag orkade inte hålla på speciellt länge utan bytte till Vmware Workstation där jag redan visste att det fungerade utan problem. Vilket är ett alternativ om man inte vill köpa ett nytt NIC.

Antar det, nu vet jag inte om KVM och Workstation spelar i riktigt samma kategori, men ett intel gigabit pcie kostade ~260kr på inet så det var inte mycket att vela över

Skrivet av Madimen:

Detta har jag läst någonstans att andra har haft problem med. ZFS ska ju använda minne som cache när det inte används av andra program, men just detta att det äter upp mer än vad det borde verka vara en del i ZoL som inte är ett problem i nativ ZFS-miljö. Hoppas att det hjälper att begränsa ARC'en och att inte prestandan tar för mycket stryk!

edit: Förtydligande: ZFS ska roffa åt sig mycket minne (i princip allt som finns tillgängligt i maskinen), problemet på ZoL har varit att det inte har släppt ifrån sig minnet när andra applikationer behöver det.

Mjo, det är ett litet dilemma där, vad jag har läst så ska ZFS vilja ha cirka 1gb per 1TB disk, jag kör som bekant med 3st 1TB diskar, vilket blir 1.7 TB lagring i RAIDZ ungefär.

Efter jag satt parametrarna ovan (2gb min / 4gb max) har nu minnesanvändningen gått ner till cirka 11gb, och ett snabbt dd test visar att prestandan knappt påverkas:

oscar@eth-lab-01:~$ dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 6.53051 s, 164 MB/s

So far so good!

Permalänk
Medlem

Har för mig att man bör ge mer än 4GB RAM till ZFS om prefetch ska fungera. Kör man ZFS läscache på SSD dessutom så drar det ännu mera minne. Har du ledigt RAM så öka upp max till 6 GB eller 8 GB. Jaja, det är väl alltid en kompromiss var minnet gör mest nytta så det är väl bara att prova sig fram.

Permalänk
Hedersmedlem
Skrivet av ronnylov:

Har för mig att man bör ge mer än 4GB RAM till ZFS om prefetch ska fungera. Kör man ZFS läscache på SSD dessutom så drar det ännu mera minne. Har du ledigt RAM så öka upp max till 6 GB eller 8 GB. Jaja, det är väl alltid en kompromiss var minnet gör mest nytta så det är väl bara att prova sig fram.

Okey, drar nog upp ZFS minne lite till då, har ju mycket att hämta ifrån

Har åkt på problem med passthrough'n igen.. misstänker jag iaf. skickar jag mycket trafik via den virtuella routern över det externa intel-nätverkskortet så startar (den virtuella routern) om sig, den bara stendör och startar igen.

syslog på KVM hosten:

Mar 27 16:41:43 eth-kvm-01 kernel: [115711.305687] kvm: 1783: cpu0 unhandled rdmsr: 0xc001100d Mar 27 16:41:43 eth-kvm-01 kernel: [115711.305710] kvm: 1783: cpu0 unhandled rdmsr: 0xc0010112 Mar 27 16:41:43 eth-kvm-01 kernel: [115711.414899] kvm: 1783: cpu0 unhandled rdmsr: 0xc0010001 Mar 27 16:41:43 eth-kvm-01 kernel: [115711.426696] kvm: 1783: cpu1 unhandled rdmsr: 0xc001100d Mar 27 16:41:45 eth-kvm-01 kernel: [115713.298317] pci-stub 0000:07:00.0: irq 45 for MSI/MSI-X Mar 27 16:41:45 eth-kvm-01 kernel: [115713.298340] pci-stub 0000:07:00.0: irq 46 for MSI/MSI-X Mar 27 16:41:45 eth-kvm-01 kernel: [115713.298356] pci-stub 0000:07:00.0: irq 47 for MSI/MSI-X Mar 27 16:41:56 eth-kvm-01 kernel: [115724.411640] pci-stub 0000:07:00.0: irq 45 for MSI/MSI-X Mar 27 16:41:56 eth-kvm-01 kernel: [115724.418826] pci-stub 0000:07:00.0: irq 45 for MSI/MSI-X Mar 27 16:41:56 eth-kvm-01 kernel: [115724.418847] pci-stub 0000:07:00.0: irq 46 for MSI/MSI-X Mar 27 16:41:56 eth-kvm-01 kernel: [115724.446768] pci-stub 0000:07:00.0: irq 45 for MSI/MSI-X Mar 27 16:41:56 eth-kvm-01 kernel: [115724.446775] pci-stub 0000:07:00.0: irq 46 for MSI/MSI-X Mar 27 16:41:56 eth-kvm-01 kernel: [115724.446779] pci-stub 0000:07:00.0: irq 47 for MSI/MSI-X

0000:07:00.0 är adressen till den passthrough'ade intelkortet. Riktigt less på detta nu, trodde jag äntligen hade löst nätverksproblemet, nu får jag försöka skapa en layer 2 brygga in till maskinen istället, utan att använda passthrough. Vill inte att KVM hosten ska ha en publik ipadress ut på internet.

Permalänk

Om du ska lira brygga så kan jag ge dig en del tips då jag har mekat med KVM + ArchLinux + iproute2(för VLAN taggning m.m) och lärt mig en del på vägen.

Permalänk
Hedersmedlem
Skrivet av revellion:

Om du ska lira brygga så kan jag ge dig en del tips då jag har mekat med KVM + ArchLinux + iproute2(för VLAN taggning m.m) och lärt mig en del på vägen.

Nice! Har du någon idé om hur man kan brygga ett interface in till en gäst, så hosten i princip inte blir inblandad alls, vill ju att min virtuella router ska få en publik ipadress direkt från ISP'n, som det blir med en vanlig brygga plockar både br0 och den virtuella burken en IP'address från DHCP poolen, vilket jag vill undvika.

Tänkte testa att sätta nätverkskortet i en annan port och se om det funkar bättre med passthough...

Permalänk
Avstängd

Solaris har ju virtuella NICs.

OmniOS (Solaris distro med KVM) tillåter att du slänger upp VMs i olika Solaris Zoner (typ som Jails) och så kan du virtualisera ett gäng NICs.

Permalänk
Hedersmedlem
Skrivet av saddam:

Solaris har ju virtuella NICs.

OmniOS (Solaris distro med KVM) tillåter att du slänger upp VMs i olika Solaris Zoner (typ som Jails) och så kan du virtualisera ett gäng NICs.

Känner mig inte riktigt sugen på att byta operativ, allt annat fungerar ju som det ska men tack för tipset

Har beslutat mig för att köpa en sånhär nästa lön:
http://mini-itx.se/mpt3460d2500ccdubblalan2xcom-p-864.html?cP...

Dra in Pfsense på den så får den stå "ytterst" mot internet och agera firewall mot KVM burken

Permalänk
Medlem

Tänkte passa på att informera om att det finns ett verktyg för konventera VHD (kvm-img)filer till ras images och man kan sedan köra en DD från image filen in till en ZFS enhet eller ISCSI target eller liknande.
finns ett problem med img verktyget dock det klarar inte av filer som är större än 127GB, man kan dock montera en VHD fil i windows eller liknande och sedan suga ut datan med ett verktyg som klarar av att läsa ut disk till RAW image.

Visa signatur

Mess with the best and die like the rest.
MSI Mortar Max B450, AMD 3700x, PowerColor 5700 XT