Die Vorgeschichte:
Ich nutze Proxmox in einer Testumgebung um die Praxistauglichkeit für unsere Kunden herauszufinden. Begonnen habe ich mit Version 2 und verfolge die Entwicklung seitdem, in der Hoffnung, dass sich eine regionalere Alternative zu Microsoft etablieren könnte. Das Konzept der Kombination von Software RAID auf ZFS Basis und gleichzeitiger Virtualisierungbasis finde ich sehr interessant.
Dazu habe ich 3 Server mit Proxmox aufgesetzt und rüste diese regelmässig nach bis zur aktuellen Version.
Die Hardware:
DG77MK mit I5 3470 und 16GB RAM mit 4x 320GB SATA HDD (ZFS RAIDZ1 keine Komprimierung) Proxmox 5.1
DG77MK mit I7 3770 und 16GB RAM mit 4x 320GB SATA HDD (ZFS RAIDZ2) Proxmox 5.0
Supermicro X9-SCM_F mit XEON 1230 und 16GB RAM und 4x 500GB SATA WE RE (ZFS RAIDZ2) Proxmox 4
Die Test VM:
- ist auf allen Geräten vorhanden:
- Windows 7 mit virtio Treibern 0.1.141 auf ZFS (test als raw und qcow2)
root@pve:~# qm config 100
balloon: 0
bootdisk: virtio0
cores: 4
ide2: local:iso/virtio-win-0.1.141.iso,media=cdrom,size=309208K
memory: 4196
name: W7x64SP1
net0: e1000=0A:B9:63:E8:E5:B5,bridge=vmbr0
numa: 0
ostype: win7
scsihw: virtio-scsi-pci
smbios1: uuid=f0d8646e-f2da-4e14-a8c5-b354836e690f
sockets: 1
unused0: local-disks:100/vm-100-disk-1.qcow2
unused2: local-disks:100/vm-100-disk-3.raw
vga: std
virtio0: local-zfs:vm-100-disk-1,cache=none,mbps_rd=900,mbps_wr=300,size=100G
Das Problem:
Nun starte ich auf der Maschine oben mit der Konfiguration "no cache" oder "directsync" das Tool ATTO, um die Performance zu messen. Das führt zu bei ca. der Hälfte des Tests mit der Standardeinstellung zu einem Komplettabsturz des jeweiligen Proxmox Servers. Das führte auch dazu, dass einer der Server nach einigen Experimenten den ZFS Pool repariert hat und dadurch einige Zeit nicht ansprechbar war.
Das Verhalten hatte ich auf allen Geräten mit derselben Maschine.
Sonstige Informationen:
Im übrigen enthält die /var/log/messages keinerlei Hinweise zum Fehler, weswegen ich vermute das das ZFS mit den Ein und Ausgaben aus der VM nicht klarkommt und den Zugriff blockiert.
Ich habe auch versucht die Maschine mit einer raw oder qcow2 Datei zu betreiben. Die Schreib- Performance war aber zu schlecht, da DIRECT_IO nicht verfügbar war.
Der Workaround:
Die einzigste Lösung die ich bisher gefunden habe ist die Begrenzung des Schreib und Lesedurchsatzes auf 300MB/s Schreiben und 900MB/s Lesen. Ich vermute aber, dass es Szenarios auf gut belebten Server gibt, bei denen diese Massnahme nicht ausreicht.
Die Performance beim Schreiben mit aktiviertem Write Through oder Write back ist allerdings sehr schlecht.
Hier der Vergleich:
Writethrough:
no cache mit aktivierter Begrenzung auf 300MB/s Schreiben und 900MB/s Lesen:
Es gab Durchläufe ohne Abstürze, aber die Performance bricht komplett ein:
Der gleiche Test nochmal nach Neustart der Windows 7 Maschine führte zum Absturz:
Meine Vermutung:
Ich bin noch nicht kundig genug, um die speziellen Stellschrauben des ZFS Dateisystems zu verstehen und habe bisher auch keine zutreffenden Informationen im Netz gefunden.
Die Schreib und Lesegeschwindigkeit ist utopisch für die Hardware und ich denke das bei diesem Test der RAM der Maschine gefüllt wird. Ich nehme an das irgendein Schreibcache volläuft und dadurch ZFS abstürzt und die Maschine mitreisst.
Fragen:
Wie bekomme ich das System mit aktiviertem "no cache" in dieser Konstellation stabil?
Wie kann ich den Cache begrenzen? Mit welchen Variablen,Werten könnte man spielen, um hier eine Verbesserung zu erhalten?
Ich nutze Proxmox in einer Testumgebung um die Praxistauglichkeit für unsere Kunden herauszufinden. Begonnen habe ich mit Version 2 und verfolge die Entwicklung seitdem, in der Hoffnung, dass sich eine regionalere Alternative zu Microsoft etablieren könnte. Das Konzept der Kombination von Software RAID auf ZFS Basis und gleichzeitiger Virtualisierungbasis finde ich sehr interessant.
Dazu habe ich 3 Server mit Proxmox aufgesetzt und rüste diese regelmässig nach bis zur aktuellen Version.
Die Hardware:
DG77MK mit I5 3470 und 16GB RAM mit 4x 320GB SATA HDD (ZFS RAIDZ1 keine Komprimierung) Proxmox 5.1
DG77MK mit I7 3770 und 16GB RAM mit 4x 320GB SATA HDD (ZFS RAIDZ2) Proxmox 5.0
Supermicro X9-SCM_F mit XEON 1230 und 16GB RAM und 4x 500GB SATA WE RE (ZFS RAIDZ2) Proxmox 4
Die Test VM:
- ist auf allen Geräten vorhanden:
- Windows 7 mit virtio Treibern 0.1.141 auf ZFS (test als raw und qcow2)
root@pve:~# qm config 100
balloon: 0
bootdisk: virtio0
cores: 4
ide2: local:iso/virtio-win-0.1.141.iso,media=cdrom,size=309208K
memory: 4196
name: W7x64SP1
net0: e1000=0A:B9:63:E8:E5:B5,bridge=vmbr0
numa: 0
ostype: win7
scsihw: virtio-scsi-pci
smbios1: uuid=f0d8646e-f2da-4e14-a8c5-b354836e690f
sockets: 1
unused0: local-disks:100/vm-100-disk-1.qcow2
unused2: local-disks:100/vm-100-disk-3.raw
vga: std
virtio0: local-zfs:vm-100-disk-1,cache=none,mbps_rd=900,mbps_wr=300,size=100G
Das Problem:
Nun starte ich auf der Maschine oben mit der Konfiguration "no cache" oder "directsync" das Tool ATTO, um die Performance zu messen. Das führt zu bei ca. der Hälfte des Tests mit der Standardeinstellung zu einem Komplettabsturz des jeweiligen Proxmox Servers. Das führte auch dazu, dass einer der Server nach einigen Experimenten den ZFS Pool repariert hat und dadurch einige Zeit nicht ansprechbar war.
Das Verhalten hatte ich auf allen Geräten mit derselben Maschine.
Sonstige Informationen:
Im übrigen enthält die /var/log/messages keinerlei Hinweise zum Fehler, weswegen ich vermute das das ZFS mit den Ein und Ausgaben aus der VM nicht klarkommt und den Zugriff blockiert.
Ich habe auch versucht die Maschine mit einer raw oder qcow2 Datei zu betreiben. Die Schreib- Performance war aber zu schlecht, da DIRECT_IO nicht verfügbar war.
Der Workaround:
Die einzigste Lösung die ich bisher gefunden habe ist die Begrenzung des Schreib und Lesedurchsatzes auf 300MB/s Schreiben und 900MB/s Lesen. Ich vermute aber, dass es Szenarios auf gut belebten Server gibt, bei denen diese Massnahme nicht ausreicht.
Die Performance beim Schreiben mit aktiviertem Write Through oder Write back ist allerdings sehr schlecht.
Hier der Vergleich:
Writethrough:
no cache mit aktivierter Begrenzung auf 300MB/s Schreiben und 900MB/s Lesen:
Es gab Durchläufe ohne Abstürze, aber die Performance bricht komplett ein:
Der gleiche Test nochmal nach Neustart der Windows 7 Maschine führte zum Absturz:
Meine Vermutung:
Ich bin noch nicht kundig genug, um die speziellen Stellschrauben des ZFS Dateisystems zu verstehen und habe bisher auch keine zutreffenden Informationen im Netz gefunden.
Die Schreib und Lesegeschwindigkeit ist utopisch für die Hardware und ich denke das bei diesem Test der RAM der Maschine gefüllt wird. Ich nehme an das irgendein Schreibcache volläuft und dadurch ZFS abstürzt und die Maschine mitreisst.
Fragen:
Wie bekomme ich das System mit aktiviertem "no cache" in dieser Konstellation stabil?
Wie kann ich den Cache begrenzen? Mit welchen Variablen,Werten könnte man spielen, um hier eine Verbesserung zu erhalten?