Mon tout premier ordinateur, qui date de 2001, était quelque peu délaissé ces derniers temps. Principalement à cause de ses performances, je ne pouvais plus l’utiliser en tant que desktop étant donné que je possède d’autres ordinateurs bien plus puissants qui subviennent parfaitement à mes besoins. Il est doté d’un disque dur de 160GB, 256MB de RAM et un Celeron 1GHz. Il existe déjà une machine similaire dans l’architecture de ce site web qui est dédiée à un environnement de pré-prod, je n’allais pas ajouter encore une machine à mettre en prod aux côtés de la machine qui sert ce blog. Il faut avouer que le site ne nécessite pas une puissance de calcul extraordinaire pour justifier l’ajout d’une nouvelle machine de ce type.
C’est là que l’idée du serveur de stockage m’est venue à l’esprit. Ça ne nécessite pas des performances démentes. Mon réseau est en 100Mbps en interne ce qui plafonne les transferts à 12,5MB/s. Le disque dur a beau être assez vieux mais n’est pas à la ramasse pour autant. La machine tourne avec une distribution Linux (Arch Linux (i686)), il faudra peut-être adapter les manipulations ci-dessous avec les spécificités de votre distribution.
Partage Windows avec Samba
Première étape, l’installation de samba :
pacman -S samba
On se place dans l’optique d’une utilisation en LAN et personnelle. On va donc choisir l’option d’un partage public (mode « share ») et non basé sur les utilisateurs. Voici mon fichier de configuration « /etc/samba/smb.conf » :
[global]
workgroup = WORKGROUP
server string = %h
security = share
log file = /production/logs/%m.log
max log size = 500
load printers = no
[Backups]
path = /production/share/Backups
available = yes
browsable = yes
public = yes
writable = yes
Pour la partie « global », j’ai désactivé le partage d’imprimante puisque je ne souhaite pas en faire un serveur d’impression mais uniquement un serveur de fichiers. J’ai placé la valeur de « security » à « share » pour en faire un serveur de partage public (l’autre mode étant « user »). J’ai placé quelques directives de log pour pouvoir facilement avoir une trace des actions et administrer ce service.
Ensuite, j’ai créé un partage « Backups » qui est destiné à recevoir des sauvegardes d’un poste client windows sur mon réseau, en lui mettant les droits maximums. Je suis quasiment le seul à utiliser mon réseau et il n’est pas possible d’attaquer ce service depuis l’extérieur.
Il ne faut pas oublier d’autoriser le service samba dans le fichier « /etc/hosts.allow » sous Arch Linux :
smbd: 192.168.0.0/255.255.255.0
Un start du daemon samba et le service devrait fonctionner :
/etc/rc.d/samba start
Depuis un poste client windows, vous pouvez vous rendre sur le partage « \\IP_SERVER\Nom_Du_Partage » (chez moi c’est « \\IP_SERVER\Backups ») pour vérifier le bon fonctionnement. Vous pouvez ajouter autant de partages que vous le souhaitez dans le smb.conf.
Si vous voulez lancer ce service au démarrage sur le serveur, il faudra ajouter le daemon « samba » dans le tableau « DAEMONS » du fichier « /etc/rc.conf ».
Partage Linux avec NFS
Pour l’installation du serveur NFS, il suffit d’installer les packages « nfs-utils » et « rpcbind ». Ensuite, tout se passe dans un fichier nommé « /etc/exports » où on va pouvoir spécifier les partages qu’on veut créer. Voici le mien :
/production/share 192.168.0.0/24(rw,sync,all_squash,subtree_check,anonuid=99,anongid=99)
En premier lieu, on renseigne le dossier qu’on souhaite partager. Puis, on indique qui va avoir l’autorisation de s’y connecter. Dans mon cas, j’autorise le réseau 192.168.0.0 avec un netmask /24 (255.255.255.0), donc tout ceux de mon réseau local. Finalement, on renseigne les options.
Explication des options :
- rw : Read & Write. Accès en lecture et écriture
- sync : mode synchronisé
- all_squash : ne pas autoriser l’utilisateur root à avoir les pleins pouvoirs
- subtree_check : vérifier que l’utilisateur est bien dans son espace et pas en dehors de ce qu’on lui a spécifié dans le fichier d’export
- anonuid/anongid : on dit que l’utilisateur anonyme est celui correspondant à l’uid et gid 99. Sur mon système, il s’agit de « nobody/nobody ».
On va mettre des autorisations dans le « /etc/hosts.allow » correspondant aux services d’NFS :
nfsd: 192.168.0.0/255.255.255.0
rpcbind: 192.168.0.0/255.255.255.0
mountd: 192.168.0.0/255.255.255.0
Finalement, on va pouvoir démarrer les services correspondant :
/etc/rc.d/rpcbind start
/etc/rc.d/nfs-common start
/etc/rc.d/nfs-server start
On met à jour le tableau « DAEMON » dans le fichier « /etc/rc.conf » avec les valeurs suivantes « rpcbind nfs-common nfs-server » pour que NFS puisse être démarré au boot.
Côté client, on va pouvoir monter le partage NFS grâce à mount :
mount -t nfs -o rw SERVER:/exported/path /local/path
Vous pourrez avoir accès au partage NFS directement depuis votre arborescence locale. Si vous voulez avoir ce partage au boot (toujours côté client), vous pouvez ajouter une ligne dans votre fichier « /etc/fstab » comme ceci :
SERVER:/exported/path /local/path nfs rw 0 0
Conclusion
C’est plutôt facile à mettre en place et ça simplifie grandement la vie. J’effectue mes backups des dumps générés de la nuit des deux serveurs web sur un serveur tiers mais aussi, je peux utiliser ce serveur comme moyen de partager des fichiers sur le réseau entier, quel que soit le service utilisé pour accéder à la donnée (NFS et Samba peuvent attaquer le même dossier sans problème).
Ressources :