Installation et configuration d’un NAS (partie 2/2)

Written by Sebastien Lambot on . Posted in Réseaux, Unix / Linux

Après avoir installé et configuré le système de données sur notre NAS équipé de NAS4Free (voir la première partie de notre article), nous pouvons configurer les différents shares. Dans cette seconde partie, nous allons explorer les différentes possibilités de configurations et nous attarder sur les partages réseaux en les mettant en pratique.

A partir du moment où les datasets sont configurés et prêts à contenir des données, il est primordial de conserver un historique des fichiers en configurant les snapshots.

 

Les snapshots automatiques, à configurer en premier

Attention, il ne s’agit pas d’une solution de backup car les snapshots se trouvent au même endroit que les fichiers. Les snapshots sont utiles pour récupérer un fichier ou l’état d’un système à un moment donné dans le passé.

Le mieux est de déclencher la création la création des snapshots par un cron qui exécuterait la commande zfs snapshot:

zfs snapshot -r raidpool@`date +%Y%m%d`

Les dossiers de snapshots .zfs vont être créés à la racine des datasets, mais peuvent aisément être cachés grâce à l’option snapdir.

# zfs set snapdir=hidden raidpool

 

LCDProc: afficher les infos systèmes sur un LCD externe

Lors du montage, vous avez sûrement repéré le LCD 4×20 de chez LCDModKit (ebay). Une fois branché, l’écran a sa luminosité au maximum et affiche juste « LCD2USB V1.0a ».

nas_lcd

Pour le configurer, ça se passe dans le menu « Services > LCDProc ». LCDProc est un utilitaire client/serveur pour lequel la partie serveur communique avec un écran au travers du driver correspondant à celui-ci (dans notre cas il s’agit d’un HD44780) et permet à un ou plusieurs clients de se connecter sur le port 13666 (en localhost, donc pas ouvert vers le réseau). Les clients quant-à-eux envoient vers le serveur les informations à afficher. Ces informations sont incorporées à des affichages standards (définis dans la partie client) et s’affichent ensuite sur le LCD. Il n’est donc malheureusement pas possible de créer des affichages personnalisés comme on aurait pu le faire avec Smartie sous Windows.

nas_lcdproc2

Dans notre menu LCDProc, nous pouvons donc activer le serveur et le client. Les paramètres par défaut sont généralement corrects. Il vous faudra toutefois modifier la luminosité et le contraste avec des valeurs comprises entre 0 et 1000 (150 et 825 dans mon cas) pour que l’écran soit lisible.
Dans la partie client, des balises délimitent les différents affichages: CPU, Iface, Memory, Load, TimeDate, About, SMP-CPU, OldTime, BigClock, UpTime, Battery, CPUGraph, ProcSize, Disk et MiniClock. Pour les activer/désactiver, modifiez la valeur « Active » à True/False. Dans notre cas, l’affichage le plus intéressant est « Disk » puisqu’il affiche sous forme de liste les points de montage ainsi que leur espace libre, qui correspond à la taille du pool ou au quota si il a été fixé, de manière numérique et graphique (barres entre E pour Empty et F pour Full).

nas_lcdproc

Le symbole « coeur » en haut à droite est un heartbeat qui clignote et permet de vérifier que l’écran n’est pas frozen.

A l’allumage et à l’extinction du process LCDProc, un message personnalisable peut être affiché (très brièvement) mais il n’est possible de le modifier qu’en éditant les fichiers de config /var/etc/LCDd.conf (partie serveur). Attention, ces modifications seront écrasées la prochaine fois que la config sera éditée via l’interface web.
Le fichier de config pour la partie client est /var/etc/lcdproc.conf .

HAST: High Availability STorage

Hast permet de faire du clustering en configurant plusieurs nodes (1 Primary et des Slaves) qui implémentent le protocole CARP (Common Address Redundancy Protocol) afin de partager une adresse IP commune sur le réseau.
Ce genre de solution est surtout utilisé pour les environnements HA (High Availability) dans les entreprises et est un peu « overkill » pour un environnement domestique ou de PME, c’est la raison pour laquelle je n’en parlerai pas ici.

CIFS/SMB: partager des données grâce au protocole Samba

Le protocole Samba permet de partager des données entre des machines se trouvant sur un même réseau ou sur internet.

Pour la configuration, ça se passe dans le menu « Services > CIFS/SMB ». Assignez un nom Netbios à votre serveur, généralement le nom de la machine, ainsi qu’un workgroup, généralement « WORKGROUP ». Les autres options sont correctes par défaut, mais vous pouvez tout de même ajouter une petite modifications dans les « auxiliary parameters »:

hide files = /Temporary Items/.DS_Store/.AppleDB/.TemporaryItems/.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/.Spotlight/.Trashes/.fseventd/.cshrc/.login/.login_conf/.mail_aliases/.mailrc/.profile/.rhosts/.shrc/
restrict anonymous = 2

