Un NAS DIY (très) haut de gamme ET standardisé

J'ai compilé et testé la dernière version de zfs (2.1.0) sur Ubuntu 21.04. Clairement, les gars de Ubuntu ont fait pas mal d'optim dans la version packagée, puisque j'obtiens du 190 MB/s en écriture et 980 MB/s en lecture. Je vais regarder du côté de la feature large_blocks pour augmenter le recordsize de zfs au-delà de 1 MB, il est sensé ainsi supporter jusqu'à 16 MB.
 
J'ai installé Windows 10 en sus (cela commence à me faire un bon nombre de systèmes!) et ai fait qqs tests en RAID0 logiciel puis en RAID6. Windows supporte cela par la commande New-VirtualDisk.
Une fois créé le pool par le panneau de config et avoir refusé tout formattage, renommé le pool en Toto, le tout en mode graphique dans les Paramètres/Espace de Stockage, un appel au powershell administrateur et la commande
Code:
New-VirtualDisk -FriendlyName Toto -StoragePoolFriendlyName "Toto" -NumberOfColumns 11 -ResiliencySettingName simple -UseMaximumSize -Interleave 262144
permet de voir un disque d'environ 120 TB dans le gestionnaire de disques. Une création de partition NTFS avec un bloc de 256K plus tard sur ce disque GPT, j'ai fait des tests par Atto et la partie séquentielle de CrystalDiskMark.
Atto me donne pour un fichier de 32 GB avec des IO entre 4 et 64 MB, queue = 4, d'excellents résultats en lecture/écriture, tous supérieurs à 2 GB/s en directIO et avec le write cache (1GB par défaut) de windows.
CrystalDiskMark m'indique avec un bloc de 256KB, queue = 4, un fichier de 32 GB, des I/O approchant les 2.5 GB/s.
On peut noter le fait que les disques mécaniques sont très peu bruyants, ce qui veut dire que le fichier est écrit et lu en parfait séquentiel, ce qui n'est pas le cas de xfs en version RAID0, où on entend des gratouilles.
Tout ceci me prouve en tout cas que ma machine est saine: pas de problème matériel. Et que le RAID0 de Windows est très bien exploité.

Ensuite, j'ai tenté
Code:
New-VirtualDisk -FriendlyName Toto -StoragePoolFriendlyName "Toto" -NumberOfColumns 11 -ResiliencySettingName parity -PhysicalDiskRedundancy 2 -UseMaximumSize -Interleave 262144
qui correspond à du raid6/raidz2. J'ai fait les tests sur un fichier de 4GB, cela suffisait pour voir les piêtres résultats, le cache étant de 1GB.
Les résultats de Atto en image attachée; j'ai pas eu le courage d'attendre le dernier test.
ATTO_RAID6_Windows_11disks_256Kstripe.jpg
CrystalDiskMark me donne (bloc: 256K, queue: 4, fichier: 4GB) une vitesse de 1.5 GB/s en lecture et 85 MB/s en écriture.

J'ai refait quelques tests avec un interleave à 1MB: rien de bien différent.

En conclusion, je dirai que par rapport à Windows, la version "standard" la plus récente de zfs, non optimisée par les gars de ubuntu, est légèrement plus rapide en écriture mais plus lente en lecture en ce qui concerne le RAID6.

Je vais essayer de comparer les réglages des modules kernel de ce zfs avec ceux fournis par le package d'Ubuntu 21.04.
 
J'ai un peu avancé sur zfs. Alors :
- Contrairement à ce que j'avais pensé, la version d'Ubuntu, un package basé 2.02 upgradée Kernel 5.1 n'est absolument pas spécifiquement optimisée, et n'a (quasiment) aucune différence de réglage dans les paramètres des modules Kernel. Je n'ai pas poussé jusqu'à la comparaison des 2 codes Ubuntu & Github 2.02.
- La dernière release nominative de zfs sur github, la 2.1.0 datant du 2 Juillet, est au moins aussi performante que cette version d'Ubuntu.
- La dernière version de zfs sur github, la master, qui est recommandée, a clairement un problème de performance sur des écritures de grande taille, entre 2 et 2.5x moins performante que la 2.1.0. Je vais essayer de localiser le Commit qui ralenti la master à ce point.
 
Je trouve cette discussion absolument fantastique de partage de compétences !
Je n'ai pas tout compris (ça fait trop longtemps que j'ai quitté l'informatique) mais ça donne envie de se replonger dans ces problématiques pour bien tout comprendre.


Encore bravo et merci à @ALM54