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 :

  1. acheter un cable de remplacement pour le lecteur CD avec une prise molex intermédiaire;
  2. remplacer le lecteur CD par une cage 2"5 qui possède la même sortie Slimline SATA;
  3. 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 : Installation du SSD

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.