Maniatux's Blog

Welcome to the internet

BSD

Aperçu de ZFS sous FreeBSD 8.1

Rédigé par Xavier - - Aucun commentaire

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:

  • N'utilise pas les partitions mais un système logique de pool
  • Un pool peut regrouper plusieurs disques et fonctionner en RAID, sans couche logicielle supplémentaire
  • Détection et correction des erreurs
  • Hotspare, remplacement de disque à chaud
  • Monitoring
  • Possibilité de créer des "tranches" dans un pool, par exemple une pour / et une pour /usr
  • Il n'y a pas de taille à spécifier pour ces tranches
  • Possibilité de compression des tranches
  • Attributs sur les tranches, par exemple interdiction d’exécuter des programmes
  • Snapshots hautement paramétrables

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.

Matériel pour essai

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:

  • Carte mère Intel D945GSEJT équipée d'un Atom simple coeur + hyperthreading à 1,6 GHz
  • Une barrette de 512MB de mémoire PC5300 (DDR2)
  • Deux disques Samsung Spinpoint F3 de 1To, 7200 tr/min
  • Une alim ATX branchée en fils volants

La chambre de Geek fait toujours rêver

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.

L'installation

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.

Découverte et essais

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.

Vitesse de transfert

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.

Conclusion

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.

La suite?

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.

Classé dans : BSD, Storage - Mots clés : aucun

Wine + FreeBSD amd64

Rédigé par Xavier - - Aucun commentaire

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.

Lire la suite de Wine + FreeBSD amd64

Classé dans : BSD - Mots clés : aucun

A la découverte de FreeBSD

Rédigé par Xavier - - Aucun commentaire

Poursuite de ma découverte du monde des systèmes d'exploitation *BSD. Après avoir testé NetBSD, me voici en route pour FreeBSD.

Installation

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:

  • Processeur AMD Athlon64 3500+
  • 2x 512MB de RAM
  • HDD IDE 160Go
  • GeForce 7600GT

Découverte

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.


Un outil semi-graphique pour tout configurer!

Installation de logiciels

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

Pilote NVIDIA

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.

32bits/64bits

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é.

Conclusion

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.

Classé dans : BSD - Mots clés : aucun

A la découverte de NetBSD

Rédigé par Xavier - - Aucun commentaire

La famille des *BSD, dignes successeurs d'UNIX sont très réputés pour leur robustesse et leur sécurité en utilisation sur serveurs. Pour découvrir les différents membres de cette famille je vous renvoie à l'historique sur Wikipédia. De mon côté je vais vous raconter ma découverte de NetBSD, la variante orientée "portabilité".

Installation

L'installation se révèle assez simple, la seule chose qui est "nouvelle" c'est la notion de slices (qui correspond aux partitions étendues sous Linux) et encore, NetBSD passe vraiment rapidement dessus au point que c'est transparent. La copie de fichiers est vraiment très rapide, au point que j'ai eu l'impression qu'il n'y avait rien. Et pourtant, ça boote.

Découverte

Oubliez tout de suite le mode de pensée "GNU". Ici, pas de bash ni de nano! NetBSD est un OS très barbu qui propose sh et vi par défaut. Alors oui, ça peut faire sourire, mais moi qui n'ait jamais eu le courage d'apprendre vi, j'ai eu beaucoup de mal au début. sh semble avoir quelques lacunes au niveau de l'auto-completion et de l'historique.

La documentation recommande de finaliser la configuration du système. Il faut notamment ajouter un nom d'hôte, autoriser l'accès ssh, configurer le fichier /etc/hosts. Beaucoup de paramétrages se font dans le fichier /etc/rc.conf (les utilisateurs de Archlinux ne seront pas dépaysés).

  • Nom d'hôte: ajouter hostname=hote.domain dans /etc/rc.conf
  • Autoriser SSH: ajouter sshd=YES dans /etc/rc.conf
  • Réseau: ajouter dhclient=YES et auto_ifconfig=YES au même fichier pour fonctionner en DHCP

