La deuxième partie de cette série d’article décrira l’installation matérielle ainsi que celle de l’OS et surtout la configuration des disques.

Installation matérielle

L’installation matérielle est relativement aisée. Le boitier est exigu mais avec un peu de bon sens, de patience et de rigueur, l’installation de tout les éléments se fait relativement facilement. Il faut néanmoins faire attention à deux points :

  • Il faut dévisser la face arrière de la carte RAID, la carte ne contenant uniquement des connecteur internes, cela ne devrait pas poser de problèmes. Attention à ne pas utiliser de carte PCI avec des ports externes sur ce boiter (cartes réseaux, cartes SATA avec ports e-SATA, …), ce n’est tout simplement pas possible.
  • Les câbles SATA provenant des racks en façades sont trop longs, il faut donc essayer de laisser le maximum de longueur dans la première moitié du boitier (derrière la plaque sur laquelle est vissée la carte mère).

Lors du premier démarrage, première mauvaise surprise : le boitier est silencieux mais le ventilateur qu’Intel a mis sur son chipset est bruyant alors que le radiateur est froid. La solution retenue a été simple : mise en place d’une résistance entre le ventilateur et la prise sur la carte mère. Zalman vend aussi des pentiomètres qui auraient pu faire l’affaire.

Installation de l’OS

L’OS retenu est FreeBSD dans sa version 8.0 (pour l’instant encore en RC) : cette version apporte, entre autres, la dernière version du support ZFS (qui pour l’occasion est estampillée stable).

Après plusieurs essais infructueux (sur le serveur mais aussi sur des VMs), deux conclusions s’imposent :

  • Le boot sur une partition ZFS est plus qu’aléatoire, cette fonctionnalité instable est donc abandonnée
  • La carte SATA Promise n’est pas bootable, les disques (ou array RAID) n’étant pas reconnus par le BIOS de la carte mère, il est impossible des les ajouter à la séquence de boot

La solution suivante a donc été retenue :

  • Utilisation d’un disque dur 2 pouces 1/2 pour l’OS : ce disque est branché directement sur la carte mère, il est donc bootable. J’ai choisi un 160GB qui prenait la poussire chez moi mais n’importe quelle taille supérieure à 8 GB devrait normalement faire l’affaire. Nous verrons dans un second temps que ce surplus de place peut être utilisé à bon escient.
  • Utilisation des deux disques 3 pouces 1/2 pour les données : ces disques seront intégrés à un RAID-Z. La place utilisable sera la même qu’en mirroring. Cependant, il sera possible d’ajouter des disques supplémentaires à chaud ce qui est bien plus pratique que devoir trouver une solution pour stocker les données pendant que l’array est détruit puis reconstruit.

Je ne détaillerai pas l’installation de FreeBSD : la documentation actuellement disponible sur la toile couvre déjà très bien ce sujet. De plus, la version 8.0 n’introduit aucun changement dans l’installeur. Le lecteur moins exigeant sur les fonctionnalités de la solution et qui n’aurait pas envie de se prendre le chou de comprendre comment tout ce beau monde fonctionne, pourra se tourner sur FreeNAS qui offrira des fonctionnalités un cran en dessous de la solution décrite mais suffisantes dans bien des cas. La suite de l’article détaillera la configuration de ZFS et le prochain article traitera l’installation des différents logiciels utiles au bon fonctionnement du NAS.

Configuration de ZFS

Tout d’abord, il convient d’ajouter quelques optimisations au fichier /etc/sysctl.conf afin de s’assurer que ZFS (qui tourne en mode kernel) ait suffisamment de ressources :

kern.maxfiles=65536
kern.maxfilesperproc=32768
kern.maxvnodes=200000

Ensuite nous allons créer, un pool RAID-Z nommé zpool_data et contenant /dev/ad6 et /dev/ad8 :

pool create zpool_data raidz ad6 ad8

Afin de pouvoir utiliser cet array, nous allons devoir créer un file system. C’est là que ZFS devient utile : plusieurs file systems peuvent cohabiter dans le même pool avec possibilité de mettre en place une hiérarchie. Nous allons donc créer plusieurs file system : un pour les documents, un autre pour les media qui contiendra un file system pour les vidéos et un autre pour les musiques.

zfs create zpool_data/documents
zfs create zpool_data/medias
zfs create zpool_data/medias/musiques
zfs create zpool_data/medias/videos

Afin de bien paramétrer les différents file systems, il convient de bien cerner les spécificités des données stockées sur le file system :

  • Le contenu de documents est très important mais ne prendra que peu de place. Il peut donc être intéressant d’en augmenter le nombre de copies
  • Le contenu de medias peut être regénérer facilement en rippant à nouveaux les supports physiques. Une seule copie suffit donc.
  • Les medias rippés sont déjà compressés alors que les documents ne le sont pas. Il peut donc être intéressant d’activer la compression uniquement pour les documents
  • Les vidéos risquent de prendre beaucoup d’espace. Cependant, lorsque les disques seront quasiment plein, on préféra utiliser l’espace restant pour les documents (plus importants) et pour la musique (plus pratique pour la synchronisation avec les appareils mobiles). La mise en place de quota et de reservation s’impose.
  • Les sommes de contrôles sur les documents sont très importantes et ne consommeront pas beaucoup de ressources car les fichiers seront petites. Elles seront moins importantes et consommeront beaucoup de ressources sur les données rippées. Nous allons donc les désactiver pour les médias et utiliser un meilleur algorithme sur les documents.

Nous allons donc mettre en place une compression sur documents uniquement et demander à ZFS de stocker trois copies des documents.

zfs set compression=on zpool_data/documents
zfs set copies=3 zpool_data/documents

Nous allons pré-réserver 100 GB pour les documents et 200 GB pour les musiques.

zfs set reservation=100g zpool_data/documents
zfs set reservation=200g zpool_data/medias/musiques

Nous allons maintenant mettre un quota de 600GB pour les videos.

zfs set quota=600g zpool_data/medias/videos

Enfin nous allons supprimer les checksums pour les medias et demander à ZFS d’utiliser fetcher4 pour les documents (par défaut ZFS utilise fletcher2). Nous allons profiter de la hiérarchisation pour appliquer à medias une directive qui sinon aurait du être appliquée à videos et à musiques.

zfs set checksum=off zpool_data/medias
zfs set checksum=feltcher4 zpool_data/documents

Nous avons donc configuré ZFS afin qu’il s’adapte à nos contraintes, pour l’administration de ZFS au jour le jour, il peut être utile de garder dans un coin la ZFS Cheatlist. Le lecteur qui souhaite aller plus loin pourra commencer par lire le ZFS Evil Tuning Guide.

Partager cet article :
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • HackerNews
  • LinkedIn
  • Netvibes
  • Slashdot
  • Twitter
  • viadeo FR
  • Wikio FR