Der PVE selbst soll auf 2x Pm1643 im RAID1 laufen. Für die beiden VMs würde ich 6 Stück PM1735 exklusiv verwenden.
Dann wäre es kein Problem einen etwas exotischeres Pool-Layout für die VMs zu verwenden.
Wie lässt sich denn der 3-way-mirror als stripe konfigurieren? Gibt es dazu ein howto? Über die GUI des PVE wird das ja wahrscheinlich nicht funktionieren?
Ist relativ einfach.
1.) mit
ls -l /dev/disk/by-id/
herausfinden was die IDs deiner SSDs sind die du nutzen willst. Ist dann sowas wie "/dev/disk/by-id/ata-INTEL_SSDSC2BA200G4_BTHV636205M3200MGN" und sollte der "/dev/sdX" Variante vorgezogen werden, weil du dann einfacher siehst welche SSD mit welcher Seriennummer denn wirklich gemeint ist, falls da z.B. mal eine ausfällt und du die austauschen musst. Außerdem ist das immer eindeutig und verweist auf die richtige SSD, selbst wenn die selbe SSD die Bezeichnund wechselt und z.B. mal als "/dev/sda" und mal als "/dev/sdb" erkannt wird.
2.) So einen Pool wo man zwei 3-fach-Spiegel stripet kann man mit einem Befehl wie dem hier erstellen:
zpool create -f -o ashift=12 DeinPoolWunschname mirror /dev/disk/by-id/SSD1 /dev/disk/by-id/SSD2 /dev/disk/by-id/SSD3 mirror /dev/disk/by-id/SSD4 /dev/disk/by-id/SSD5 /dev/disk/by-id/SSD6
3.) Mit
zpool status
kannst du dann gucken ob der Pool korrekt erstellt wurde und alles ok ist
4.) Dann ist es wichtig, dass dein Pool nie voller als 90% beschrieben wird, weil der sonst in den Panik-Modus geht. Ab grob 80% wird der Pool langsam. Ich würde da also raten für den kompletten Pool gleich zu Begin ein 80-90% Quota zu setzen, dass man garnicht erst ausversehen mehr draufschreiben kann. Da guckst du erst mit
zfs list
wie groß dein Pool ist, multiplizierst die Größe mit 0,8 oder 0,9 und das Ergebnis setzt du dann so als Quota für den Pool:
zfs set quota=1234g DeinPoolWusnchname
5.) danach würde ich für den VM-Storage ein neues Dataset erstellen:
zfs create DeinPoolWunschname/VMs
6.) dann am besten noch nach belieben dein Dataset optimieren. Ich würde z.B. atime deaktivieren oder relatime aktivieren:
zfs set atime=off DeinPoolWunschname/VMs
ODER
zfs set relatime=on DeinPoolWunschname/VMs
+
zfs set atime=on DeinPoolWunschname/VMs
.
Falls du die Kompression wechseln willst, oder Deduplication/Veschlüsselung nutzen willst würde ich das auch jetzt direkt machen, bevor du deine ersten Daten schreibst, weil eine Änderung nicht rückwirkend auf bestehende Daten angewendet werden kann.
7.) Dann ins PVE WebUI gehen und unter "Datacenter -> Storage -> Add -> ZFS" dein eben erstelltes Dataset als Storage hinzufügen. Für "ZFS Pool" dann "DeinPoolWunschname/VMs" wählen, für "ID" kannst du dir was beliebiges aussuchen wie "VM-Storage", die "Thin Provisioning" Checkbox würde ich setzen damit die VMs keinen Platz verschwenden und dann ganz wichtig unter "Block Size" den Wert eintragen, welcher als "volbocksize" benutzt werden soll. Den musst du dir halt ausrechnen. Am besten wäre wohl 2x die Blockgröße deines Pools. Also 8K falls ashift=12 verwendet wurde, 16K falls ashift=13, 32K falls ashift=14 usw.
8.) Jetzt sollte dein VM Storage laufen und dir von PVE beim Erstellen von VMs vorgeschlagen werden. Wenn du verschiedenes testen willst kannst du mit fio benchmarks machen und einfach verschiedenste Pool-Layouts austesten und vergleichen und dann das nehmen, was dir am meisten zusagt. Da du für das System einen eignenen ZFS Pool hast, kannst du da ja nach belieben deinen VM-Pool zerstören und neu erstellen, ohne da immer PVE neu installieren zu müssen.
Fast alles richtig, aber MS SQL mach geschätzt seit 10+ Jahren 64k. Deshalb auch die Empfehlung von Microsoft, NTFS mit 64k formatieren.
Ah ok. Ich hatte bisher immer nur MySQL/MariaDB benutzt. Die wollen ja 16K.
Edit:
Achso, und später beim Erstellen der VMs nicht vergessen "virtio SCSI single" zu benutzen. Und da dann die "Discard", "SSD Emulation" und "io thread" Checkboxen aktivieren, damit das mit dem Thin-Provisioning auch richtig klappt, um das das meiste aus dem Storage herauszuholen. CPU typ würde ich auch von "kvm64" auf "host" ändern sofern du nicht zwischen mehreren Nodes im Cluster migrieren willst. Und als Cache ist eigentlich "none" empfehlenswert damit der Host nicht mehrfach cachen muss, da ZFS ja schon den ARC zum cachen nimmt. Und für die virtuelle NIC wäre auch virtio empfehlenswert für bessere Performance.