Alors oui, ce fichier rc.conf est assez pratique et centralise toute la configuration, mais à la longue il devient un peu poubelle... donc on a intérêt à trier toutes les options que l'on met dedans, avec des commentaires, sous peine de s'y perdre. Personnellement je préfère la tendance "debian" qui consiste à décentraliser dans de multiples fichiers. Par exemple Apache a un fichier de configuration principal, puis un sous-répertoire dans lequel on créé nos fichiers pour personnaliser le fonctionnement.

Installation de logiciels

Pour installer un logiciel, deux choix sont possibles. On peut tout d'abord utiliser les "ports". Les utilisateurs de Gentoo sauront de quoi je parle. Les ports sont un ensemble de scripts permettant d'automatiser la compilation d'un logiciel (et celle de ses dépendances). Alors oui, la compilation c'est trèèèès long, donc il y a aussi la possibilité d'utiliser des paquets précompilés.

Le fonctionnement est loin d'être aussi intuitif qu'un apt-get ou yum puisque là il faut spécifier l'emplacement du "dépôt de logiciel" comme variable d'environnement. Or une variable s'efface à chaque reboot il faut donc l'intégrer dans le fichier .bashrc ou équivalent si vous n'utilisez pas bash. Par la suite, si vous avez bien accès à internet, il faut taper: pkg_add -v nomdupaquet pour lancer l'installation.

NetBSD en tant que serveur

Sur un blog j'ai trouvé cette suite d'articles expliquant comment déployer une solution "NAMP" (NetBSD+Apache+MySQL+PHP). Ce que l'on peut constater, c'est que la configuration est à faire soit-même, comme l'édition de la configuration de Apache pour prendre en compte PHP. La mise en place demandera donc beaucoup plus de temps que sur Debian, et une lecture de doc (RTFM) plus poussée. A l'usage, cela semble bien fonctionner.

Conclusion

NetBSD est un système d'exploitation très léger et assez performant pour une utilisation en tant que serveur. Néanmoins je n'ai pas encore découvert de raison pour le préférer à une Debian ou CentOS, sur lesquels la configuration et l'administration se révèle plus simple.

Liens

Classé dans : BSD - Mots clés : aucun

Tutoriel vidéo M0n0wall + Alix PC Engine

Rédigé par Xavier - - Aucun commentaire

Aujourd'hui je suis tombé sur une vidéo (en deux parties) très intéressante expliquant comment faire son propre routeur (wifi+vpn en option) à l'aide d'un ordinateur Alix engine (AMD Geode) et du système M0n0wall (que je présentais ici). Matériel utilisé:

  • PC Engine Alix 2d2
  • Carte Compact Flash 512Mo
  • Carte wifi mini-PCI (référence non donnée)
  • Carte VPN mini-PCI Soekris

Les vidéos sont hébergées par Youtube, mais sur Firefox elles s'ouvrent en HTML5 (codec webm probablement) donc même pas besoin de plugin flash.

  1. Partie 1: Installation de M0n0wall et assemblage de l'Alix 2d2
  2. Partie 2: Quick Start sur M0n0wall

Alors les vidéos sont en anglais, mais c'est très visuel. Dans la première partie il explique comment extraire une image de m0n0wall sur la carte compact flash (ça marche aussi sur Unix/Linux). La seconde partie montre l'assemblage et la présentation du matériel. La seconde vidéo parle de configuration du réseau, de DHCP, adresse Mac et Port forwarding (NAT/PAT).

Où acheter une Alix?

Ce genre de matériel se classe souvent dans la catégorie "mini-ITX". En tant ce mot-clé sur Google vous pouvez trouver des sites de vente. Personnellement j'ai commandé la mienne (il y a quelques années, pour une utilisation différente) chez ThinkITX.com ils ont d'ailleurs des solutions prêtes à l'emploi: pf Sense box. Il est surement possible de trouver des modèles d'occasion sur les sites d'enchères.

Lire la suite de Tutoriel vidéo M0n0wall + Alix PC Engine

Classé dans : BSD - Mots clés : aucun