Ces paramètres additionnels permettront de ne pas afficher les fichiers cachés propres aux systèmes Apple ainsi que d’autre fichiers systèmes.
Le « restrict anonymous = 2 » sert à ce que le serveur demande une authentification avant de montrer les différents partages accessibles.

Création du share

Avant de créer un share, il nous faut d’abord un dossier à partager. Utilisez la commande mkdir dans votre session ssh et créez votre dossier.

Une fois votre dossier ou dataset créé, il faut l’ajouter dans la liste des shares CIFS. Dans le menu « Services > CIFS/SMB > Shares », cliquez sur le « + » pour ajouter un share. Fournissez ensuite le nom, un commentaire, et le path. Si il s’agit d’un share privé, n’oubliez pas de décocher l’accès guest.

nas_share1

Cliquez sur « Add » et « Apply changes », et votre share devrait apparaître sur \\adresse_ip (Windows) ou smb://adresse_ip (autres systèmes).
Si vous n’avez pas accès au dossier, ne vous inquiétez pas, il s’agit simplement d’un problème de droit que vous pouvez régler avec les commandes chmod et chown via l’interface ssh, car les permissions du share sont les permissions du dossier lui-même.

nas_share2b

 

Créer un accès FTP vers un dossier

Même si je recommande toujours d’utiliser le protocole SFTP pour les transferts de données, il peut arriver que certaines applications, comme par exemple un scanner, aient besoin d’un accès FTP pour envoyer leurs données.

Dans le cadre d’un transfert SFTP, la connexion est encryptée du début à la fin et passe par le port 22. Rien n’est à configurer dans la partie FTP. Par contre, l’utilisateur devra faire partie du groupe ssh, ce qui veut dire aussi que les fichiers systèmes seront accessibles en écriture et qu’il pourra ouvrir une session ssh sur votre serveur. Mais comme vous ne stockez pas de mots de passe dans des fichiers non protégés, celà ne devrait pas poser de problème. L’utilisateur qui se connecte en SFTP, sera placé directement dans son home folder, comme spécifié dans son profil (« Users and groups »).

Pour un transfert FTP ou FTPS (par clé privée TLS), vous devez d’abord ajouter le groupe « ftp » à l’utilisateur concerné.
Ensuite, il vous suffit d’activer le service FTP et de configurer ses différents paramètres. Parmi ceux-ci, le port, défini à 21 par défaut, la configuration de l’accès guest (surtout si votre serveur est accessible par internet), le FXP sert à établir un tunnel entre 2 connections FTP (pas toujours supporté par les autres systèmes), la fonction « Resume » pour reprendre les transferts interrompus sans devoir tout recommencer, le mode chroot (très important!) permet d’isoler l’utilisateur dans son home folder et en faire sa racine (il ne pourra donc pas se balader dans les fichiers du système), et SSL/TLS si vous souhaitez chiffrer la connection.

Pour plus de sécurité, n’hésitez pas à regarder l’onglet « Modules » qui permet de configurer quelques règles, comme le nombre de tentatives maximales, utile contre les attaques brute-force.

Dans les versions plus récentes, il est même possible de définir des plafond pour les taux de transfert des utilisateurs et des guests.

nas_ftp1nas_ftp2

La connection se faite ensuite simplement avec un client FTP comme Filezilla.

 

Configurer un repository TFTP

TFTP (ou Trivial File transfer Protocol) ne nécessite pas d’authentification et propose simplement le contenu d’un dossier sur le port 69 en UDP.
Ce protocole est surtout utilisé pour des systèmes « boot-from-lan » ou pour la propogation de firmwares, comme c’est le cas pour les téléphones Cisco.

Son utilisation est des plus simples. Tout se passe dans le menu « TFTP » et les paramètres peu nombreux sont très explicites.

 

Activer l’accès par SSH

Normalement c’est une des premières fonctions à activer. Il est fortement conseillé de décocher la case « permit root login ». Les utilisateurs qui font partie du groupe « sshd » pourront se connecter à la console ssh mais devront utiliser la commande su pour se loguer en tant que root.

Par défaut l’authentification par mot de passe est activée, mais je vous conseille de la désactiver et d’utiliser à la place l’authentification par paire de clé. Pour celà, il vous suffit de copier votre private key dans la zone qui lui est destinée.

nas_ssh

SSH vous permettra d’avoir un accès console mais également de transférer de sfichiers par SFTP.

 

NFS: Network File Sytem

