Projet NAS ITX

Chenbro ES34069 - EPIA SN 10000EG - Debian GNU/Linux - Samba


Logo indiquant que la page est valide XHTML par le W3C Validator

Installation de base

Je vais pas détailler le processus d'installation de debian ?! Voici les points de configuration.

Au bout de 20min, on a enfin une installation correcte, on peux se connecter en root ! C'est parti pour la configuration...

Les paquets essentiels pour un NAS

mdadm - Préparation des disques durs et du RAID.

Le nas utilise un RAID Logiciel avec mdadm. mdadm est géré par le noyau et le package debian mdadm.

LVM dans tout ca ? J'utilise mdadm mais pas LVM, même si les deux sont souvent liées. Faire un cliché instantané d'un volume me parait presque être le seul avantage de LVM si on l'utilise combiné avec mdadm. Ajouter ou encore retirer à chaud des disques est également possible en RAID. Réduire et augmenter l'espace (lvreduce et lvextends) l'est également. Et enfin il faut toujours augmenter sur le système de fichier la taille du volume, en plus de l'augmentation du volume logique, ou de «l'array» dans mon cas. De plus en raid, on peux souvent se débrouiller pour augmenter l'array. Bref je préfère m'épargner un configuration supplémentaire. KISS. Bon c'est parti. Mon choix est un RAID-5 sur 3 disques dur. Les différents sites conseillent de faire une partition pour déposer le raid dessus.

Partitionnement : Le but est de créer une partition primaire de type "Linux raid autodetect" avec tout l'espace du disque dur.
#cfdisk /dev/sda
#cfdisk /dev/sdb
#cfdisk /dev/sdc

Au final vous obtenez ceci pour chacun des disques.

                              Disk Drive: /dev/sda
                      Size: 1000204886016 bytes, 1000.2 GB
             Heads: 255   Sectors per Track: 63   Cylinders: 121601

    Name        Flags      Part Type  FS Type          [Label]        Size (MB)
 ------------------------------------------------------------------------------
    sda1                    Primary   Linux raid autodetect          1000202,28

Création du volume RAID. Installation du paquet mdadm. En effet, il faut des programmes supplémentaires. Sous debian, ce n'est pas inclus. Déjà premier bug et première digression dans ce rapide HOW-TO. Lors de l'installation du paquet mdadm, il rajoute le paquet citadel. Ce bug est référencé chez ubuntu. Bien entendu ces soucis se règlent en quelques minutes de google, mais bon, je n'en rajoute pas. Personnellement j'ai résolu le problème en installant au préalable postfix. Cependant, récemment, une solution alternative semble exister.

#apt-get install postfix
#apt-get install mdadm

L'autre solution est :

#apt-get --no-install-recommends mdadm

Je m'amuse d'abord a créer un RAID-0, histoire de voir 3To après dans l'explorateur Windows. Oui, je sais, on vois 2.72To mais c'est de l'abus de langage de windows. Ce devrait être 2.72TiB.

#mdadm --create /dev/md0 --level=0 --raid-devices=3 /dev/sd[abc]1

Pour le raid5, la commande est simplement :

mdadm --create /dev/md0 --level=0 --raid-devices=3 /dev/sd[abc]1

Attention cette fois ci, même si le volume est immédiatement créée, il va y avoir un temps de construction. Ce processus prends plusieurs heures. Si vous arretez la machines, il risque fort de repartir de zéro. Bref on vous conseille de ne pas redémarrer.

Formatage en ReiserFS J'ai choisi ReiserFS, car je l'utilise par habitude. En 2004, quand j'ai commencé l'aventure en utilisant 6 mois une debian sur ma machine principale, ReiserFS me semblait être le système de fichier journalisé le plus abouti. Actuellement, le projet semble être plutot dans un piteux état. Le développeur principal Hans Reiser est en prison pour le meutre de sa femme. Le société Namesys qui maintenait le code est fermé ainsi que son site Web. Cependant techniquement une partition ReiserFS est très utile dans un NAS.

On créée le système de fichier, et on valide les diverses demandes. Ensuite on va le rajouter dans le fstab et monter la partition dans /nas. Je vous expliquerai l'utilité de user_xattr et acl dans la suite de cette doc. Pour utiliser user_xattr et acl on ajoute les paquets associés.
#apt-get install acl attr
#mkreiserfs /dev/md0
#mkdir /nas
#echo -e '/dev/md0        /nas            reiserfs defaults,acl,user_xattr  0   0\n' >> /etc/fstab
#mount /nas

Avec cette commande vous voyez l'espace disponible après la perte due au système de fichier.

#df -h

samba - Création de lecteurs réseau utilisables sur les clients du réseau.

Samba est vraiment un produit à part entière. Comme d'habitude je ne détaille que les points que j'ai du éclaircir pour mon usage personnel.

Création des utilisateurs et groupes Avant de vous lancer dans l'installation de samba, arrêtez vous et prenez un papier / crayon et réfléchissez. Vous devez trouver votre mode de fonctionnement niveau authentification.

Personnellement j'ai besoin d'un seul dossier partagé, utilisable avec un seul compte. J'ai simplement un dossier video que je veux partager avec un ami, qui se connectera en SSH. Il faudra donc deux comptes (beri & xterminator pour l'exemple), et deux groupes (commum et personnel).

Créons les utilisateurs.

#addgroup personnel
#addgroup commun
#adduser --ingroup personnel beri
#adduser --ingroup commun xterminator

Installer le paquet samba. J'indique les dépendances que m'as installé automatique apt-get.

#apt-get install samba
Les paquets supplémentaires suivants seront installés :
libcups2 libgnutls26 libldap-2.4-2 libtalloc1 libwbclient0 samba-common ucf

