nasmaison Ou comment remplacer un NAS Qnap par un NAS maison?

Etant un gros consommateur d'espace disque (backup, image système, musiques, vidéos, distribution Linux etc...) mais tout en étant soucieux d'économie d'énergie, je me suis rapidement tourné vers des solution NAS du marché.

N'ayant besoin que de disques, je m'étais tourné à l'époque, vers le Qnap TS219 Turbo




Je dois dire franchement qu'au niveau fonctionnalité et économie d'énergie il n'y à rien à redire, il est relativement silencieux, et possiède une pléthore de fonctionnalités.

Je l'ai gardé environ 6 mois, sur pas mal de point j'en était satisfait, mais j'ai dut me rendre à l'évidence,  il n'a rien dans le ventre...
En effet la config matérielle du Qnap est la suivante.

• Processeur : Marvell 1,2 GHz (monocore)
• Mémoire Flash : 16 Mo
• Mémoire vive : 512 Mo DDRII RAM
• Refroidissement : ventilateur
• Capacité maximale : 4 To (2 x 2 To)
• Connecteur réseau : Ethernet Gigabit
• 3 ports USB 2.0
• 2 ports eSATA
• Disques durs internes requis : 2 disques SATA II ou I, format 3,5" ou 2,5"
• Gestion du RAID 0, RAID 1 (jusqu'à 2x1 To) et JBOD

Je ne vais pas vous montrer les benchs, mais le cpu n'était pas à la hauteur...

Que se soit pour le transfert de fichiers (cifs, nfs) ou il plafonne maximum à 50Mo/s

Je suis un grand amateur de newsgroups, très bien le Qnap avait un module Sabnzbd intégré... mais quel enervement quand on doit attendre plus de 4h
qu'un fichier soit disponible... car les réparation par2 et l'extraction rar sont bridé par le CPU de la machine...
Ce n'est pas compliqué, le Qnap m'était plus de temps à faire les par2 qu'a téléchargé le fichier...

J'étais séduit par la taille, les fonctionnalités du Qnap, mais les performances m'ont obligé à franchir : me fabriquer un NAS maison:

Pour cela j'ai commancé par choisir mes composants:

Plateforme matérielle:
Je cherchais un bon compromis entre puissance, consommation, et surtout le prix !!!
Et là tous les benchs sont unanimes, le meilleur rapport perfmormance/prix est le CPU Intel Pentium G620

  • CPU Intel Pentium G620 ( dual Core Sandy Bridge 2.6Ghz)
  • Carte Mère : MSI H61I-E35 (Révision B3)
  • RAM: Crucial Ballistix Sport DDR3 2 x 4 Go PC12800
  • Alim: Be Quiet SFX Power - 300W
  • Boitier: Fractal Design Core 1000
  • HDD 2.5'' 80Go WD 5400tpm ( OS)
  • HDD: 3.5'' 2 x 1 To Western Dgital RE2 SATA2 ( déjà en ma possession) DATA
Ma recherche était simple, un config pas chere, relativement performante, économe en energie, discrète.
C'est pourquoi j'ai cherché des composants mini ITX
Même si je savais que je n'aurais la taille du Qnap, je voulais un boitier assez petit et pas cher, mais me permettant d'évoluer si je
souhaitais rajouter des disques.

L'avantage de cette config était aussi la vidéo intégréé ( même si a terme il est branché sans écran)

Prix de la config 250€ !!!
J'étais moi meme étonné de pouvoir faire une machine avec un aussi bon rapport qualité prix


Assemblage:

Une fois les pièces reçue rapidement comme d'habitude avec materiel.net, je me suis mis à assembler la bête.
Le boitier est en effet beaucoup plus gros que le Qnap mais reste soble et discret et surtout assez évolutif.
Voilà ce que donne l'assemblage:

De face à coté du qnap


Les entrailles:



Mes deux disques 3.5'' sont fixés sur le coté
Le Disque Système 2.5'' est fiixé a plat sur le bas du boitier avec des silent blocks.
J'ai ajouté aussi une équerre ESATA pour brancher des disques externes.

Par contre j'ai eut un petit soucis...
Le boitier etait en effet un mini ITX et mon alim aussi...
Mais l'emplacement alim du boitier était en fait standard....
L'alim était donc trop petite... et ne tenait que par une Vis...



Cela n'est pas esthétique et surtout pas terible pour la tenue de l'alim et la ventilation du boitier...

Je ne suis pourtant pas très bricoleur, mais qu'a cela ne tienne j'ai voulut limiter les dégats...
Me voilà parti a découper une plaque pour fixer l'alim...

Un petit gabari en papier, une plaque de tole, un Dremel et on tente...



Voilà au final ce que ça donne... bon c'est pas joli mais c'est solide :)



Voilà!! la partie hard est terminé.




Plateforme logicielle:


Cette partie à demandé pas mal de recherche, pas mal de choix s'offraient à moi,
Creer un NAS avec une distri Gnu/Linux classique et me fader les paramétrage à la main ( très modulaire mais pas très pratique)
Utiliser des distri NAS existantes, ( Freenas, OpenFiler ...)

Mes prérequis étaient simples:
  1. Les performances ( autant que puisse délivrer mes disques et le port gigabit)
  2. Les fonctionnalités de bases dont j'ai besoin (CIFS, NFS)
  3. Sabnzbd installable et fonctionnel !!!