La configuration NFS permet de partager un dossier sur le réseau. Conçu à la base pour les systèmes UNIX/LINUX, ce protocole est maintenant géré également par les machines Windows à condition d’installer le package « Services for Unix » de Microsoft (qui pèse tout de même 218Mo et qui n’ets compatible que pour les OS 32bits), les dossiers seront ensuite visibles dans un nouvel « emplacement réseau ». Pour les Windows 64bits, il vous faudra les versions Enterprise ou Ultimate qui sont les seules à posséder la fonctionnalité « Services for Unix ».
Pour les systèmes Unix/Linux, un simple mount sera nécessaire pour monter le dossier partagé (le path à indiquer doit être le path complet à partir de la racine du serveur):

mount -t nfs IP_address:/path/to/directory /mnt

Peu de paramètres sont configurables car le protocole en soi n’est pas orienté « sécurité »:

nas_nfs

Si tout se passe bien, vous devriez voir apparaître votre share en tapant la commande

showmount -e localhost

 

AFP: Apple Filing Protocol

AFP est le protocole de partage de fichiers pour machines Apple.
Sa reconfiguration ressemble vaguement à celle de SMB mais avec certaines options spécifiques à Apple (notamment pour les partages destinés à Time-Machine):

nas_afp

N’oubliez pas de cocher la case « local user authentication » si vous souhaitez protéger vos dossiers.

S’il s’agit d’un partage destiné à des sauvegardes Time-Machine, il vous faudra sélectionner « Time-Machine » dans le choix « Automatic disk discovery mode ».

 

RSync

Rsync est l’un des outils les plus pratiques sous Unix/Linux pour synchroniser des fichiers entre différentes machines.

Il est facile de se tromper dans une commande rsync, ce qui peut entraîner des pertes de données. Pour tester votre script, n’hésitez pas à utiliser l’option -n qui correspond à faire un « dry-run », la commande s’exécutera mais aucune modification ne sera effectuée.
La synchronisation rsync va toujours modifier (voir même supprimer) le contenu du dossier destination en fonction de ce qui se trouve dans le dossier source.

Rsync est géré du côté client par plusieurs logiciels selon les plateformes:
deltacopy (Windows)
Grsync (Mac OS)
– rsync (*nix)

Plusieurs scénarios d’utilisation de rsync sont possibles:

Backup d’une machine client vers un serveur Rsync distant

La première étape consiste à démarrer le serveur rsyncd (qui tourne sur le port 873 par défaut):

nas_rsync1

Le paramètre « map to user » peut être configuré pour utiliser un user rsync (qu’il faut créer au préalable), mais le user guest peut faire l’affaire (dans mon cas, le user guest s’avère être le user FTP lorsque je vérifie les permissions des fichiers créés par rsync).

Pour vérifier que le serveur est up, un simple telnet est suffisant:

telnet ip_address 873

Ensuite, nous pouvons ajouter un share rsync, appelé « module » (les diverses options sont assez explicites):

nas_rsync2

Nous pouvons ensuite configurer le client sur notre machine Windows. Plusieurs logiciels peuvent convenir, le plus répandu étant deltacopy:

nas_rsync3

Un clic droit sur le profil permet de lancer un backup ou un restore et d’afficher les commandes utilisées.

Les fichiers ayant un nom avec des caractères accentués seront bien copiés, mais ces caractères seront remplacés par un underscore. Toutefois, le restore rétabli les caractères accentués, ainsi que les permissions. Pas besoin donc d’utiliser les options –iconv et -s.

Attention, les transferts rsync ne sont pas encryptés, votre mot de passe transite en clair si vous utilisez deltacopy tel quel.
Pour une utilisation plus sécurisée de rsync, faites le passer par ssh en activant l’option « connect via ssh » et en copiant le fichier contenant la clé privée dans le dossier où se trouve l’exécutable de deltacopy:

nas_rsync4

Lors d’une synchronisation rsync par ssh, seul le port 22 est nécessaire du côté serveur. Il n’y a donc pas besoin d’avoir un daemon rsyncd qui tourne sur le serveur et il est même conseillé de le désactiver si tous vos transferts passent par ssh.

Pour le backup d’une machine Unix/Linux, l’appel à rsync peut se faire en ligne de commande:

# list all modules on a remote host
rsync ip_address::
# do a rsync transfer source-->dest
rsync -avz --delete "/source/directory/" "ip_address:rsync_module/dest/directory/"
# do a rsync through ssh
rsync -avz -e "ssh -l username -i /home/myuser/.ssh/rsync_sshkey" "/source/directory/" "ip_address:rsync_module/dest/directory/"
# do a restore
rsync -avz -e "ssh -l username -i /home/myuser/.ssh/rsync_sshkey" "ip_address:rsync_module/dest/directory/" "/source/directory/"
# other options can be found in the rsync manpage

Les options -avz permettent d’utiliser le mode « archive » (conservation des permissions, etc.), la verbosité et la compression. L’option –delete supprime les fichiers dans le folder destination qui ne sont pas présents dans le folder source.

Synchronisation entre serveurs NAS4Free

