1. Expression du besoin

1.1. Besoin initial

Le besoin initial est de disposer d'un moyen de stockage externe qui puisse être utilisé facilement par tous les PC de la maison, qui offre un archivage sûr (ou le plus sûr possible) et qui soit simple à maintenir.

La solution à base de disque dur externe (USB) n'a pas été retenue principalement parce que l'archivage n'est pas sûr (il est facile de casser le disque USB suite à une erreur ou une chute) mais aussi parce que seul le poste connecté au disque dur peut l'utiliser (ou alors il faut créer un partage réseau).

Je me suis donc lancé dans la construction d'un NAS (Network Attached Storage), c'est-à-dire un "serveur de stockage réseau".

1.2. Expression détaillée du besoin

Le moyen de stockage devra avoir les fonctionnalités suivantes :

  • archivage sûr. La mise en place d'une réplication du disque par RAID 1 s'est naturellement imposée. Si un disque dur vient à tomber en panne, le second existe toujours et assure la sauvegarde le temps de remplacer le disque défaillant ;
  • archivage de grande capacité. Les disques de 1To (1000 Go) sont maintenant courants et leur coût est très abordable (aux alentours de 50 euros le disque) ;
  • le serveur doit pouvoir fonctionner de manière isolée (dans un garage ou dans les combles). Il ne dispose donc pas de clavier, d'écran et n'est pas forcémment physiquement accessible ;
  • le serveur ne doit pas être toujours sous tension. Il doit donc pouvoir être réveillé à distance et il doit se mettre en veille tout seul ;
  • le protocole d'accès utilisé pour la fonction "fichiers" est Netbios (pour le monde Microsoft) ;

1.3. Les étapes de réalisation

Les étapes de réalisation de ce serveur sont :

  • définition hardware du serveur ;
  • commande et assemblage du serveur ;
  • mise à niveau du réseau ;
  • installation de l'OS ;
  • configuration du serveur.

2. La partie matérielle

2.1. Définition de la plateforme hardware

Le serveur est une machine simple et bas de gamme. Il n'y a pas besoin de grosse puissance CPU ni de mémoire pour faire fonctionner un serveur de fichiers.

Ce serveur est équipé de trois disques durs :

  • un disque dur de 160 Go pour le système. Ce disque dur n'est pas monté en RAID, s'il tombe en panne, il suffit de racheter un disque dur et de remonter le système ;
  • deux disques durs de 1 To pour les données. Ces deux disques durs sont montés en RAID 1 et offrent donc une capacité de stockage de 1 To redondés. Les deux disques sont de marques différentes afin de diminuer les chances qu'ils tombent en panne simultanément. Ils ont les mêmes caractéristiques (même vitesse de rotation, même taille de cache) afin de construire un RAID "équilibré".

La description de la plateforme est la suivante :

Désignation Qte Référence Coût unitaire Coût total
Carte mère 1 Gigabyte MA74GMT-S2 44,05 44,05
Disque dur système 160 Go 1 Samsung 160 Go 8 Mo 3.5" 27,99 27,99
Disque de données 1 1To 1 Samsung 1 To 32 Mo 3.5" 49,00 49,00
Disque de données 2 1To 1 Hitachi 1 To 32 Mo 3.5" 44,55 44,55
RAM 1 Kingston KVR1333D3N9/2G 19,80 19,80
CPU 1 AMD Sempron 140 2.7 GHz 29,49 29,49
Boitier 1 Advance Sphere 8913B 29,97 29,97
Câble SATA 3 Câble serial ATA 150, câble 50 cm 2,99 8,97
Frais de transport 1 14,99 14,99
Kit de montage des disques durs 2 2,00 4,00
Câble d'alimentation Molex vers Sata 2 2,00 4,00
Total 276,81

Tout ce matériel a été commandé par Internet chez Cdiscount un dimanche soir et la livraison a été effectuée le mercredi matin sans aucune surprise.

Remarque, vous pouvez aussi choisir de recycler un vieux PC en serveur NAS. Toutefois, il convient que la carte mère ne soit pas trop ancienne afin qu'elle supporte les fonctionnalités suivantes :

  • fonctionnalité Wake-on-LAN afin de pouvoir démarrer le serveur depuis le réseau ;
  • boot depuis une clé USB si le serveur n'est pas équipé d'un lecteur de CD-ROM.