Je me suis au départ orienté vers Freenas,  qui parait  le plus avancé sur les distri  NAS, mais j'ai vite déchanté pour plusieurs raisons:
  • Basé sur du FreeBSD ( lon de moi l'idée de dénigrer ce système, mais je n'avait pas l'envie de me replonger dans un système que je maitrise peu)
  • Mauvaises performances en partage fichiers ( je plafonnait à 50Mo/s en lecture ecriture sur des partages CIFS...) ( comme le Qnap) sans pour autant saturer la matos
  • Je n'ai pas réussi à installer Sabnzbd ( du fait probablement de ma méconnaissance de FreeBSD)
J'ai donc décidé de me tourner sur OpenFiler
  • Basée sur du bon vieux linux ( quoique sur une distri que je ne connais pas... à base de gestionnaire de paquet conary)
  • Performances Excellentes ( je sature le port giga en transfert Cifs et NFS) 112Mo/s
  • Sabnzbd installé et testé !!
Je suis donc parti sur uns installation de OpenFiler Version 2.99 X86

Installation classique d''un distri Gnu/Linux qui ressemble étrangement à du RedHat

Pas de soucis particulier j'ai opté pour créer un disque système de 16G et un swap de 2Go ( le tout sur le disque dédié de 2,5'')
J'aime utiliser des partitions  de faibles tailles cela me permet de faire une image de sauvegarde rapidement avec dd et lzop.

Une fois OpenFiler installé, on arrive sur l'interface Web assez simpliste:



Je me suis dit alors, c'est bon on va tout faire en interface Web...
Mais non... le moins qu''on puisse dire c'est que l'interface n'est pas totalement mure...

Pourtant ce que je voulais faire était simple un volume par disque et un partage par volume.
Pas de raid ou de jbod...

Pourtant, a chaque tentative, ce creer mon physical volume à partir du disque, il ne m'utilisait pas l'espace disque entierement...
Cela est surement dut au partition GPT qu'il crée de base...

J'ai donc fait donc fait ma config disque en ligne de commande.

En gros:
  • Creation des partitions et surtout changer l'id de la partition en 8e pour que openfiler la reconnaisse comme physical volume
  • Creation des physical volume : pvcreate /dev/sb1; pvcreate /dev/sdc1
  • Création des volume group : lvcreate -L931,5G -nvg0 /dev/sdb1; lvcreate -L931.5G -nvg1 /dev/sdc1
Grace à cela openfiler daigne enfin voir les physical volume avec toute la place d'allouée...

On crée ensuite cette fois grace à l'interface web les Volume Logique ( si vous connaisser LVM2 il se base dessus)



J'ai choisi de creer 2 Logical volume /dev/vg0/lv0 et /dev/vg1/lv1
Tout deux formaté en XFS pour profiter de la defrag en ligne ultra rapide. et bien sur des performance de XFS

Une fois les LV créées j'ai créer mes shares (cifs et nfs) par l'interface Web:



J'ai donc à présent mes 2 shares NAS et NASLV1 accessibles aussi bien en cifs qu'en NFS

Ne pas oublier d'ailleurs d'activer les services correspondants:




Mes shares sont accessibles et performants, accessible en lecture et écriture à la vitesse des disques soit environ 110Mo/s
Cela change du Qnap qui saturait au moindre transfert...

Voici la mesure temps réèl du débit lors d'un transfert NFS entre le NAS maison et mon pc client sous Linux Mint



On voit un transfert à 100Mo/s , c'est pas mal ! ca change du qnap :)


Sabnzbd:


Cela à été assez fastidieux car ne connaissant pas du tout la distri j'ai un peu tatonné.
Mais au final l'install est opérationnelle

conary update glibc

conary update gcc

conary update gcc-c++

conary update glibc:runtime

conary update glibc:devellib

conary update glibc:devel

conary update glibc:locale

conary update glibc:lib

conary update python:devel

conary update zlib:devel

conary update ncurses:devel

conary update automake

conary update autoconf

conary update pkgconfig

conary update unzip

conary update openssl

conary update python

conary update zip

conary update rar

conary update unrar

conary update pyOpenSSL


wget http://downloads.sourceforge.net/projec ... 0.4.tar.gz
tar zxvf par*
cp par2 /sbin
cp lib* /sbin


wget http://downloads.sourceforge.net/projec ... 0.1.tar.gz
tar zxvf Che*
python setup.py build
python setup.py install

wget http://www.golug.it/pub/yenc/yenc-0.3.tar.gz
tar zxvf yenc*
python setup.py build
python setup.py install

Au final Sabnzbd est opérationnel :)



J'aussi fait un script pour lancer sabnzbd au démarrage de la machine.

Afin d'économiser de l'énergie, j'ai aussi fait une tache Cron qui éteint le système la nuit à 1h30
Et le bios se charge de le redemarrer le matin à 8h00.

J'ai donc au final mis en place un NAS maison qui me satisfait, j'obtient de très bonne performance autant en transfert qu'en verification de par2

Au niveau éconimie d'energie, en branchant la machine sur un wattmetre, j'obtient en idle une conso de 40W exactement la même chose que le Qnap.
Par contre en pleine charge le système monte aux alentours de 55w alors que le qnap était plutot  à 45W.
Cela dit les performances et l'évolutivité sont sans communes mesure.