Installation et ZFS
May 29, 2017
Suite à l’article Un R710 à la maison
Mise en place du SSD
Afin de disposer de l’intégralité des disques dur pour le RAID, j’ai récupéré un ancien SSD. Il sera connecté à l’un des deux ports SATA de la carte mère, l’autre étant occupé par le lecteur CD. Le serveur ne dispose pas de baie 2"5, il sera placé à l’avant, dans l’espace disponible entre le lecteur CD et le contrôleur de l’afficheur de façade.
Bricolage d’un câble d’alimentation USB SATA
Problème : mon serveur ne dispose pas d’alimentation SATA en façade. Un seul connecteur, propriétaire de section carré, permet d’alimenter le lecteur CD. Pour récupérer une seconde alimentation on pourrait :
- acheter un cable de remplacement pour le lecteur CD avec une prise molex intermédiaire;
- remplacer le lecteur CD par une cage 2"5 qui possède la même sortie Slimline SATA;
- récupérer une arrivée 5V depuis le port USB interne de la carte de l’afficheur de façade.
Le câble Dell avec la prise molex étant à plus de 50€, j’ai préféré la solution (3), rapidement exécuté à l’aide d’une rallonge molex-sata, d’un vieux périphérique USB -en l’occurence un récepteur de clavier sans fil- et d’un peu de gaine thermo-rétractable.
Petite photo pour illustrer tout ça :
Remplacement du contrôleur RAID : 8087 et LSI
Seconde étape : replacer la carte PERC 6/i par un HBA (Host Bus Adapter) qui va servir d’aggrégateur SAS. Après quelques recherches, j’ai acheté une LSI 9211-8i sur EBay, un modèle recommandé pour ZFS, ainsi qu’une paire de câbles 8087 à 8087 (miniSAS) de 80cm. L’ensemble a été installé sans soucis dans le boitier.
Installation de ZFS
Situation de départ :
~ # lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 111,8G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 107,6G 0 part /
└─sda3 8:3 0 3,7G 0 part [SWAP]
sdb 8:16 0 3,7T 0 disk
sdc 8:32 0 3,7T 0 disk
sdd 8:48 0 3,7T 0 disk
sde 8:64 0 3,7T 0 disk
sdf 8:80 0 3,7T 0 disk
sdg 8:96 0 3,7T 0 disk
sr0 11:0 1 1024M 0 rom
ZFS on Linux est disponible sur les dépôts Debian. La doc :
man zpool
J’ai choisi d’appeler mon volume raid :
mkdir /raid
Création d’un volume monté sur /raid
en raidz2 (RAID6 zfs)
zpool create -m /raid raid raidz2 sdb sdc sdd sde sdf sdg
Deux options intéressantes pour zpool
-m mountpoint
-n dry run
Ma première tentative a échoué
zpool create -n -m /raid raid raidz2 sdb sdc sdd sde sdg
invalid vdev specification
use '-f' to override the following errors:
/dev/sdc does not contain an EFI label but it may contain partition
information in the MBR.
/dev/sdd does not contain an EFI label but it may contain partition
information in the MBR.
/dev/sdg does not contain an EFI label but it may contain partition
information in the MBR
En réalité ZFS refuse de réutiliser des disques qui pourrait avoir des partitions contenant des
données. Le mieux est de procéder à une analyse disque par disque avec fdisk -l
, puis les
re-partitionner avec les commandes g (create GPT)
et w (write)
Le zpool créé, on peut vérifier que l’on a bien la capacitée attendu dans le pool :
# zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
raid 21,8T 972K 21,7T - 0% 0% 1.00x ONLINE -
# zpool status raid
pool: raid
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
raid ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0
sdg ONLINE 0 0 0
errors: No known data errors
C’est important, j’avais oublié un disque la première fois et zfs est incapable de rajouter un disque dans le vdev une fois celui-ci initialisé.
Bolidage matériel des disques
Les commandes smartctl
et hdparms
permettent respectivement de surveiller et modifier le
comportement des disques, comme l’arrêt programmé de la rotation en cas d’innactivité prolongée
via hdparm -S 242 /dev/sd[b-g]
(pour 1h avant la veille sur tout les disques). Leur manuels
sont très détaillés.