2.2. Mise à niveau du réseau domestique

Le réseau à la maison est, pour des raisons historiques, un réseau Wi-Fi. Compte tenu des volumes importants de transfert liés à un serveur NAS, la bande passante du Wi-Fi ne suffisait plus. J'en ai donc profité pour installer trois vraies prises réseau dans la maison.

Ces trois prises réseau ont été connectées à l'aide d'un petit switch Gigabit cinq ports (ma box à la maison ne dispose que d'un seul port Ethernet). Le switch installé est switch "TP-Link TL-SG1005D" à 25,84 euros commandé chez LDLC. Lui aussi est arrivé sans difficulté et sans surprise trois jours après la commande.

2.3. Assemblage de la plateforme

L'assemblage du serveur s'est réalisé sans réelles difficultés. C'est un travail qui ne demande aucune compétence particulière mis à part d'être soigneux et méticuleux.

2.4. Création de l'image de boot

La distribution Linux utilisée est une Debian. Il n'y a pas de réels critères objectifs permettant de choisir cette distribution plutôt qu'une autre mis à part la connaissance que j'ai de celle-ci. Je suppose que toute autre distribution aurait aussi fait l'affaire.

J'ai tout de même regardé du côté de FreeNAS qui est une distribution qui intègre directement tout ce qu'il faut pour faire un NAS mais je n'ai jamais réussi à faire fonctionner l'image de boot et mon manque de connaissances de FreeBSD m'a fait abandonner très rapidement ce choix.

Comme le serveur acheté ne dispose pas de lecteur de disquettes ni de lecteur de CD-ROM, il faut créer une image de boot sur clé USB. La capacité de la clé USB doit permettre de contenir la totalité de l'image ISO téléchargée, c'est-à-dire 193 Mo. Il faudra donc une clé USB de 256 Mo.

Pour créer cette clé USB, il faut utiliser une distribution Linux existante et exécuter les commandes suivantes :

 
Sélectionnez

# wget http://cdimage.debian.org/debian-cd/6.0.0/i386/iso-cd/debian-6.0.0-i386-netinst.iso
# cat debian-6.0.0-i386-netinst.iso > /dev/sdd
# sync

/dev/sdd est le nom du périphérique USB sur cette machine, cela peut être un autre device sur une autre configuration et cela doit être adapté au cas par cas.

Une fois que la clé USB est créée, il suffit de la tester sur un PC qui accepte de booter sur une clé USB.

2.5. Configuration du BIOS

Avant de commencer l'installation proprement dite du serveur NAS, il convient de modifier quelques paramètres dans le BIOS de la machine. Ces paramètres sont :

  • stop on all errors (but keyboard). En effet, le serveur ne disposant pas de clavier, il ne faut pas qu'il se bloque lors de son démarrage sur le fameux message d'erreur "No keyboard detected, strike a key to continue" ;
  • boot on USB device. Il faut que le serveur accepte de booter sur une clé USB ;
  • no floppy. Comme le serveur n'est pas équipé de lecteur de disquettes, autant désactiver ce composant. On fera de même pour les ports série, les ports parallèles, la carte son et autres périphériques inutiles ;
  • Wake-on-LAN. Le serveur doit pouvoir être réveillé par le réseau, il convient donc d'activer cette fonctionnalité au niveau du BIOS.

3. L'installation du serveur

3.1. Avant de débuter l'installation

Avant de se lancer dans l'installation, il convient de s'arrêter un instant afin de réfléchir aux différentes choses qui vont être demandées lors de l'installation :

  • le nom de la machine ;
  • l'adresse IP de la machine. Attention le serveur NAS est un serveur, il doit avoir une adresse IP statique. Il convient d'être sûr que l'adresse IP statique choisie n'est pas dans le pool d'adresses IP d'un serveur DHCP sinon gare aux conflits d'adresses ;
  • le masque de réseau ;
  • l'adresse de la passerelle vers Internet (l'accès Internet est nécessaire lors de la phase d'installation) ;
  • l'adresse du serveur DNS ;
  • l'adresse IP ou le nom du proxy HTTP (si nécessaire) ;
  • le mot de passe de l'utilisateur "root" ;
  • le nom du premier d'utilisateur non privilégié à créer ;
  • le mot de passe de cet utilisateur non privilégié.

3.2. L'installation de l'OS

L'installation est classique, j'utilise le disque de 160 Go (/dev/sda) en une seule partition pour le système et pour l'instant, j'ignore les autres disques durs (/dev/sdb et /dev/sdc).

J'installe une configuration minimale. Les fonctionnalités supplémentaires seront ajoutées au fur et à mesure des besoins.

La durée de l'installation est d'environ trente minutes.

Les autres fonctionnalités installées sur ce serveur sont :

  • un serveur SSH ;
  • la journalisation syslog-ng ;
  • la synchronisation de l'horloge par NTP ;
  • la gestion du RAID 1 ;
  • la gestion des volumes logiques ;
  • la gestion du protocole Netbios ;
  • les outils de mise en veille automatique ;
  • les outils de réveil réseau (Wake-on-LAN).

3.3. Le serveur SSH

Le serveur SSH permet de se connecter sur la machine afin de réaliser les différentes tâches d'administration. Le protocole SSH est un protocole chiffré qui offre en plus des fonctionnalités de transfert de fichiers.

L'installation du serveur SSH se fait avec la commande suivante :

 
Sélectionnez

root@nas:~# apt-get -y install openssh-server

Le fichier de configuration /etc/ssh/sshd_config par défaut n'est pas modifié.

3.4. Le serveur SYSLOG

L'installation du système de journalisation syslog-ng se fait avec la commande suivante :

 
Sélectionnez

root@nas:~# apt-get -y install syslog-ng

Le fichier de configuration /etc/syslog-ng/syslog-ng.conf est celui figurant dans le tutoriel Présentation du protocole Syslog au paragraphe 5.2.

3.5. La synchronisation NTP

L'installation des outils de synchronisation de l'horloge par NTP se fait avec la commande suivante :

 
Sélectionnez

root@nas:~# apt-get -y install ntp

Le fichier de configuration /etc/ntp.conf n'est pas modifié.

L'état de la synchronisation est affiché par la commande "ntpq -p" :

 
Sélectionnez

root@nas:~# ntpq -pn
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*87.98.188.218   213.251.128.249  2 u    9   64  377   35.652  -18.608   3.063
-91.121.56.88    195.83.222.27    2 u   21   64  377   52.739    0.327  50.007
+91.121.19.179   73.120.242.92    2 u    7   64  377   35.506  -18.932   2.743
+213.186.58.141  145.238.203.10   3 u   13   64  377   31.621  -12.615   5.021
 

4. Le partage de fichiers

4.1. L'installation du RAID

Les deux disques de 1 To sont vus sur le système comme les devices /dev/sdb et /dev/sdc. L'affectation des noms de devices pouvant varier d'un système à l'autre, il convient de bien les repérer dès le début.

Afin de pouvoir utiliser ces deux disques, il va falloir d'abord les partitionner. Le choix que j'ai fait est de créer une seule partition de type RAID Linux. Ce partitionnement se fait avec l'utilitaire fdisk :

  • création d'une nouvelle partition (option "n") ;
  • une partition primaire (option "p") ;
  • numéro de partition 1 (option "1") ;
  • modification du type de la première partition (option "t" puis "1") ;
  • choix d'une partition de type "Linux raid autodetect" (code "fd") ;
  • contrôle des informations (option "p") ;
  • enregistrement des modifications (option "w").

Le listing suivant montre ce partitionnement sur le premier disque :

 
Sélectionnez

root@nas:~# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xe9a70df3.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
 
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
 
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').
 
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-121601, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-121601, default 121601):
Using default value 121601
 
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)
 