La configuration se fait dans la partie « client » de rsync. Attention, le directory qui sera modifié est la destination, et donc le directory local!

nas_rsync5

Backup d’un directory local vers un autre directory local

Dans le mode local, la synchronisation rsync va modifier le contenu du dossier destination en fonction de ce qui se trouve dans le dossier source, les deux dossiers étant locaux.

nas_rsync6

 

Unison

Unison est un outil de synchronisation de fichiers, implémentant l’algorithme rsync, mais dont le fonctionnement diffère de celui-ci.
En effet, pour Unison il n’y a pas de sens de synchronisation, il y a seulement des clients qui se connectent à un serveur par SSH (avec authentification par paire de clés) et qui s’assurent que leurs dossiers (définis dans des profils) aient le même contenu, un peu à la manière dont fonctionne dropbox.

Le dossier de synchro sur le serveur doit avoir les permissions nécessaires (700 par exemple) pour le user que nous allons utiliser (celui-ci doit avoir les accès SSH). Le dossier de synchro se peuplera ensuite tout seul en fonction des profils qui s’y connecteront.

Ensuite, nous allons créer des « profils » sur les clients. Contrairement à rsync qui définit des modules du côté serveur, Unison utilise des profils du côté client pour gérer les différents dossiers à synchroniser.
Pour celà nous devons installer un client Unison et lui donner les droits d’execution ( chmod 755 /usr/bin/unison ).
Une fois que c’est fait, nous pouvons lancer le GUI et créer un nouveau profil en fournissant le dossier local à synchroniser, le serveur Unison et le dossier qui sera créé sur le serveur pour le nouveau profil (même nom que le dossier à synchroniser généralement).

Lors de la synchronisation (manuelle pour l’instant) le client affichera une fenetre avec ce qu’il y a à synchroniser et dans quel sens.

nas_unison

Pour automatiser le tout, il suffit de créer un script qui lancera la synchro avec un profil défini. comme les paramètres de synchro sont liés au profil, on peut modifier le profil dans le GUI sans modifier le script automatisé:

unison -ui text -batch profile_name

-ui pour tourner en mode « ligne de commande », -batch pour qu’il prenne lui-même les actions sans demander à l’utilisateur.

Ce script est à sauver dans un fichier .sh (n’oubliez pas de modifier les permissions en 744), puis à ajouter dans « crontab -e » (sans oublier de mettre les escape char pour les espaces: backslash + espace).

 

iSCSI

Le protocole iSCSI permet à des machines clients (appelés initiateurs) d’envoyer des commandes SCSI à des périphériques de stockage SCSI (targets) sur des serveurs distants. Il s’agit d’un protocole de SAN (Storage Area Network), qui permet de rassembler les ressources de stockage (LUNs) dans un centre de données tout en donnant l’illusion que le stockage est local.

La configuration iSCSI que je vais mettre en place est un peu élaborée mais se rapproche beaucoup plus de ce que l’on peut trouver en entreprise avec les réseaux SAN en fibre optique. Nous allons en effet implémenter le multipath (MPIO) sur un réseau SAN dédié pour fournir des LUNs à un ESXi. En clair, notre NAS aura 1 interface réseau pour le trafic applicatif (LAN), 1 interface pour la gestion de la machine (Management LAN), et 2 interfaces pour les connexions redondantes vers le réseau dédié au stockage (SAN1 et SAN2):

 NAS4FreeESXi
LAN192.168.0.1192.168.0.2
MGT192.168.100.1192.168.100.2
SAN110.10.10.10/2410.10.10.11/24
SAN210.20.20.20/2410.20.20.21/24

Configurez les adresses IP de NAS4Free dans la partie « network » et redémarrez votre NAS.
Pour la configuration de l’ESXi, ça se passe dans « host > network > configuration », où vous devez ajouter les ports VMKernel SAN1 et SAN2 et configurer leur adresse IP sans passerelle (les ports LAN quant à eux sont des ports classiques).

nas_iscsi1nas_iscsi2

Avant de passer à la suite, testez la connectivité entre les deux machines avec ping.
Dans le cadre de cet article, j’ai utilisé 2 serveurs HP Microserver (NAS4Free et VMWare ESXi), chacun équipé d’une carte réseau quad-port gigabit (Intel PRO 1000 PT quad pour le NAS et Intel PRO 1000 VT quad pour l’ESXi). Les 2 serveurs sont connectés entre eux par des câbles RJ45 droits.

Le choix d’implémenter le MPIO vient de la similarité avec les réseaux en fibre optique utilisant le multipath.
De plus, la mise en pratique de MPIO est le seul moyen d’obtenir une bande-passante surpassant celle d’une interface unqiue, ce qui n’est pas possible avec le protocole LACP (link aggregation) ou CARP.

