ZFS est un système de fichiers développé à l'origine par Sun pour Solaris, et spécialisé dans le stockage de données en Datacenter.

ZFS offre de très nombreux avantages qui le font surpasser presque tous ses concurrents:
Donc ZFS est le système idéal pour les redimensionnements/déplacements de données (même entre machines), la sécurisation (par redondance ou algorithmes de contrôles) et la continuité de service. Une fois son administration prise en main, on est littéralement libéré des contraintes des vieux systèmes de partitions utilisés par exemple avec NTFS ou EXT4.
Note: Bien que ZFS soit développé pour OpenSolaris/Solaris à la base, il est disponible sur FreeBSD, NetBSD, et partiellement sur Linux. Sa licence (CDDL) incompatible avec la GPLv2 fait qu'il ne sera jamais intégré dans le noyau Linux. Néanmoins il existe des portages tiers et une implémentation dans FUSE. Oracle développe btrfs spécialement pour Linux, et qui devrait offrir des fonctionnalités similaires à ZFS.
Actuellement je dispose d'un serveur de fichiers équipé d'un unique disque dur de 1To. Pour assurer la sécurité de mes données, je me suis procuré un second disque identique et ait entrepris de monter un système de mirroir (RAID1). Ma carte mère ne gère pas le RAID et je n'ai pas vraiment envie d'acheter une carte pour ça. Donc je me suis tourné vers le RAID logiciel.
Une solution consiste à installer Debian puisque l'installeur de cette dernière permet de paramétrer un RAID logiciel. Mais étant dans une période "FreeBSD" et ayant beaucoup entendu parler de ZFS, je voulais essayer. Configuration du serveur:
La version de FreeBSD est la dernière stable, c'est à dire la 8.1-RELEASE en version i386, puisque l'atom ne supporte pas le 64 bits.
La procédure pour installer FreeBSD sur un système de fichiers ZFS est disponible ici. Ce qui est pénible c'est de devoir télécharger la version DVD qui pèse 2Gio, alors que le système installé au final fera moins de 200Mio. Mais il faut le DVD pour pouvoir profiter à la fois des paquetages d'installation et du mode "Livefs" qui permet d'avoir une console et tous les outils Unix pour travailler. Le wiki décrit une procédure nous faisant construire un système divisé en tranches: /var/log /var/mail etc... certaines étant compressées. Si on suit la procédure minutieusement sans se précipiter et en lisant calmement, cela doit fonctionner. Si comme moi vous survolez les instructions vous vous retrouverez avec un système qui ne boote pas.
Une fois que l'on a réussi à booter en dur, on peut s'amuser à faire quelques essais. La commande:
# zpool status
Retourne l'état de vos pool. Vous pouvez ainsi contrôler qu'il n'y a pas d'erreur et que les disques sont bien fonctionnels. Voici par exemple un status issu de la doc de Sun:
zpool status tank
pool: tank
state: DEGRADED
status: One or more devices could not be opened. Sufficient replicas exist for
the pool to continue functioning in a degraded state.
action: Attach the missing device and online it using 'zpool online'.
see: http://www.sun.com/msg/ZFS-8000-2Q
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
tank DEGRADED 0 0 0
mirror-0 DEGRADED 0 0 0
c1t0d0 ONLINE 0 0 0
c1t1d0 UNAVAIL 0 0 0 cannot open
errors: No known data errors
Là on voit que le fonctionnement n'est pas optimal, et en lisant on s'aperçoit que le disque "c1t1d0" est absent. J'ai moi même débranché un de mes disques (à froid) et ait pu constater que le système boote toujours, et que l'erreur est signalée.
Mon serveur étant utilisé pour stocker des fichiers, il devait être capable de transférer à haut débit avec mon ordinateur de bureau, sur un réseau 1000Mbps (Gigabit). Un protocole de transfert réseau léger et simple est le FTP que j'utilise pour sa rapidité. Sur FreeBSD on peut utiliser le serveur FTP de référénce (FTPd) ou installer VSFTPd via les ports ou packages.
Seulement voilà, la grosse surprise est que les débits de transfert sont vraiment très faibles, et régulièrement interrompus par des micro-coupures. Je ne dépassais pas les 12 Mo/s alors que le débit attendu pour un réseau Gigabit est de 60 Mo/s environ (limité par la vitesse d'écriture des disques). La vitesse de 12Mo/s correspond à la vitesse d'un réseau 100Mbps, je me suis donc demandé si ce n'était pas un problème de carte réseau. Malheureusement un ifconfig me confirme qu'elle est bien réglée en 1000, tout comme mon switch et sa LED verte qui indique la même chose. Ce n'est donc pas un problème de carte réseau.
Après divers essais de paramétrage du ZFS, aidé par la doc, je n'ai obtenu aucun résultat probant et ait même fini par casser mon OS... impossible de booter. J'ai réinstallé FreeBSD mais cette fois avec un seul disque et avec les options par défaut (système UFS, pas ZFS). Et là aucun problème, débit de transfert maximum. Donc mes problèmes venaient bien de ZFS.
Explication: Il semblerait que ZFS nécessite une machine relativement puissante, notamment en raison de son utilisation de la mémoire RAM comme cache. Ainsi, sur la documentation de Solaris, il est conseillé de tourner sur un système 64 bits avec au moins 1 Go de RAM. Les différentes personnes ayant rapporté faire fonctionner un NAS sous ZFS avaient au moins un processeur double cœur épaulé par plusieurs Go de mémoire.
Les problèmes de performances sont-ils dus à mon matériel trop "primitif" pour le supporter de manière correcte? Possible, mais pas 100% certain. Car il semblerait que l'implémentation de ZFS sur FreeBSD souffre d'un retrait important de performances par rapports à OpenSolaris. Des benchmark publiés sur cette page ont confronté FreeNAS (=FreeBSD), OpenSolaris et Nexenta. Je vous laisse regarder les graphiques mais la différence de rapidité au niveau des opérations par seconde peut varier d'un facteur de 10.
Le but de mes essais était de savoir si FreeBSD+ZFS offrait un réel avantage par rapport à UFS ou EXT sous Linux. La réponse est oui, sans conteste, une plus grande souplesse dans l'administration. Néanmoins, à la question "vais-je le garder?" la réponse est non puisqu'il y a un sérieux problème de performances.
Essais avec OpenSolaris (même si plus supporté) et Nexenta. Si aucun ne donne satisfaction, ce sera retour sur Debian GNU/Linux avec RAID avec dmraid.
Les gens qui me connaissent savent déjà ce que je pense de Facebook et compagnie. Qu'est-ce qui rapporte le plus sur internet? Le sexe? Non, c'est la solitude! Le besoin d'existence (même artificielle) des gens est le moteur qui alimente Facebook. Mais le plus pénible c'est que ce "réseau" (qui n'en est pas vraiment un puisque tout est centralisé) s'étend partout comme de la mauvaise herbe. En effet on trouve sur beaucoup de sites des boutons "j'aime", "partager" ou même "se loguer avec facebook". Et je ne parle même pas spams que l'on reçoit dans notre boite mail lorsqu'un ami s'inscrit.
Mais ce qui me pourri vraiment l'existence, c'est ça:

Ce petit menu qui se déplie au passage de la souris (qu'on ne fait jamais volontairement bien sûr), qui masque le texte que l'on était en train de lire et qui refuse de se refermer sauf si on veut bien cliquer sur la croix!

Alors suis-je le seul que ça énerve? y a-t-il des extensions firefox pour bloquer ces éléments intrusifs?
Wine is neither available in FreeBSD ports or packages in amd64 version. It was the same for Linux in 2006, as I remember when I started using it, but today it has been fixed for a long time.

A proper solution is to create a 32 bits chroot environment, get all the files for wine's port and get 32 bits video drivers. It seems more like a hack and not a true solution. And not very easy. Fortunately, some users have created a ready-to-install packages for freebsd64, which automatically set the 32 bits chrooted environment and deals with wine files and video drivers.
Poursuite de ma découverte du monde des systèmes d'exploitation *BSD. Après avoir testé NetBSD, me voici en route pour FreeBSD.

L'ISO d'installation pèse près de 700Mo, mais elle intègre les ports ainsi que quelques paquets précompilés. L'installation est un peu plus longue que NetBSD, car il y a plus d'options. Pour le partitionnement du disque, on a droit à l'utilitaire fdisk. Une fois l'installation sur le disque dur effectuée, il nous est proposé de paramétrer un peu le système. On peut définir les paramètres réseau, activer ou non SSH, et déployer un serveur NFS, FTP, ou une gateway.
J'aimerais préciser que je l'ai installé en dur, sur une machine que j'avais en stock, avec la configuration suivante:
Tout comme NetBSD, nous avons droit à un système minimal, à la différence que le réseau et SSH sont déjà configurés. Un shell minimal et bien sûr vi que j'adore (que de bons moments passés à ajouter 1 ligne dans un fichier de config pendant 10 minutes). Mes impressions sont un peu les mêmes que pour NetBSD, concernant le fichier /etc/rc.conf qui centralise tout.
Il y a quand même un outil très pratique qu'il convient de mentionner: sysinstall. Tapez cette commande et vous retrouvez le menu d'installation de FreeBSD. Il vous permet de configurer votre système, installer des paquets ou des ports.

Nous avons le choix entre les ports (compilation automatisée) ou des packages prêts à l'emploi. L'installation de ces derniers peut se faire via l'utilitaire sysinstall (présenté précédemment). Cette fois-ci je n'ai pas installé de serveur mais plutôt une interface graphique. La procédure est simple et très proche de celle de Archlinux: installer Xorg, activer Hal/dbus, faire un fichier de config pour passer le clavier en fr dans hal, et c'est tout. Par la suite on installe kde, on passe une petite option dans un fichier de config pour lancer kdm au démarrage, et c'est bon. Tutoriel complet
L'installation se fait par les ports, elle se déroule bien si on suit la procédure de la documentation. C'est très rapide et très facile. L'accélération 3d et les effets graphiques de kde4 sont rapidement fonctionnels. Cependant, impossible de lancer Stellarium. Je l'ai tout d'abord installé depuis les paquets précompilés, puis ensuite compilé via les ports. A chaque fois un message de Segmentation Fault au lancement. En revanche Supertuxkart (0.6.2) tourne de manière assez fluide, rien à redire.
Comme tout système *BSD, FreeBSD version amd64 propose des librairies de compatibilité 32bits. Cependant c'est un peu moins simple que sur Linux car il faut jouer avec les variables d'environnement (néanmoins, c'est bien mieux trié, tout est rangé dans /compat). Wine n'existe pas en 64bits ni dans les ports ni dans les packages. Les solutions proposées consistent à créer un environnement 32bits en chroot et à compiler le port dedans. Solution un peu compliquée et pas forcément très propre (car il faut aussi mettre les fichiers 32bits du pilote graphique dedans). Ce problème (résolu grâce à la communauté) fera l'objet d'un billet dédié.
Ma courte expérience sur FreeBSD, qui risque néanmoins de se poursuivre, m'a permis de découvrir un système bien organisé au niveau de ses arborescences, une documentation bien construite et un fonctionnement correct. Moins simple que Fedora ou Debian, il se classe plutôt au niveau de Archlinux et demande un petit temps d'adaptation. Il reste quand même très accessible.