Command (m for help): p
 
Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd9b8d8ee
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1      121601   976760001   fd  Linux raid autodetect
 
Command (m for help): w
The partition table has been altered!
 
Calling ioctl() to re-read partition table.
Syncing disks.

Il faut refaire cette opération sur le deuxième disque (/dev/sdc).

Ensuite, afin de pouvoir gérer le RAID logiciel, il convient d'installer le package mdadm :

 
Sélectionnez

root@nas:~# apt-get -y install mdadm

La création du volume RAID 1 se fait avec les commandes suivantes :

 
Sélectionnez

root@nas:~# mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1

Cette commande va créer un nouveau device /dev/md0 qui sera le device par lequel le système va gérer le volume du RAID.

Dès que le RAID 1 est créé avec la commande précédente, le système commence à construire et à répliquer les deux disques. Le suivi de cette tâche peut être fait en affichant le contenu de /proc/mdstat. La durée de la synchronisation des disques est fonction du volume des disques et de la puissance de la machine. A titre indicatif, cette première synchronisation a duré deux heures sur cette machine.

La commande pour visualiser en temps réel l'état d'avancement est la suivante :

 
Sélectionnez

root@nas:~# watch -n 1 cat /proc/mdstat
 
Every 1,0s: cat /proc/mdstat                            Sun Feb 20 12:17:37 2011
 