Créer la target iSCSI en quelques étapes

  1. Créer un volume ZFS
  2. Activer le serveur iSCSI
  3. Configurer un portal (adresses IP + ports)
  4. Configurer la liste des initators autorisés
  5. Configurer le volume ZFS comme étant un extent
  6. Configurer la target iSCSI en lui attribuant tous les paramètres précédemment cités (sans oublier de sélectionner la taille de bloc la plus optimisée)

Voici les différentes étapes en images avec quelques explications:

La création du volume ZFS se fait dans la partie ZFS. Il est tout-à-fait possible de créer un target iSCSI pointant vers un fichier ou un device brut, mais les volumes ZFS sont faits pour ça, donc autant les utiliser. Le volume ZFS n’a pas de point de montage et n’est donc pas visible à la racine du pool mais par contre il est visible en utilisant la commande zfs list.

nas_iscsi11

Pour le créer en ligne de commande (et modifier la taille logique des blocks qui est par défaut de 8K), voici ce qu’il faut exécuter:

zfs create -s -b 4k -o compression=on -V 40G raidpool/zvol_test

Suivi d’un synchronize: « ZFS > configuration > synchronize ».
J’ai choisi d’activer la compression car avec la puissance des processeurs actuels, la compression n’a quasi pas d’impact sur l’utilisation CPU mais permet de faire transiter plus de données sur un lien réseau dont la bande-passante est limitante (bottleneck).
L’option -s sert à créer un disque en mode sparse (espace alloué au fur et à mesure).

Il faut ensuite activer le serveur iSCSI dans la partie « Services > iSCSI »:
Le base name est un identifiant unique utilisé pour lier les targets/initators à cet identifiant plutôt qu’à une interface réseau ou un HBA. Selon la RFC 3721, le base name doit être formatté de la manière suivante: iqn.date_de_registration_du_domaine.com.example .
Donc j’aurais très bien pu mettre: iqn.2011-08.com.it-tude.

nas_iscsi12

Ensuite nous pouvons configurer le portal, qui définit sur quels adresses IP et quels ports le serveur iSCSI peut communiquer.
Vous pouvez donc ôter les adresses de LAN et de management:

nas_iscsi13

Nous devons ensuite spécifier les machines/subnets autorisés à se connecter, c’est-à-dire les initators (un peu à la manière de NFS):

nas_iscsi14

Ensuite, nous configurons l’extent (équivalent du share ou partage) comme étant le volume ZFS (et nous lui donnons un nom au passage):

nas_iscsi15

Et enfin, nous créons le target qui sera visible par les clients iSCSI en spécifiant les paramètres précédemment configurés:

nas_iscsi16b

Même si nous avons optimisé les tailles de blocks dans la première partie, il nous faudra ici revenir en arrière pour des raisons de compatibilité.
Souvenez-vous, nous avions contourné l’émulateur GNOP pour accéder aux disques en mode RAW, avec des secteurs physiques de 4KB.
Le problème est que ESXi ne gère pas les volumes avec une taille de block physique de 4KB, nous sommes donc obligés de configurer les targets pour qu’ils présentent des LUNs de 512B/block.
La chaîne finale ressemble donc à ceci (blockP pour les blocks physiques et blockL pour blocks logiques):
> Nas4Free (Physical disk): 4K/blockP-4K/blockL(RAW)
> ZFS Volume: 8K/blockL (par défaut, mais peut être de 4K (optimisé pour OS) à 64K (optimisé pour bases de données))
> iSCSI target: 512B/blockP
> ESXi LUN: 512B/blockP-1MB/blockL-8K/sub-blockL (la taille logique des blocks implique une limite à 2TB pour la taille max des fichiers pour les partitions formatées en VMFS2 ou 3(sub-blocks de 64K), mais pas pour le VMFS5 (sub-blocks de 8K et les fichiers de taille inférieure à 1K sont stockés dans les metadatas plutôt que dans des blocks). La taille maximale des LUNs est de 2TB pour les ESXi 5.0.X et 5.1.X, mais elle passe à 62TB à partir de la version 5.5.0. De plus, contrairement au VMFS3, le format VMFS5 s’aligne automatiquement pour éviter les problèmes de chevauchement de blocks)
> VM dans ESXi: 512B/blockP-4K/blockL (pour l’OS) ou supérieur pour des LUNs destinés à des DB .

Seuls les OS à partir de Windows8/Server2012 supportent nativement des blocks physiques/logiques de 4K. Pour les Windows7 et inférieurs, la taille de block maximale supportée est de 512B logique/4K physique (appelé advanced format ou 512E) (voir screenshot ci-dessous).

Pour vérifier la taille des blocks sur une machine Windows, vous pouvez exécuter la commande suivante en tant qu’admin:

# fsutil fsinfo ntfsinfo c:

nas_iscsi30