Il s'agit maintenant de configurer samba, on édite pour cela le fichier /etc/samba/smb.conf. Je mets en exemple ce que j'utilise personnellement. Je désactive tout ce qui concerne les imprimantes. J'active le support des fichiers cachés et systèmes sous samba. C'est pour gérer ces fichiers cachés et systèmes que nous avons installé les attributs étendus (user_xattr, paquet attr). Les fichiers "cachés" seront en fait des fichiers normaux sous linux, mais possèderont dans leurs attributs étendus le fait que le fichier est caché.

[global]
load printers = no
printing = bsd
printcap name = /dev/null
show add printer wizard = no
disable spoolss = yes

dos filemode = yes
store dos attributes = yes
map readonly = no
map archive = no
map system = no
map hidden = no
[beri]
browseable = yes
comment = BeriPersonnel
path = /nas/beri
valid users = beri
read only = no
dos filemode = yes
store dos attributes = yes
map readonly = no
map archive = no
map system = no
map hidden = no

Utilisez getfattr et setfattr : attr et autres posent problème, car il viennent de efs2progs et n'ont pas été patchés pour gérer les EA de ReiserFS...

#getfattr -d /nas/beri/Classement/Desktop.ini
getfattr: Removing leading '/' from absolute path names
# file: nas/beri/Classement/Desktop.ini
user.DOSATTRIB="0x26"

Vous pouvez enlever le message d'avertissement, en redirigeant la sortie des erreurs. Sachez également que getfattr permets de sauvegarder vos EA, dans un fichier pour les réappliquer plus tard. C'est utile si vous voulez sauvegarder vos attributs lorsque vous copier vos fichiers vers un système de fichier qui ne supporte pas les EA.

getfattr -R -d <dir> < backup.attr
setfattr –restore=backup.attr

Configurer maintenant vos ordinateurs windows pour utiliser votre nas. Vous pouvez utiliser l'accès par chemin UNC.

\\ip\partage

Ou encore par lettre de lecteur. Vous pouvez utiliser Outils > Connecter un lecteur réseau, ou encore faire un batch ou un script avec un net use. A vous de vous documenter. Personnellement j'utilise un net use sur mon bureau qui contient utilisateur et mdp.

net use lettre lecteur \\ip\partage [mdp] [user] [persistent flag]
	net use f: \\itx\nas$\beri monmdp /user:ITX\beri  /persistent:no

Mais vous pouvez utiliser du VBS, du KIX, et mettre vos script au logon etc... Enfin dans mon exemple j'ai mis le nom de mon nas (itx) au lieu de son ip, mais il vous faut des dns interne fonctionnels... Utilisez soit le fichier host, sois mettez un serveur dns ou configurer votre routeur... Personnellement ma freebox ne permets pas de personaliser les zones dns (GRR...), j'ai donc configurer mes fichiers hosts sur mes postes.

La sauvegarde du nas avec rsync et le script que j'utilise

La sauvegarde, le plus automatisée possible est essentiel. En automatisant le plus possible, on évite le risque que la sauvegarde ne soit pas faite. Par contre le système doit alors signaler toute anomalie. Un volume RAID-5 est sujets à divers failles, un effacement accidentel est possible.

Le boitier dispose de 4 disques dur, 3 ont été dédiés au volume partagés (RAID-5), le dernier est un backup des données. Il y a 1To utilisable par la sauvegarde et l'espace utile du nas est de 2To, il faut donc pouvoir exclure des dossiers. Rsync est un outil libre disponible sur le site du projet samba. Rsync est compatible avec la copie des EA, l'exclusion des fichiers, et la sauvegarde incrémentale.

Mon plan de sauvegarde est le suivant :

On obtiens :

Voici quelques lignes à adapter pour obtenir une belle crontab. Je récupére la sortie d'erreur et le numéro de sortie de rsync pour la vérification des erreurs.

mount -t reiserfs -o acl,user_xattr /dev/sdb1 /mnt/backup && _
rsync -vv --progress -a -A -X -b --backup-dir=/mnt/backup/2009-01-21 --delete-after /nas/ /mnt/backup
df -h ; umount /mnt/backup/

A vous de voir si vous gérer les mails dans le script (je trouve cela mieux), ou avec crontab. Un conseil n'oubliez pas fcron qui possède beaucoup plus d'options.

Au final il peut être interressant de créer un partage caché pour accéder aux sauvegardes depuis un client. Attention : la sauvegarde copie les droits d'origine, cependant méfiez vous si vous avez plusieurs utilisateurs à qui vous donner accès à la sauvegarde. Voici les options utiles pour un partage en lecture seule et caché par samba (smb.conf). Dans ce cas il faut laisser la sauvegarde montée en permanence. J'ai choisi de laisser le disque de sauvegarde démonté, le script le monte : cela me permets d'éjecter le disque dur si j'ai besoin.

read only = no
browseable = no

Divers

Vider les caches

Un autre petite commande que je voudrai aborder est vider le cache. Linux mets en cache RAM le système de fichier quand il y a de la place. Si ca vous amuse ou que vous y trouver un intéret vous pouvez le vider. Personnellement je le vide avant le backup, mais évidemment vous pourrez me rétorquer que ca ne serts à rien, mais le but de linux n'est pas d'être libre de ses choix ?

sync && echo 3 | tee /proc/sys/vm/drop_caches

Jouer avec le disque dur

Il est intéressant de connaitre la température interne du disque. Tous les disques ont maintenant une sonde de température et l'information est accessible via SMART. Il y a plusieurs paquets debian sur la température des disques, mais le plus efficace que je retiens est hddtemp.

hddtemp -w /dev/sd[a-d]