Nouveau serveur : N40L et Nas4free, installation et création d’un environnement chrooté

Vous en avez peut être entendu parler, le serveur HP N40L semble faire un tabac depuis un moment et j’ai moi aussi craqué après quelques semaines d’hésitations. C’est un petit serveur avec une porte avant qui cache une baie pour quatre disques dur SATA ce qui en fait un parfait candidat pour un NAS. Ce qui tombe bien car cela fait plus d’un an que je souhaite changer le mien (un Netgear ReadyNas Duo premier du nom) dont je suis totalement satisfait mais qui commence à être vraiment trop limité, que ce soit en terme de place (2 baies) mais surtout en cpu/ram. En effet il me sert aussi de serveur domotique et depuis peut de serveur squeezebox et là ça devient vraiment trop lent :/

[adsGrandRectangleTexte]

Caractéristiques du N40L

Le N40L mesure 26,7 x 26,0 x 21,0 cm (H x P x L). Il est architecturé autour un processeur Turion II à 1.5Ghz et fourni avec 2 Giga de ram et un disque de 250go. Il est également équipé d’un contrôleur réseau Gigabit.

Coté connectique :

USB 2.0 7 (4 en façade, 2 à l’arrière, 1 à l’intérieur)
E-Sata 1
VGA 1
RJ 45 1
PCI-Express 2 (x1/x16)

On le trouve sur amazon au alentour de 200€ livré et un peut plus cher dans les boutiques française. A noté que HP rembourse 100€ jusqu’au 31 octobre si l’achat est réalisé en France dans une boutique française (avec une facture française donc).

Choix du système d’exploitation : Freenas8 ou … ?

Pour le système d’exploitation, je voulais retrouver la simplicité d’administration d’un NAS du commerce. J’ai d’abord testé Freenas8 mais j’ai quelques contraintes :

  • Pouvoir réinstaller mon système domotique principalement basé sur PHP5/Mysql, rrdtool et xPLLib.
  • Pouvoir installer le Logitech Media Server (squeezebox).
  • Avoir le système sur un clé USB en lecture seule. A ce propos, le serveur dispose d’un port USB interne accessible depuis la porte avant, très pratique 🙂

Pour la partie PHP5/mysql cela ne semble pas poser de problème. Pour le serveur squeezebox non plus et après quelques modifications dans le Makefile de xPLLib j’ai réussi à compiler la librairie et les exemples. Ca semblait bien partie mais la place étant limitée je n’ai pas pu installer php + mysql. Il reste la possibilité d’installer une « jail » pour les plugins et l’utiliser pour installer le reste mais freenas8 étant basé sur NanoBSD et plus sur FreeBSD, il y a plein de problèmes de version logiciel, bref j’ai abandonné.

Il me reste comme choix OpenMediaVault, un système basé sur Linux Debian. Ça semble intéressant puisque je connais bien debian mais il a un désavantage: il ne supporte pas _encore_ zfs qui est le système de fichier que je souhaite utiliser. ZFS permet entre autre de facilement augmenter la taille d’un volume en lui ajoutant des disques mais surtout de faire des snapshots 🙂 des vrais !

J’ai donc testé et adopté Nas4free (basé sur freeBSD9) que je ne connaissais pas et qui est en fait la suite du projet Freenas7.

Installation de Nas4free, deux modes : full ou embedded

Nas4free dispose de deux modes d’installation. Un mode full que l’on installe à partir d’un cd (il traine sur le forum des scripts pour générer une clé usb) sur un disque dur, une clé USB ou carte flash. L’installation sur ces deux derniers support n’est pas préconisé car ces supports ne sont pas très rapide et le nombre d’écritures dessus est limité.
J’ai préféré utiliser la version embedded qui peut s’installer directement sur une clé USB. Le système est monté en RAM au démarrage donc rapide mais toute modification de fichier est perdue au démarrage suivant. Pour résoudre ce problème et ajouter des paquets il y a deux solutions :

  • Créer un volume que l’on montera grâce à unionfs sur /usr/local et /var (Unionfs permet en gros de mélanger deux systèmes de fichier). Tous les nouveaux fichiers et modifications seront stockée sur ce volume. C’est simple et ça marche mais on modifie le système nas4free et on peut potentiellement le « casser ».
  • Créer un environnement chrooté. On va rester simple, l’idée est de créer un système (Freebsd9) « à l’intérieur » de Nas4Free, on pourrait comparer ça à une machine virtuelle. Ce système sera stocké sur les disques de données mais dans un volume séparé. L’avantage ici est que nas4free sera à l’abri de toutes mes bidouilles 🙂 et on peut y installer n’importe quel paquet FreeBSD puisque c’est un FreeBSD9 à part entière (ou presque).