Il est également possible de configurer une authentification CHAP sur les targets iSCSI mais comme ceux-ci restent dans un réseau SAN, ça me semble superflu de la configurer et ça ne ferait qu’alourdir la procédure, même si au final la configuration CHAP est très simple.

Connecter la target iSCSI à notre ESX

Maintenant que la partie NAS est prête, il nous reste juste à configurer l’ESXi.

Nous allons premièrement ajouter un initateur iSCSI dans la partie « host > configuration > storage adapter » en cliquant sur « add > add software iSCSI adapter ».
Dans le menu « Dynamic discovery », nous ajoutons les 2 adresses SAN de notre NAS ( et aussi les infos CHAP si nécessaire):

nas_esxi1

Après avoir actualisé et réanalysé le menu « storage adapters », vous devriez voir apparaître les LUNs (vous aurez peut-être besoin de fermer la console pour les voir):

nas_esxi2

Il est maintenant temps d’aller dans le menu « storage » pour ajouter notre LUN (au format VMFS5):

nas_esxi3

Une fois que votre LUN apparaît dans les datastores, sélectionnez-le et cliquez sur « propriétés > gérer les chemins (paths) », nous allons configurer le multipath en round-robin (circulaire en français). Validez les changements en cliquant sur « modifier » et vous devriez voir les 2 paths en mode actif(E/S):

nas_esxi4

Votre datastore est maintenant prêt à accueillir vos VMs.

2 remarques importantes:

  • Le fait de redémarrer le service iSCSI sur le NAS suite à l’ajout/modifications d’autres targets/LUNs n’interrompra pas la communication des LUNs non modifiés. Vos VMs continueront donc de tourner normalement.
    Toutefois je déconseille de trop jouer avec les LUNs sur un système de production car en cas de blocage, vous risquez de faire planter l’ESXi, voire même le NAS entier.
  • Si vous modifiez la structure de LUNs en cours d’utilisation, vous risquez de créer sur l’ESXi des « dead paths » et les targets iSCSI s’afficheront comme étant en « standby », même si les paths sont restaurés par la suite:
    nas_esxi5
    Le seul moyen de résoudre ce soucis est de redémarrer votre ESXi, donc soyez avertis.

 

uPNP A/V Media server, pour streamer vos médias en DLNA

Le serveur uPNP, qui n’est autre que Fuppes, permet d’envoyer du contenu multimédia (photos, musiques, films) depuis votre NAS vers tout autre matériel DLNA (Xbox, Playstation 3, XBMC, et autres mediabox) afin de les « streamer » vers votre télé.

Dans le cas où les formats sont incompatibles, le NAS peut s’occuper de les transcoder pour qu’ils soient compatibles avec vos équipements (ce qui requiert un peu de puissance processeur et qui n’est pas toujours possible sur les NAS plus anciens tels que les vieux Synology).

La fonction uPNP s’active très facilement, il suffit de lui indiquer un dossier où stocker sa base de données (fuppes.db), ainsi que les dossiers contenant les médias.
La web user interface n’est qu’une page web d’administration, vous n’êtes pas obligés de l’activer.

nas_upnp

 

iTunes/DAAP, pour streamer vos morceaux de musique

Votre serveur, qui n’est autre que firefly, sera alors reconnu dans iTunes ou tout autre client Daap et vous pourrez jouer les morceaux de musique se trouvant sur le NAS.
Au niveau de la configuration, c’est quasi identique à uPNP:

nas_daap

Là où ça devient intéressant, c’est dans l’interface web d’administration (protégée par mot de passe) où vous pouvez:

  • protéger l’accès à votre musique par mot de passe
  • Créer des playlists avec des critères de sélection (par exemple: style=métal)
  • Scanner les nouveaux fichiers ajoutés à la bibliothèque
  • Régler les paramètres internes de l’application

 

Dynamic DNS

Ce service vous permettra de créer un record DNS dynamique chez un fournisseur tel que dyndns.orgou no-ip.org (leur service FreeDDNS est gratuit avec certaines restrictions).
Si vous avez une connexion internet qui n’a pas une IP WAN fixe et que vous souhaitez avoir une url qui pointe vers votre modem, il vous faudra utiliser ce genre de service. Il permet de créer une url du type http://monurl.dyndns.org et que celle-ci pointe vers votre IP dynamique qui est elle-même mise à jour régulièrement grâce à ce service. Si l’extension dyndns.org ne vous plait pas, il est toujours possible de créer un alias DNS du style http://monurl.be (payant) qui pointe vers l’url dyndns.

La configuration du client Dyndns est documentée sur les sites des fournisseurs mais elle est au final assez simple, il suffit de fournir votre login dyndns, mot de passe, domain name (l’url en dyndns.org):

nas_ddns

Pour les paramètres de rafraîchissement, je conseille pour l’update period une valeur de 900, vérification de l’IP toutes les 15 minutes et mise-à-jour demandée si elle est différente.
Pour le paramètre forced update, j’ai mis 864000, ce qui correspond à 10 jours (le maximum pour le client).

