Un serveur personnel avec ZFS

Ca fait quelques temps désormais que je souhaitais faire un retour d’expérience sur le montage d’un serveur personnel. Nous allons tout d’abord étudier les contraintes d’un tel serveur et les solutions applicatives que nous pouvons proposer.

Le premier objectif d’un serveur personnel est de disposer d’un ordinateur qui permettra de rendre un certain nombre de services sur son réseau de domicile. Ces services peuvent être variés en fonction des envies et des motivations de chacun. Des exemples de services sont DHCP, DNS, Pare-feu, NFS, HTTP et bien d’autres. L’objectif secondaire inavoué, mais non moins important, est la disposition d’une machine permettant de « bidouiller » à loisir.

Objectif

Dans mon cas, l’objectif était de disposer d’une capacité de stockage convenable afin de pouvoir y stocker de nombreuses sauvegardes diverses et variées mais aussi de pouvoir héberger quelques services associés tels que NFS et HTTP. N’ayant plus que du Linux ou du MacOS, CIFS ou Samba ne m’intéressaient pas. Le besoin en puissance est donc relativement limité.

Contraintes

Les contraintes pour ce type de serveur sont cependant nombreuses. Tout d’abord, il est nécessaire que ce serveur soit assez silencieux. J’ai la possibilité de le stocker dans un placard et/ou dans un cagibi mais le problème est qu’il m’est impossible d’y amener un connexion Internet en câblé. Sa localisation sera donc sur une étagère ou entre le canapé et le mur. Le silence est donc un facteur contribuant à une non volonté d’extermination de la part de ma fiancée. Ensuite, il est nécessaire que ce serveur consomme relativement peu d’électricité. L’électricité, ça coûte cher et donc il faut en consommer le moins possible, c’est aussi simple que cela.

De plus, il faut que ce serveur ait des proportions réduites. L’espace entre le mur et le canapé est assez réduit de même pour la place sur l’étagère. Une tour moyenne sera donc bien trop grande pour ces contraintes. Je souhaitais également utiliser du ZFS pour ce serveur afin de ne pas avoir à faire du RAID logiciel standard assez douteux. Il était également nécessaire de pouvoir y placer deux disques dur de 3 pouces et demi en SATA.

Solution matérielle

La plateforme Intel Atom répond particulièrement bien à la contrainte de consommation électrique ainsi qu’à la contrainte de volume physique. C’était donc un choix évident. Le nombre d’ordinateurs de bureau Atom capables d’accommoder deux disques dur de 3 pouces et demi est relativement faible. Mon choix s’est tourné vers la plateforme MSI Nettop.

Par défaut, il n’y a qu’un seul emplacement 3 pouces et demi mais il est possible de retirer le lecteur DVD et le remplacer par un disque dur moyennant l’achat d’un petit kit adaptateur. L’alimentation électrique se fait via un transformateur qui vient fournir le PC directement en courant continu. Il dispose également d’un emplacement SD ce qui pourra éventuellement être utile pour faire de la sauvegarde sur ce type de médium.

Comme vous le savez, ZFS calcule de somme de contrôle pour toutes les données écrites sur ses volumes. Cette opération consomme de la ressource processeur. Le processeur étant un Intel Atom, il y a de quoi se poser des questions en effet. L’objectif n’étant pas de faire des gros transferts de données à la vitesse de la lumière, cela n’est pas réellement problématique. Le débit de données reste relativement correcte.

Par défaut, le MSI Nettop est fourni avec un disque dur de 160Go ce qui est trop peu. J’ai donc acheté un disque supplémentaire Western Digital de 500Go pour le remplacer.

Solution logicielle

Une des contraintes était de pouvoir disposer de ZFS. Cela laisse donc trois choix : Solaris, OpenSolaris ou FreeBSD. Étant donné l’orientation entreprise de Solaris et la nouvelle politique de support d’Oracle, il n’était pas souhaitable de l’utiliser. FreeBSD est un système d’exploitation qui ne me plait pas particulièrement et ce dernier n’est pas au niveau d’OpenSolaris en terme de versions de ZFS. Il n’y a pas de déduplication de données sur ZFS sous FreeBSD. Mon choix s’est donc naturellement tourné vers OpenSolaris.

Un autre avantage est qu’il gère directement NFS et CIFS sans avoir besoin d’applications supplémentaires. Cela rend très simple la gestion de partages réseaux par le biais de commandes simples et efficaces. La documentation Oracle est très claire à ce niveau, je vous laisse la consulter.

Utilisation

Une fois que nous avons une solution logicielle et une solution matérielle, nous allons pouvoir décider ce que nous allons en faire.

Mon serveur me sert en tant que serveur NFS afin de sauvegarder des données à la volée à partir de mes différents ordinateurs. Pour mon MacBook Pro, cela me permet d’utiliser l’excellent Time Machine. La mise en place de Time Machine sur un NFS ne se fait pas sans douleur mais il existe de nombreux tutoriels sur Internet afin de vous aider. Ce serveur effectue une sauvegarde périodique (tous les 15 minutes) de mes emails Gmail. L’application getmail permet de récupérer en POPS les nouveaux mails. La récupération initiale de mes 70.000 mails a pris une nuit sur mon ADSL 7Mbit/s et désormais il récupère juste les mails le plus récents.

Ce serveur héberge également mon blog en ce moment le temps que je réinstalle ma VM Xen. Le temps de chargement de pages web a même été amélioré par rapport à ma VM ce qui est assez impressionnant. J’ai activé la déduplication de données en même temps que j’ai écrit le tutoriel précédent. Ce serveur a été tout à fait stable. Je n’ai rencontré aucun problème depuis 2 mois que ce serveur est en place.