Installation de Nas4free sur une clé usb :

  1. Télécharger Nas4free embedded : x64 ou x86
  2. Pour transférer l’image sur une clé USB vous pouvez suivre le même principe que pour l’installation de monowall.
  3. Sous linux : gzcat NAS4Free-x64-embedded-9.1.0.1.323.img | dd of=/dev/sdb bs=16k Attention à bien choisir votre clé USB sous peine de supprimer votre OS (/dev/sdb normalement si vous n’avez qu’un disque dur)
  4. Il ne reste plus qu’à l’insérer dans le port USB interne du N40L et commencer la configuration réseau et disques.

Note pour les non voyants : Je n’ai pas trouvé comment configurer les DNS tout de suite, j’ai du le faire à la main. En fait la configuration ne se fait pas dans l’onglet Réseau mais dans Général … pas très logique.

Création des volumes zfs

Je passe sur la configuration et la mise en place des volumes zfs, ce n’est pas le but de l’article mais si vous avez des questions j’y répondrai volontiers.
J’essaierai de compléter ce chapitre une fois mes données récupérées de l’ancien NAS. Notamment la conversion d’un virtual device de 1 seul disque de type stripe (raid0) à un virtual device 2 disques de type raidz1 (raid1).

Création de l’environnement chrooté

Je vais créer maintenant l’environnement chrooté. J’ai suivi pour cela ce très bon tuto issu du wiki Nas4free : http://wiki.nas4free.org/doku.php?id=documentation:howto:jails

Je vous conseil de lire le tuto original mais en voici un résumé :

Création de l’arborescence

On va créer l’arborescence dans le volume /mnt/data que l’on aura créé précédemment puis monter ce répertoire dans /jail pour un accès plus aisé.

mkdir /jail
mkdir /mnt/data/jail
mkdir /mnt/data/jail/{work,proto,conf}
mount_nullfs /mnt/data/jail /jail

Mise en place d’un FreeBSD de base

cd /jail/work
fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/`uname -m`/`uname -m`/`uname -r | cut -d- -f1-2`/base.txz
tar xvf /jail/work/base.txz -C /jail/proto/

cd /jail
mkdir -p conf/root/{etc/rc.d/,usr/bin,usr/sbin}

cp proto/etc/rc.d/jail conf/root/etc/rc.d/
cp proto/usr/sbin/{jail,jexec,jls} conf/root/usr/sbin/
cp proto/usr/bin/mktemp conf/root/usr/bin/         
cp proto/usr/sbin/{jail,jexec,jls} conf/root/usr/sbin/

Configuration de l’environnement chrooté

Les DNS et la timezone :

cp /etc/resolv.conf /jail/proto/etc/
cp /jail/proto/usr/share/zoneinfo/Europe/Paris /jail/proto/etc/timezone

Le fichier fstab : Si vous souhaitez monter des disques locaux ou distants vous pouvez les ajouter ici. Sinon le laissez vide.

touch /jail/conf/fstab.proto

Création et configuration du rc.conf.local:

touch conf/rc.conf.local
vi conf/rc.conf.local

Insérez ces lignes dedans. Vous devez modifier au moins les paramètres jail_proto_ip et jail_proto_interface

### EXAMPLE - MODIFY TO FIT YOUR NEEDS ###
jail_enable="YES"	# enable jails YES|NO
jail_list="proto"	# name of the jails to start "proto www..."
jail_proto_rootdir="/jail/proto"		# path to our jail
jail_proto_hostname="proto.domain.local"	# hostname 
jail_proto_ip="192.168.1.201"		# ip of the jail 
jail_proto_interface="bge0"		# Network Interface to use
jail_proto_devfs_enable="YES"		# use devfs 
jail_proto_mount_enable="YES"		# mount YES|NO 
jail_proto_fstab="/jail/conf/fstab.proto"	# File with Filesystems to mount

Script de démarrage de l’environnement chrooté

Créez ce petit script

vi /jail/conf/jail_start

ajoutez y ces lignes

#!/bin/tcsh -x
#mounting to /jail
mkdir /jail
mount_nullfs /mnt/data/jail /jail
# copy jail binaries to /usr
cp -r /jail/conf/root/ /
# link config files to /etc
ln -s /jail/conf/rc.conf.local /etc
#start all jails
/etc/rc.d/jail start

sauvez le et rendez le exécutable