Attention, les fournisseurs de services Dyndns ont des règles qu’il ne faut pas transgresser. Les domaines pour lesquels des « forced update » sont exécutés dans des intervalles inférieurs à 24h seront bloqués et blacklistés pour des raisons de sécurité, évitez donc les valeurs de « forced updates » inférieures à 86400 (c’est expliqué dans leurs conditions générales et dans leur algorithme de DNS refresh).

 

SNMP – Simple Network Management Protocol

Ce service est utilisé pour monitorer/gérer à distance certaines fonctions du NAS. Le client intégré à NAS4Free est capable de communiquer avec un serveur de gestion tel que Nagios.
Par manque de documentation et de par le fait que SNMP n’est pas un protocole des plus sécurisés, cette section ne sera pas abordée ici.

UPS – la connection à l’onduleur

ups_apc900Le service UPS (nuts) permet de communiquer avec l’UPS et de déclencher des alertes en fonction de son état ou de son niveau de batterie (alerte mail, extinction du système).

Pour le configurer, vous devez lui fournir un driver correspondant à votre UPS (dans la liste des drivers qui est fournie). dans mon cas, j’ai connecté un APC Back-UPS pro 900 en USB, j’ai donc pris le driver « usbhid-ups ».

Pour le port, soit vous le mettez sur « auto »(de préférence), soit vous identifiez le port lors de la connection de l’UPS en vérifiant sur quel port USB il se trouve, grâce au log système. Vous devriez trouver un port du type /dev/ugenX.X .
En cas de soucis de déconnection du service, il est recommandé d’ajouter l’option « pollinterval=10 » aux paramètres auxiliaires.

Après avoir configuré le service, vous devrez redémarrer le NAS pour qu’il détecte l’UPS.

nas_ups2

 

nas_ups3

Webserver

Le serveur est très simple, il suffit de spécifier un port d’écoute non-utilisé et de fournir le path où sont stockés les fichiers web.
Il y a même la possibilité de configurer une authentification des users.
D’un point de vue personnel, je trouve qu’un serveur web n’a rien à faire sur un Nas et devrait se trouver sur un serveur séparé, ceci pour des raisons de sécurité.

Bittorrent

Derrière le service bittorrent se trouve le client transmission, responsable de la gestion des torrents, et fournit toutes les possibilités attendues pour ce genre de service.

La configuration est très explicite et permet de séparer les fichiers torrents, les fichiers incomplets et les fichiers téléchargés.
De plus une interface web d’administration permet de visualiser l’avancement et d’ajouter des fichiers torrent directement.

nas_torrent1

nas_torrent2

Attention, les droits des datasets peuvent poser problème si vous n’autorisez pas « others » à y accéder. Pour remédier à celà, vous pouvez créer un dataset avec toutes les permissions spécifiquement dédié au téléchargement de torrents. vous pourrez ensuite le monter ailleurs ou le partager avec CIFS ou AFP.

Conclusion

NAS4Free est un système très stable et très complet au niveau de ses fonctionnalités. Même si son interface n’égalera jamais le DSM de Synology, elle dispose de toutes les options nécessaires.

Là où le bas blesse, c’est au niveau de la documentation. Les howtos et le forum de Nas4Free ne sont pas aussi complets qu’on le souhaiterait, certaines fonctions ne sont détaillées nulle part et il faut souvent expérimenter pour espérer trouver à quoi elles servent (ce qui a fameusement retardé la publication de cet article).

L’implémentation de ZFS au niveau du systè et me de fichier est correcte, mais on aurait souhaité que ses fonctionnalités au niveau iSCSI, NFS et CIFS soient utilisées nativement au lieu de passer par des services tiers.

Nas4Free est une solution tout-à-fait utilisable pour les particuliers, ainsi que pour les PMEs, pour autant qu’un des employés puisse supporter la configuration et dépanner en cas de pépin. Par contre, pour un environnement professionnel, s’il s’agit purement d’une machine dédiée au stockage de données, je me tournerais plutôt vers une solution basée sur SmartOS. Bien que Nas4Free soit robuste, il m’est arrivé de le faire crasher quelque fois, ce qui m’a obligé plusieurs fois à faire un hard reboot de la machine.

J’attends avec impatience une prochaine version de Nas4Free basée sur BSD10 et apportant un lot de nouveautés (et de stabilité).

Tags: , , ,

Trackback from your site.