Personalities : [raid1]
md0 : active raid1 sdc1[1] sdb1[0]
      976758841 blocks super 1.2 [2/2] [UU]
      [==>..................]  resync = 12.1% (118410944/976758841) finish=106.4
min speed=134444K/sec
 
unused devices: <none>

Des détails sur ce volume peuvent être obtenus avec la commande suivante :

 
Sélectionnez

root@nas:~# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sun Feb 20 12:02:54 2011
     Raid Level : raid1
     Array Size : 976758841 (931.51 GiB 1000.20 GB)
  Used Dev Size : 976758841 (931.51 GiB 1000.20 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent
 
    Update Time : Sun Feb 20 12:18:04 2011
          State : clean, resyncing
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0
 
 Rebuild Status : 13% complete
 
           Name : nas:0  (local to host nas)
           UUID : 0fd2f675:18b5e42d:6f2c94e4:71da3631
         Events : 3
 
    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1

Une fois que le volume RAID est configuré, il faut modifier le fichier de configuration /etc/mdadm/mdadm.conf afin que ces nouvelles informations soient prises en compte lors de chaque redémarrage de la machine. Ce fichier doit contenir les informations suivantes :

 
Sélectionnez

root@nas:~# cat /etc/mdadm/mdadm.conf
# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#
 
# by default, scan all partitions (/proc/partitions) for MD superblocks.
# alternatively, specify devices to scan, using wildcards if desired.
DEVICE partitions
 
# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes
 
# automatically tag new arrays as belonging to the local system
HOMEHOST <system>
 
# instruct the monitoring daemon where to send mail alerts
MAILADDR root
 
# definitions of existing MD arrays
DEVICE /dev/sdb1 /dev/sdc1
ARRAY /dev/md0 devices=/dev/sdb1,/dev/sdc1
 
# This file was auto-generated on Sun, 20 Feb 2011 11:57:05 +0100
# by mkconf 3.1.4-1+8efb9d1

4.2. La création des volumes

Une fois que le volume RAID /dev/md0 est créé et synchronisé, il convient de créer les différentes partitions dans ce nouvel espace. Pour cela, le choix que j'ai fait est d'utiliser LVM. Le système LVM permet en effet de gérer de manière souple les différentes partitions en permettant de les retailler dynamiquement et surtout très simplement (agrandissement, diminution, ajout de nouvelles partitions, suppression de partitions obsolètes).

Le téléchargement des utilitaires LVM se fait avec la commande suivante :

 
Sélectionnez

root@nas:~# apt-get -y install lvm2

Pour plus d'informations et de détails concernant la gestion des volumes par LVM, ne pas hésiter à se reporter au tutoriel "Tutoriel : Gérer votre système de fichier grâce à LVM".

La commande suivante va créer un volume group nommé "vg_raid" et un nouveau device /dev/vg_raid qui contiendra tout le volume RAID :

 
Sélectionnez

root@nas:~# vgcreate vg_raid /dev/md0
  No physical volume label read from /dev/md0
  Physical volume "/dev/md0" successfully created
  Volume group "vg_raid" successfully created

L'affichage des informations concernant ce volume group se fait avec la commande suivante :

 
Sélectionnez

root@nas:~# vgdisplay
  --- Volume group ---
  VG Name               vg_raid
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               931,51 GiB
  PE Size               4,00 MiB
  Total PE              238466
  Alloc PE / Size       0 / 0
  Free  PE / Size       238466 / 931,51 GiB
  VG UUID               JAPf7t-Q0j2-WAGL-hZis-lsKK-kdqS-kRiRvp

Ensuite, il convient de créer les différents volumes logiques par la commande :

 
Sélectionnez

root@nas:~# lvcreate -n lv_photo -L 50G vg_raid
  Logical volume "lv_photo" created

Cette action va créer un nouveau device nommé /dev/vg_raid/lv_photo. Cette opération doit être répétée pour chacun des volumes à créer.

L'affichage des informations des différents volumes logiques se fait avec la commande suivante :

 
Sélectionnez

root@nas:~# lvdisplay
  --- Logical volume ---
  LV Name                /dev/vg_raid/lv_photo
  VG Name                vg_raid
  LV UUID                PW1Urz-mMcg-bg55-ZkEJ-Pi0H-mP9U-rccikX
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                50,00 GiB
  Current LE             12800
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0

Une fois que les différents volumes logiques sont créés, il faut les formater. Cette opération se fait avec la commande mkfs.ext3 :

 
Sélectionnez

root@nas:~# mkfs.ext3 /dev/vg_raid/lv_photo

Une fois que tous les volumes logiques sont formattés, il faut mettre à jour le fichier /etc/fstab afin de monter automatiquement ces différents volumes lors du démarrage de la machine. Pour cela, on rajoutera les lignes suivantes en fin de fichier :

 
Sélectionnez

/dev/vg_raid/lv_photo   /media/raid/photo ext3  errors=remount-ro 0 1

Ensuite, on pourra créer les différents points de montage :

 
Sélectionnez

root@nas:~# mkdir /media/raid
root@nas:~# mkdir /media/raid/photo

Une fois que toutes ces opérations sont effectuées, un petit reboot permet de contrôler que le redémarrage se déroule sans incident et surtout que les différentes modifications apportées sont bien prises en compte.

4.3. Les utilisateurs SAMBA

La politique de gestion des utilisateurs SAMBA est la suivante :

  • il existe un groupe d'utilisateurs UNIX nommé "nas". Ce groupe comprend tous les utilisateurs SAMBA.
 
Sélectionnez
root@nas:~# addgroup --system nas
Ajout du groupe « nas » (GID 113)...
Fait.
  • il existe un utilisateur UNIX générique système "nas_writer" et ce compte est "locké".
 
Sélectionnez
root@nas:~# adduser --system --disabled-login --ingroup nas --gecos "user nas_writer" --no-create-home --shell /bin/false nas_writer
Ajout de l'utilisateur « nas_writer » ...
Ajout du nouvel utilisateur « nas_writer » (108) avec le groupe « nas » ...
Le répertoire personnel « /home/nas_writer » n'a pas été créé.
  • il existe un utilisateur UNIX générique système "nas_reader" et ce compte est "locké".
 
Sélectionnez
root@nas:~# adduser --system --disabled-login --ingroup nas --gecos "user nas_reader" --no-create-home --shell /bin/false nas_reader
Ajout de l'utilisateur « nas_reader » ...
Ajout du nouvel utilisateur « nas_reader » (109) avec le groupe « nas » ...
Le répertoire personnel « /home/nas_reader » n'a pas été créé.
  • chaque utilisateur SAMBA dispose d'un compte utilisateur UNIX "locké".
 
Sélectionnez
root@nas:~# adduser --disabled-login --ingroup nas --gecos "user raymond" --no-create-home --shell /bin/false raymond
Ajout de l'utilisateur « raymond » ...
Ajout du nouvel utilisateur « raymond » (1003) avec le groupe « nas » ...
Le répertoire personnel « /home/raymond » n'a pas été créé.
  • chaque utilisateur SAMBA dispose d'un compte SAMBA avec le même mot de passe que celui de sa session Windows. Le fichier UNIX de stockage des mot de passe SAMBA est le fichier /etc/samba/smbpasswd.
 
Sélectionnez
root@nas:~# smbpasswd -a raymond
New SMB password:********
Retype new SMB password:********
Added user raymond.

4.4. L'installation de SAMBA

L'installation de SAMBA permet de définir des partages réseau au sens Microsoft du terme (Netbios).

La sécurité des ces différents partages reposera sur le modèle suivant :

  • chaque utilisateur des PC familiaux possède un compte SAMBA sur la machine ;
  • certains partages seront accessibles par tout le monde en lecture seule même s'il n'est pas authentifié, le partage des photos par exemple ;
  • certains partages sont accessibles en lecture seule uniquement à certaines personnes parfaitement identifiées (le partage des photocopies de certains papiers par exemple) ;
  • certains partages sont accessibles en lecture et en écriture à certaines personnes parfaitement identifiées.

L'installation de SAMBA permet d'offrir la connectivité réseau par le protocole Netbios. Cette installation se fait par la commande suivante :

 
Sélectionnez

root@nas:~# apt-get -y install samba

Il faut ensuite modifier le fichier /etc/samba/smb.conf afin de partager les différents répertoires. Le contenu final de ce fichier doit ressembler à ceci :

 
Sélectionnez

root@nas:~# cat /etc/samba/smb.conf | grep -v "#" | grep -v ";"
[global]
workgroup = WORKGROUP
server string = nas server
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
syslog only = yes
syslog = 8
panic action = /usr/share/samba/panic-action %d
 
security = user
guest account = nas_reader
encrypt passwords = true
smb passwd file = /etc/samba/smbpasswd
passdb backend = smbpasswd
map to guest = Bad User
 
create mask = 0666
directory mask = 0777
 
[photos]
   path = /media/raid/photo
   comment = Photos
   browsable = yes
   hide unreadable = yes
   write list = raymond
   guest ok = yes
 
[papier]
   path = /media/raid/papier
   comment = Papiers
   hide unreadable = yes
   browsable = yes
   write list = raymond
   guest ok = no

Le fichier /etc/samba/smb.conf doit contenir une entrée pour chacun des répertoires à partager.

La validation de ce fichier se fait en utilisant l'utilitaire testparm :

 
Sélectionnez

root@nas:~# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)
Processing section "[photo]"
Processing section "[papier]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
 
[global]
        server string = nas server
        map to guest = Bad User
        passdb backend = smbpasswd
        guest account = nas_reader
        syslog = 8
        syslog only = Yes
        log file = /var/log/samba/log.%m
        max log size = 1000
        dns proxy = No
        panic action = /usr/share/samba/panic-action %d
        create mask = 0666
        directory mask = 0777
 
[photo]
        comment = Photos
        path = /media/raid/photo
        write list = raymond
        guest ok = Yes
        hide unreadable = Yes
 
[papier]
        comment = Papiers
        path = /media/raid/papier
        write list = raymond
        hide unreadable = Yes

L'arrêt et le redémarrage du serveur SAMBA après modification du fichier de configuration se fait à l'aide des commandes :

 
Sélectionnez

root@nas:~# /etc/init.d/samba restart

4.5. Les droits des répertoires partagés

La dernière action à réaliser est l'application de droits corrects sur les différents partages. Les droits appliqués aux répertoires partagés sont les suivants :

  • le répertoire partagé doit appartenir à l'utilisateur nas_writter ;
  • le répertoire partagé doit appartenir au groupe d'utilisateurs nas ;
  • seuls l'utilisateur nas_writter et le groupe d'utilisateurs nas possèdent le droit d'écrire dans le répertoire partagé.

Ceci se fait avec les commandes suivantes :

 
Sélectionnez

root@nas:~# chown -R nas_writter /media/raid/photo
root@nas:~# chgrp -R nas /media/raid/photo
root@nas:~# chmod -R 770 /media/raid/photo
root@nas:~#
root@nas:~# chown -R nas_writter /media/raid/papier
root@nas:~# chgrp -R nas /media/raid/papier
root@nas:~# chmod -R 770 /media/raid/papier

Ces commandes sont à répéter pour chacun des répertoires partagés.

Une fois que ces modifications sont appliquées, il ne reste plus qu'à tester avec une machine Windows en essayant de monter les différents partages Netbios.

5. La gestion de l'énergie

5.1. La mise en veille automatique

La mise en veille automatique du serveur NAS est la partie la plus empirique du système. En effet, en général, cette mise en veille automatique se base sur l'activité détectée au clavier ou à la souris. Comme il s'agit d'un serveur, aucune action utilisateur ne peut être détectée et il va donc falloir jouer avec d'autres paramètres pour obtenir cette mise en veille automatique.

Les paquetages de mise en veille s'installent de la façon suivante :

 
Sélectionnez

root@nas:~# apt-get -y install acpid acpi-support acpi

Une fois que ces paquetages sont installés, les premiers tests consistent à vérifier que la mise en veille de la machine fonctionne avec les scripts installés.

La commande suivante va mettre en veille "suspend to RAM" le serveur. Pour réveiller le serveur, il suffira d'un appui sur le bouton "Power" :

 
Sélectionnez

root@nas:~# /etc/acpi/sleep.sh

La commande suivante va mettre en veille "suspend to DISK" le serveur. Pour réveiller le serveur, il suffira d'un appui sur le bouton "Power" :

 
Sélectionnez

root@nas:~# /etc/acpi/hibernate.sh

Pour la mise en veille automatique, il faut installer un paquetage supplémentaire par la commande suivante :

 
Sélectionnez

root@nas:~# apt-get -y install sleepd

Il faut ensuite modifier le fichier de configuration /etc/default/sleepd afin que le service sleepd base son algorithme de mise en veille sur l'activité réseau du serveur et non pas sur l'activité de l'utilisateur.

 
Sélectionnez

root@nas:~# cat /etc/default/sleepd
# This is a configuration file for /etc/init.d/sleepd.
 
# Parameters to pass to sleepd.
PARAMS="--netdev --tx-min --rx-min --unused 900 --sleep-command /etc/acpi/hibernate.sh"

Et enfin il faut relancer le service sleepd :

 
Sélectionnez

root@nas:/var/log# /etc/init.d/sleepd restart

5.2. Le réveil à distance du serveur

Avec la mise en place de la mise en veille automatique, il est nécessaire de disposer d'un dispositif de réveil à distance du serveur. La fonctionnalité utilisée est la fonctionnalité Wake-on-LAN. Cette fonctionnalité doit être activée dans le BIOS du serveur.

Concrètement, la fonction de WOL consiste à envoyer un paquet dit "magique" contenant l'adresse MAC de la carte réseau du serveur à réveiller. Lorsque la carte réseau reçoit ce paquet, elle réveille la machine. Pour que cette fonctionnalité fonctionne, il faut une carte mère et une carte réseau qui supportent ces fonctionnalités.

L'utilitaire que j'utilise est wol.exe et il peut être récupéré ici. Il s'agit d'un utilitaire en ligne de commande ce qui est plus pratique car il est ainsi possible de créer un script de redémarrage sur le poste client. Il est aussi possible de spécifier l'interface de sortie du paquet magique ce qui est bien pratique sur une machine qui dispose de plusieurs interfaces réseau. Cet utilitaire fonctionne sans problème sous Windows Seven 64 bits et sous Windows XP 32 bits.

Pour cela, il est nécessaire de connaitre l'adresse MAC du serveur NAS. Cette adresse MAC se récupère avec la commande suivante :

 
Sélectionnez

root@nas:~# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 1c:6f:65:5c:03:82
          inet adr:192.168.1.253  Bcast:192.168.1.255  Masque:255.255.255.0
          adr inet6: fe80::1e6f:65ff:fe5c:382/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4194340 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2355237 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000
          RX bytes:6303219186 (5.8 GiB)  TX bytes:148276469 (141.4 MiB)
          Interruption:26 Adresse de base:0xa000

Le script nas.bat est le suivant :

 
Sélectionnez

C:\program Files\wol\wol.exe 1C6F655C0382 192.168.1.100

dans lequel 1C6F655C0382 représente l'adresse MAC de la carte réseau du serveur NAS et 192.168.1.100 représente l'adresse IP de l'interface de sortie à utiliser.

Si cet utilitaire ne vous donne pas satisfaction, vous pouvez en tester d'autres :

  • http://www.matcode.com/mcgetmac.exe ;
  • http://www.matcode.com/mc-wol.exe ;
  • http://www.depicus.com/downloads/WakeOnLanGui.zip.

6. Conclusions

Nous voici arrivés à la fin de ce tutoriel et maintenant, le serveur NAS doit être complètement opérationnel. Il ne reste plus qu'à adapter la configuration décrite ici à votre besoin et à remplir votre disque.

N'hésitez pas à ajouter votre pierre à l'édifice en apportant vos remarques et commentaires dans la discussion prévue à cet effet : 59 commentaires

6.1. Remerciements

Je tiens à remercier Maxime Gault pour l'aide qu'il m'a apportée lors de la relecture ce document.