chmod 755 /jail/conf/jail_start

Démarrage automatique

Allez dans le menu System / Advanced / Command Scripts
Ajoutez la commande /mnt/jail/conf/jail_start de type Postinit

Redémarrez ou exécutez le script (la partie après le « mount_nullfs »). Vous pouvez ensuite voir les environnements créés avec la command jls (exécutez rehash si la commande est introuvable).

# jls

    JID  IP Address      Hostname                      Path
    1    192.168.1.201   proto.domain.local            /jail/proto

Pour entrer dans l’environnement (le 1 représente le JID de l’environnement dans lequel vous voulez entrer) :

jexec 1 csh

Et voilà :), nous somme dans un freeBSD tout beau tout neuf. On peut y ajouter les paquets que l’on souhaite. Je vais pouvoir réinstaller mon système domotique.

Permettre l’accès au réseau depuis le chroot

Sur la machine hôte, faire:

echo security.jail.allow_raw_sockets=1 >> /etc/sysctl.conf

Pour que la modification soit présente au prochain reboot, on va demander à Nas4free de l’ajouter dans le fichier sysctl.conf. On peut faire ça dans le menu System / Advanced / Sysctl.conf

Customisation de l’environnement chrooté

L’environnement chrooté est tout à fait utilisable tel qu’il est et on pourrait en rester là et y installer les applications dont nous avons besoin (pour moi: un serveur http, PHP, mysql et xPLLib) avec l’outil de gestion des paquets de freebsd : pkg_add.

De l’extérieur, il est vu comme une autre machine avec sa propre ip, ici 192.168.1.201

L’auteur du tutorial original explique comment réduire la taille de cet environnement (cela nécessite une recompilation de Freebsd après avoir indiqué quel éléments nous sont inutiles). On utilise ensuite cet environnement, nommé « proto », pour créer l’autre ou les autres (si vous voulez séparer chaque application) environnements de « production » par copie.

Note : En buildant freebsd comme indiqué par le tuto, je suis tombé sur cette erreur :