Comments (3)

  • Renato

    |

    Bonjour,
    J’avais dans l’idée depuis déjà un moment de monter un serveur NAS domestique ou d’acheter un Synology…
    Finalement, j’ai fait quelques emplettes sur internet depuis 1 ou 2 ans…
    Mais j’ai longtemps hésité, quelle version installée de FreeNAS et puis FreeNAS 8 est arrivé avec de gros changement qui m’ont rendu perplexe…
    Puis par hasard, j’ai découvert NAS4Free, et après une première tentative d’installation et tenter de tâter de ZFS, j’ai découvert vos 2 articles sur NAS4Free, qui sont franchement très bons (comme vous le savez).

    Je n’ai pas votre connaissance réseau, ni votre maîtrise des différents protocoles, FrireWall et tout le tout time !
    J’ai fait un peu de programmation web (ASP, JavaScript), il y a quelques années… Mais j’ai peu de connaissance en Unix ou Linux, bien que j’utilise un iMac à la maison.

    J’ai pu facilement partager une bibliothèque (dans un DataSet Media) de musique et vidéos sur la télé ou vers iTunes.

    J’ai eu pas mal de difficultés à mettre en place les DataSet… Je voulais un DataSet (myData) général pour tout mes utilisateurs avec un DataSet par utilisateur contenu dans myData… Oups, de nombreuses fois, les DataSet contenus dans myData ne voulaient pas se créer… Cela fonctionnait en ligne de commande, mais pas par le WebGui…

    Puis le partage sur Windows 7, qui me semble pas très net… Mais cela semble fonctionner.
    Pour le Mac cela fut plus simple, mais il me fallut quelques tâtonnements.

    Mon prochain challenge, essayer de faire voir à mon scanner (Imprimante tout en un HP C309g) le serveur NAS pour y déposer des fichiers comme on peut le faire sur le MAC… Mais HP ne donnant aucune précision sur le(s) protocole(s) d’échange utilisé(s), je pense bien que je vais échouer.
    Le serveur WEB fonctionne, mais il me reste à mettre en pratique votre article : Accéder à son serveur à partir d’internet

    Pour l’instant je ne comprend pas l’utilité des volumes que je ne sais pas partager…

    Ma configuration est la suivante :
    Boite Advance Slimtour 3908B (trop bruyant, je vais changer les 2 ventilos 40mm). Ou changer boitier pour y mettre 1 ou 2 disques supplémentaires.
    Carte mère mini-ITX ASUS AT4NM10T-I avec 4 ports SATA 3Gb.
    2 disques 2″1/2 1Terra Hitachi montés en Mirror.
    Le système est monté sur une clef USB 8Mo.

    Vous promettiez un troisième article sur NAS4Free, j’espère que vous n’avez pas changer d’avis.

    Mes grands regrets à propos de NAS4Free :
    Un manque de documentation sur les différents paramètres de chaque protocole… La documentation en ligne en anglais s’adresse à des administrateurs réseaux.
    A quand, des pages HTML avec aide en accès direct sur le serveur, comme cela la doc est conforme à la version installée (au bug prêt)…
    Vos articles viennent combler ce vide… Même si pour ma part, je ne suis pas à ce niveau.
    Merci à vous. Toutes mes félicitations.
    René

    Reply

    • Sebastien Lambot

      |

      Bonjour René,
      Créer des datasets imbriqués les uns dans les autres devrait être plus aisé avec les récentes versions de Nas4Free. Pour les anciennes il fallait passer par la ligne de commande mais maintenant tout peut se faire par le GUI.
      Si tu veux tâter ZFS, je te recommande de lire les quelques articles que j’ai écrit, qui te donneront les bases pour exploiter correctement ZFS.

      Pour faire communiquer ton scanner avec ton serveur, si c’est un scanner/imprimante réseau, il doit y avoir une page web de configuration dans laquelle tu dois pouvoir lui spécifier des paramètres pour un envoi par FTP (file transfer protocole) ou par SMTP (envoi par mail).

      Les volumes ZFS sont utiles si tu as un ESXi pour les monter.

      Les 2 articles supplémentaires promis ont été condensés en un seul article (la partie 2/2). Je pense avoir couvert la plupart des fonctionnalités de base de Nas4Free mais si tu as une idée de config, je suis preneur.

      Pour la doc, c’est un problème général dans l’informatique. Il faut souvent chercher et fouiller les forums pour avoir des infos. Concernant Nas4Free, l’aide provient souvent des forums Nas4Free, Freenas et FreeBSD.

      Bon courage avec ta config et ne désespère pas!
      Si tu as des questions, n’hésite pas à les poser ici.

      Reply

  • Linux - christophebtssio | Pearltrees

    |

    […] Pour plus d'informations à ce sujet, reportez-vous à la page « Le manuel ». Notions de relativité des chemins de fichier Le titre est un peu compliqué, mais le principe est simple : un fichier peut être référencé de manière relative, par rapport au répertoire courant, ou de manière absolue par rapport à la racine. Installation et configuration d'un NAS (partie 2/2) – Sebastien Lambot. […]

    Reply

Leave a comment

You must be logged in to post a comment.