RAIDZ aus vier Platten (3x 2TB und 1x 3TB)

cklahn

New Member
Jan 3, 2024
25
2
3
Hallo Forum,
ich habe einen älteren Server mit einer Backplane für vier SATA-Platten und einem Adaptec-RAID-Controller im HBA-Modus.

Bestückt habe ich den Tray mit 3x 2TB und 1x 3TB Platten. PVE läuft auf einem ZFS-Mirror auf 2 SSDs. Im GUI des PVE wollte ich nun ein ZFS RAIDZ aus den vier Platten anlegen und das scheitert mit der Info, dass das RAID mit unterschiedlichen Plattengrößen angelegt werden sollte.
Ich hätte gedacht, dass die 3TB einfach wie eine 2TB-Platte behandelt wird und das RAIDZ1 dann mit 6TB fertig wäre.

Wie kann ich das Problem lösen? Bitte keine Antwort: Kauf eine vierte 2TB-Platte :-).

Vielen Dank im Voraus.

MfG
Christoph
 
Wie kann ich das Problem lösen?
Auf der Kommandozeile.

man zpool-create erklärt wie das geht, wie üblich mit dem trockenen Auflisten der Möglichkeiten. Besser ist wohl, wenn du dir ein Beispiel suchst.

----
Mal sehen...

Du verwendest ja am besten die Links in "/dev/disk/by-id/", ich verwende hier mal Pseudo-Festplatten mit GB statt TB nur für diesen Test = erstellen von vier block devices:
Code:
~# zfs  create -V 2G  pbspool/testarea/2tba
~# zfs  create -V 2G  pbspool/testarea/2tbb
~# zfs  create -V 2G  pbspool/testarea/2tbc
~# zfs  create -V 3G  pbspool/testarea/3tbd
Erstellen eines Pools, das provoziert die bekannte Fehlermeldung:
Code:
~# zpool create  mixedsizeraidz  raidz   /dev/zvol/pbspool/testarea/2tba /dev/zvol/pbspool/testarea/2tbb /dev/zvol/pbspool/testarea/2tbc  /dev/zvol/pbspool/testarea/3tbd
invalid vdev specification
use '-f' to override the following errors:
raidz contains devices of different sizes
Dann eben mit Gewalt:
Code:
~# zpool create -f  mixedsizeraidz  raidz   /dev/zvol/pbspool/testarea/2tba /dev/zvol/pbspool/testarea/2tbb /dev/zvol/pbspool/testarea/2tbc  /dev/zvol/pbspool/testarea/3tbd

Ergebnis:
Code:
~# zpool list -v mixedsizeraidz
NAME                             SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
mixedsizeraidz                  7.50G     3M  7.50G        -         -     0%     0%  1.00x    ONLINE  -
  raidz1-0                      7.50G     3M  7.50G        -         -     0%  0.03%      -    ONLINE
    zvol/pbspool/testarea/2tba  1.99G      -      -        -         -      -      -      -    ONLINE
    zvol/pbspool/testarea/2tbb  1.99G      -      -        -         -      -      -      -    ONLINE
    zvol/pbspool/testarea/2tbc  1.99G      -      -        -         -      -      -      -    ONLINE
    zvol/pbspool/testarea/3tbd  2.99G      -      -        -         -      -      -      -    ONLINE

~# zfs list mixedsizeraidz
NAME             USED  AVAIL  REFER  MOUNTPOINT
mixedsizeraidz  2.00M  4.84G   512K  /mixedsizeraidz


Sofern die Platten vorher wirklich leer waren (notfalls eben zappen), entstehen dabei auf jeder Platte zwei Partitionen:
Code:
~# fdisk -l /dev/zvol/pbspool/testarea/2tba
Disk /dev/zvol/pbspool/testarea/2tba: 2 GiB, 2147483648 bytes, 4194304 sectors

Device                             Start     End Sectors Size Type
/dev/zvol/pbspool/testarea/2tba1    2048 4175871 4173824   2G Solaris /usr & Apple ZFS
/dev/zvol/pbspool/testarea/2tba9 4175872 4192255   16384   8M Solaris reserved 1

Nachtrag: ich empfehle für Blechkonstruktionen immer ein "Special Device" zu integrieren, und zwar von Anfang an. Dazu braucht man allerdings zwei freie NVMe/SSDs...
 
Last edited:
Standardmethode sieht dann auch so aus, dass man auch den vier Festplatten Partitionen anlegt mit derselben Größe Punkt und daraus dann ein ZFS Pool generieren lässt. Das ZFS special device ist für HDDs ein Must Have, sonst hat man keinen Spaß an dem geringen IOPS. Es wirkt alles sehr zäh.
 
  • Like
Reactions: UdoB
  • Like
Reactions: Johannes S and news
Großartig. Hat funktioniert. Der Parameter -f war entscheidend. Danach über Datacenter als Storage eingehängt und alles ist super. Vielen Dank an Euch.

Gruß
Christoph
 
  • Like
Reactions: UdoB