wpa_supplicant.c:(.text+0x1f83): undefined reference to `eap_register_methods'
*** Error code 1

J’ai du mettre en commentaire la ligne WITHOUT_WPA_SUPPLICANT_EAPOL=true du fichier /etc/src.conf pour réussir à compilé tout le bazard, bizard :/

Conclusion

A partir de là, nous avons un système sur clé USB qui fonctionne bien avec une interface aussi userfriendly que les NAS grand public du marché. Le système tourne en ram, c’est rapide et en cas de coupure de courant, normalement pas de soucis. Il n’y a pas d’écriture sur la clé et zfs est un système de fichiers transactionnel qui garanti en permanence la cohérence des données sur les disques. C’est à la fois plus rapide et plus efficace que la journalisation.

Vous trouverez chez maison-et-domotique.com un test très détaillé du N40L.

A suivre :

  • Installation d’un serveur Http + PHP5/Mysql dans l’environnement chrooté.
  • Installation du Logitech Media Server.

Vous aimerez aussi...

15 réponses

  1. Johan dit :

    Tu l’as acheté ou du coup parce qu’apparemment il y a un mec qui l’a trouvé a 189€ sur Amazon mais je ne trouve pas …

    • Olivier dit :

      Je l’ai pris sur amazon.de pour 200€ livré. Le vendeur c’était Kora quelquechose mais il ne semble plus dans la liste (ca bouge tous les jours). Cette société le vendait aussi sur amazon.fr mais plus cher. Je l’ai recu en 1 semaine à peine.

      Par contre sur amazon.fr il est à 199€ chez miniprice (je ne connais pas le vendeur, voir la réputation). Ils le vendent 184€ sur amazon.de. Mais pour bénéficier du remboursement de 100€ de HP il faut l’acheter dans une boutique francaise (apparement, de ce que j’ai pu lire, chez RLOFrance ca fonctionnerait. Malgrès que ce soit une boite allemande, il semble que la facture est francaise … je ne garantit rien. En tout cas le vendeurs francais le vendent pas mal plus cher.

    • Olivier dit :

      attention aussi, il y a des N40L avec comme description : N40L 1 processeur AMD Athlon II Dual Core 1,3 GHz

      Il existe un N36L qui correspond à cette description, donc je ne sais pas si c’est un N40L avec une erreur de description ou l’inverse ? … le N40L c’est un turion 1.5Ghz

  2. Fritz dit :

    J’en avais pris en début septembre, c’est assez sympa comme bestiole. Surtout le rapport prix/nombre de baies/possibilités qui est très bon!

    • Olivier dit :

      Oui c’est clair c’est très bon pour le prix :). Je voulais prendre un NAS 4 baies, en dessous de 350€ y’a rien.

      Tu as mis quel OS dessus du coup ? Est ce que tu sais si Domogik tourne sur FreeBSD ? Je ne l’utilise pas mais j’ai toujours dans l’idée de le faire, surtout maintenant que mon serveur est plus puissant.

  3. Johan dit :

    la conso reel est de 150w ?

    • Olivier dit :

      Non, 150w c’est la puissance max de l’alim. Je n’ai pas encore vérifié mais j’ai lu sur plusieurs sites que la conso tourne autour de 40w avec les disques (2,3 ou 4 ?), comme un NAS grand public à peu de choses près donc.

  4. Michael067 dit :

    J’ai recu mon remboursement ce weekend (acheté chez Kora sur amazon), envoyé le 13 juillet quand meme….
    je trouve le ventilateur de l’alimentation bruyant, et sur le votre ??

    • Olivier dit :

      Je ne dirais pas qu’il est bruyant. Je l’entends plus que mon ancien Netgear mais ça reste correct je trouve, je ne dormirais pas avec cela dit.

      Apparemment il y a un petit potentiomètre sur l’alim qui permet de baisser la vitesse du ventilo. J’ai vu ça sur un forum je ne sais plus trop où :/ . Au pire il faut le changer mais plus de garantie sur l’alim.

  5. rsgetup@gmail.com dit :

    Salut !

    Il est génial ce tuto. Bravo.

    J’aimerais qq conseil. Moi aussi, j’ai un NAS (mais synology DS212) il marche très bien. mais je suis vite limité en capactié. Alors j’ai acheté cette config (peut-être un peu musclé pour un simple NAS je vous l’accorde)

    CM : Asus P8H77-I
    Boitier : Fractal design node 304
    intel i5 3750K ivy bridge
    RAM : Corsair Dominator 2x8go : 16 Go
    Western digital caviar black x6 (je les avais déjà j’allais pas les jeter pour mettre du caviar green ou red ;-))

    J’ai entendu les éloges sur le nas4free (basé sur le freenas 7) j’ai été conquis! néanmoins le format ZFS semble instable (je veux dire par là qu’il est arrivé à certaine personne de perdre toutes leurs données à cause de d’un crash du à certaines zones qui arrivent à saturation…)

    Pouvez vous me donner votre avis sur ma config, et sur ce fameux ZFS ?
    Merci !

    RS

    • Olivier dit :

      Salut,

      Concernant ZFS lui même je ne peux pas te dire. Je n’en ai pas une grande expérience mais je n’ai pour l’instant eu aucun soucis malgré plusieurs coupures électrique.
      Ce système de fichier à quelques années déjà et est qd même pas mal utilisé donc…
      Pour les pertes de données, la meilleure protection ce sont les sauvegardes régulières ! délocalisées si possible. Sinon je te conseille de faire deux raid5 de 3 disques dont l’un sert de backup à l’autre (par script, pas en raid1). En tout cas, ne pas mettre les 6 disques dans la même grappe.

      Sur nas4free tu n’es pas obligé de l’utiliser. Tu peux utiliser le format d’origine de freebsd (UFS) sans soucis. Tu perds juste la possibilité de faire des snapshots.

      Concernant ta config, si tu compte juste faire du stockage c’est dommage, elle me semble disproportionnée comme tu le dis toi même. Le boitier est sympa de tête mais si je ne me trompe pas il ne possède pas de tiroirs pour accéder aux disques si ?
      Tu pourrais y installer un vmware esxi (il me semble que c’est gratuit) et mettre nas4free en machine virtuelle. Ça te permettrais d’installer d’autres machines (si tu en as l’utilité ?) pour tirer partie de ta config musclée 🙂

      ++

  6. rsgetup dit :

    Merci pour ton retour,

    Je suis assez bon niveau hardware mais quand on parle de software de script ou autre je suis un peu perdu …

    C’est dommage on ne peut pas poster de photos ici, j’aurai bien aimé te montrer le final ! j’ai fait un super câble management dans ce petit boitier !

    Enfaite le synology DS212 3To sera le backup du Nas4free. (c’est une bonne idée ?)

    là j’essai de suivre ton tuto lol (j’essai de mettre nas4free sur la clé usb) je susi qd même ambitieux et pas super super callé 😉

  7. rsgetup dit :

    C’est super chaud … i’m still fighting ! je vous tiendrai au courant lorsque ce sera fini 😉

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *