Article

Fondamentaux Système : Exploiter son serveur Linux #3 – Stockage et échanges de fichiers

12–18 minutes

🎯 Ce guide présente le fonctionnement de LVM (Logical Volume Management), une technologie permettant de gérer les espaces de stockage d’un serveur Linux de manière souple. Vous découvrirez comment organiser les disques en volumes physiques, les regrouper au sein de groupes de volumes, puis créer et étendre des volumes logiques utilisables par le système. Nous aboedrons ensuite, la mise en place et le diagnostic des échanges de fichiers sur un serveur Linux. Vous y découvrirez le fonctionnement du protocole FTP, la différence entre les modes actif et passif, ainsi que les principes de création et de gestion des comptes FTP. Le guide présente également rsync, utilisé pour synchroniser des fichiers et réaliser des sauvegardes ou réplications de données.

Volumes logiques : LVM #

LVM (Logical Volume Management) permet de gérer les espaces de stockage d’un serveur Linux en ajoutant une couche d’abstraction entre les disques physiques et les systèmes de fichiers.

Sans LVM, un système de fichiers est généralement directement associé à une partition. Modifier sa taille peut alors nécessiter de manipuler directement les partitions du disque.

Avec LVM, le stockage est organisé en plusieurs niveaux. Il devient possible d’ajouter de l’espace à un groupe de volumes, puis d’utiliser cet espace pour agrandir un volume logique sans avoir à repenser toute l’organisation du disque.

LVM est particulièrement utile pour les serveurs dont les besoins en stockage peuvent évoluer au cours de leur exploitation.

Comment fonctionne LVM ?

LVM repose sur trois niveaux :

Physical Volume (PV) → Volume Group (VG) → Logical Volume (LV)

Les volumes physiques : PV #

Le Physical Volume (PV) correspond à une ressource de stockage intégrée à LVM.

Il peut s’agir notamment :

  • d’un disque ;
  • d’une partition ;
  • d’un volume RAID ;
  • d’un volume provenant d’un SAN.

Le PV constitue donc la brique de base à partir de laquelle LVM va pouvoir gérer l’espace disponible.

Pour afficher les volumes physiques configurés :

pvdisplay

Lorsqu’un nouveau disque ou une nouvelle partition doit être intégrée à LVM, elle doit d’abord être initialisée comme volume physique.

Par exemple :

pvcreate /dev/sdb1

Une fois cette opération effectuée, /dev/sdb1 peut être ajouté à un groupe de volumes.

À noter : la création du PV suppose que le disque ou la partition a été préparé au préalable. La méthode de partitionnement dépend notamment du type de table de partition utilisée sur le serveur.


Les groupes de volumes : VG

Le Volume Group (VG) regroupe un ou plusieurs volumes physiques.

C’est cette couche qui permet de mettre en commun les espaces disponibles sur plusieurs supports.

Par exemple, si un groupe vg0 dispose de plusieurs PV, l’espace libre de ces différents volumes peut être utilisé pour créer ou agrandir des volumes logiques.

Pour afficher les groupes de volumes :

vgdisplay

Pour ajouter un nouveau volume physique au groupe vg0 :

vgextend vg0 /dev/sdb1

Le groupe vg0 dispose alors de l’espace supplémentaire fourni par /dev/sdb1.


Les volumes logiques : LV #

Le Logical Volume (LV) est le volume que le système va réellement utiliser.

Il est créé à partir de l’espace disponible dans un Volume Group, puis peut être formaté avec un système de fichiers et monté dans l’arborescence Linux.

Pour afficher les volumes logiques :

lvdisplay -C

Pour créer un volume logique de 10 Go dans vg0 :

lvcreate -L 10G -n <NOMMONTAGE> vg0

Le volume peut ensuite être formaté avec le système de fichiers souhaité.

Par exemple, avec XFS :

mkfs.xfs /dev/vg0/<NOMMONTAGE>

Le volume est alors prêt à être monté et utilisé par le système.


Agrandir un volume LVM

L’un des principaux intérêts de LVM apparaît lorsqu’un volume arrive à saturation.

Il est possible d’ajouter de l’espace au Volume Group, puis d’utiliser cet espace pour agrandir le Logical Volume concerné.

Par exemple, pour ajouter 20 Go au volume var :

lvextend -L +20G /dev/mapper/vg0-var

L’opération ne s’arrête toutefois pas au volume logique.

Le système de fichiers doit lui aussi être agrandi afin de pouvoir exploiter l’espace supplémentaire.

Avec un système de fichiers XFS :

xfs_growfs /dev/mapper/vg0-var

Avec un système de fichiers ext3/ext4 :

resize2fs /dev/mapper/vg0-var

Il faut donc bien distinguer les deux opérations :

LV agrandi ≠ système de fichiers automatiquement agrandi.

LVM fournit l’espace supplémentaire, mais le système de fichiers doit également être capable de l’utiliser.


Monter un volume logique

Une fois le volume logique créé et formaté, il peut être monté dans l’arborescence Linux.

Commencez par créer le point de montage :

mkdir /var/lib/<NOMMONTAGE>

Le montage peut ensuite être effectué avec :

mount /var/lib/<NOMMONTAGE>

Pour que le volume soit automatiquement remonté après un redémarrage, son association doit être déclarée dans /etc/fstab.

Par exemple :

/dev/mapper/vg0-<NOMMONTAGE> /var/lib/<NOMMONTAGE> xfs noatime,logbufs=8 0 2

Attention : une erreur dans /etc/fstab peut empêcher le système de démarrer correctement. Vérifiez toujours la configuration avant de redémarrer le serveur.


Ajouter un volume LVM à un serveur

Lorsqu’un serveur manque d’espace, la logique générale est donc la suivante :

Nouveau stockage → PV → VG → LV → système de fichiers → point de montage

Par exemple, pour intégrer /dev/sdb1 dans un groupe vg0, puis créer un nouveau volume :

pvcreate /dev/sdb1
vgextend vg0 /dev/sdb1
lvcreate -L 10G -n <NOMMONTAGE> vg0
mkfs.xfs /dev/vg0/<NOMMONTAGE>

Le volume peut ensuite être monté sur le répertoire souhaité et ajouté à /etc/fstab pour être disponible automatiquement après redémarrage.

Cette organisation permet de faire évoluer progressivement le stockage d’un serveur sans devoir réorganiser l’ensemble de ses partitions.


Et pour la SWAP ?

LVM peut également être utilisé pour créer un volume dédié à la SWAP, c’est-à-dire l’espace disque utilisé par Linux lorsque la mémoire RAM disponible est insuffisante ou selon la politique de gestion de la mémoire du système.

Un volume logique peut être créé spécifiquement pour cet usage :

lvcreate -L 1G -n swap vg0

Il doit ensuite être initialisé comme espace SWAP :

mkswap /dev/vg0/swap

Puis déclaré dans /etc/fstab :

/dev/vg0/swap swap swap defaults 0 0

Pour activer la SWAP :

swapon -a

Vous pouvez ensuite vérifier son état avec :

cat /proc/swaps

ou :

free

Les commandes LVM à retenir #

Pour les opérations courantes, les commandes sont organisées selon les trois niveaux de LVM :

NiveauRôleCommandes principales
PVGérer les volumes physiquespvdisplay, pvcreate
VGRegrouper l’espace disponiblevgdisplay, vgextend
LVCréer et gérer les volumes utilisés par le systèmelvdisplay, lvcreate, lvextend

À cela s’ajoutent les commandes liées au système de fichiers, comme mkfs.xfs, xfs_growfs ou resize2fs.

À retenir

LVM permet de dissocier la gestion du stockage physique de son utilisation par le système.

Un disque ou une partition devient un PV, plusieurs PV peuvent être regroupés dans un VG, puis des LV sont créés dans cet espace pour être formatés et montés.

Cette organisation apporte surtout de la souplesse : lorsqu’un serveur manque d’espace, il est possible d’ajouter du stockage au VG puis d’utiliser cet espace pour créer ou agrandir les volumes nécessaires.

Echanges de fichiers #

Comprendre le protocole FTP(s) #

FTPS — File Transfer Protocol Secure

Le protocole FTPS (File Transfer Protocol Secure) permet de transférer des fichiers entre un poste client et un serveur à travers un réseau, tout en sécurisant les échanges grâce au chiffrement SSL/TLS.

Son fonctionnement repose sur deux composants :

  • un client FTPS, installé sur le poste utilisé pour effectuer les transferts ;
  • un serveur FTPS, installé sur le serveur qui héberge les fichiers.

Comme FTP, FTPS utilise un canal de contrôle pour gérer la connexion et les commandes, ainsi qu’un canal distinct pour le transfert des données. Le chiffrement TLS protège les identifiants ainsi que les données échangées entre le client et le serveur.

Selon la configuration retenue, FTPS peut fonctionner en mode explicite ou implicite. Le mode explicite est aujourd’hui le plus courant : le client établit d’abord une connexion FTP puis demande son passage en mode sécurisé avec TLS.

À retenir : FTPS conserve le fonctionnement général de FTP tout en ajoutant une couche de chiffrement TLS. Il permet ainsi de sécuriser les échanges de fichiers sans changer fondamentalement le modèle client/serveur de FTP.

Les serveurs FTP sous Linux/Unix

Plusieurs logiciels permettent de mettre en place un serveur FTP sous Linux ou Unix.

Parmi les solutions couramment rencontrées figurent notamment ProFTPd et Pure-FTPd.

ProFTPd

ProFTPd est un serveur FTP dont la configuration repose sur une logique proche de celle que l’on retrouve dans d’autres logiciels serveurs Linux.

Il permet notamment de gérer des configurations complexes et des serveurs virtuels.

Pure-FTPd

Pure-FTPd propose notamment la gestion d’utilisateurs virtuels et plusieurs possibilités d’authentification.

L’administration des utilisateurs virtuels peut être réalisée avec la commande pure-pw.

Par exemple :

pure-pw useradd gerard -u ftpuser -d /var/www/vhosts/www.website.com/

L’option -d permet de définir le répertoire auquel l’utilisateur est restreint.

La base des utilisateurs peut ensuite être reconstruite avec :

pure-pw mkdb

Créer un utilisateur FTP

La méthode de création d’un compte dépend du serveur FTP utilisé.

Dans une configuration ProFTPd utilisant les comptes système, la création peut par exemple être effectuée avec :

adduser alexandre

Lorsque la création ou la modification d’un compte FTP doit être effectuée par le support, les informations nécessaires doivent être précisées.

Il est notamment nécessaire d’indiquer :

  • le nom d’utilisateur ;
  • le mot de passe, selon les règles de sécurité applicables ;
  • le répertoire de base de l’utilisateur.

Le répertoire de base correspond à l’emplacement dans lequel l’utilisateur pourra effectuer ses opérations de transfert.

Conseil : dans une demande de création de compte, évitez de transmettre un mot de passe définitif par un canal non sécurisé. Lorsque cela est possible, privilégiez une procédure permettant à l’utilisateur de définir lui-même son secret.


Utiliser un client FTP

Le client FTP est le logiciel utilisé pour se connecter au serveur et transférer les fichiers.

Il permet notamment :

  • d’envoyer des fichiers vers le serveur ;
  • de télécharger des fichiers ;
  • de parcourir les répertoires accessibles ;
  • de gérer les transferts.

FileZilla est un exemple de client multiplateforme largement utilisé. Il permet de gérer différents types de connexions selon les protocoles pris en charge par le serveur.

Pour établir une connexion, vous devez généralement renseigner :

Adresse du serveur : IP ou nom d'hôte
Nom d'utilisateur  : <utilisateur>
Mot de passe       : <mot de passe>
Port               : 21

Le port dépend toutefois du protocole utilisé. Le port 21 correspond au FTP classique ; une configuration FTPS ou un autre protocole peut utiliser une configuration différente.


FTP actif ou FTP passif ?

FTP possède une particularité importante : les commandes et les données ne transitent pas par la même connexion.

La connexion initiale permet au client et au serveur d’échanger les commandes nécessaires à la session. Une seconde connexion est ensuite utilisée pour transférer les données.

C’est cette seconde connexion qui explique la plupart des difficultés rencontrées avec les pare-feu.

Le mode actif

En mode actif, le serveur établit la connexion destinée au transfert des données vers le client.

Cela peut poser problème lorsque le client se trouve derrière un pare-feu ou un routeur qui bloque les connexions entrantes.

Le mode passif

En mode passif, c’est le client qui établit la connexion de données vers le serveur.

Le serveur indique au client le port à utiliser, puis le client ouvre lui-même cette connexion.

Ce fonctionnement est généralement mieux adapté aux postes situés derrière un pare-feu ou une translation d’adresses.

C’est pourquoi le mode passif est généralement recommandé pour les connexions FTP depuis un poste client.


Les problèmes FTP les plus fréquents

La connexion au serveur ne fonctionne pas

Commencez par vérifier :

  • l’adresse du serveur ;
  • le port utilisé ;
  • les identifiants ;
  • la connectivité réseau ;
  • la présence éventuelle d’un pare-feu.

Si la connexion au serveur fonctionne mais que les transferts échouent, vérifiez notamment le mode passif.

La connexion fonctionne mais les fichiers ne s’affichent pas

Ce comportement est typique d’un problème lié à l’ouverture du canal de données.

Dans ce cas, vérifiez la configuration du client FTP et activez le mode passif.

Si le problème persiste, il faut également vérifier les ports nécessaires au fonctionnement du mode passif côté serveur et les règles de filtrage réseau associées.


Synchroniser des fichiers avec rsync #

rsync permet de synchroniser des fichiers et des répertoires entre deux emplacements.

Contrairement à un simple transfert de fichiers, rsync compare notamment les données présentes à la source et à la destination afin de ne transférer que ce qui doit l’être.

Il est donc particulièrement adapté aux :

  • sauvegardes incrémentales ;
  • réplications de répertoires ;
  • distributions de fichiers ;
  • synchronisations entre serveurs.

La synchronisation est généralement unidirectionnelle : les données sont copiées de la source vers la destination.

La syntaxe générale est la suivante :

rsync [OPTIONS] SRC [SRC] [USER@]HOST:DEST

ou dans l’autre sens :

rsync [OPTIONS] [USER@]HOST:SRC [DEST]

Par exemple :

rsync -av --delete --progress login@serveur:/source/ /destination/

L’option --delete mérite une attention particulière : elle permet de supprimer dans la destination les fichiers qui n’existent plus dans la source.

Attention : une commande rsync avec --delete peut donc supprimer des données. Vérifiez toujours la source, la destination et les options utilisées avant de lancer une synchronisation.

Pour connaître l’ensemble des options disponibles :

man rsync

À retenir

FTP permet d’échanger des fichiers entre un client et un serveur, mais son fonctionnement à deux canaux peut nécessiter une configuration particulière des pare-feu. Le mode passif est généralement le plus adapté aux postes clients situés derrière un pare-feu.

Pour les besoins de synchronisation ou de sauvegarde, rsync offre une approche différente en comparant les fichiers et en ne transférant que les données nécessaires.


Comprendre cron #

Un serveur Linux doit régulièrement effectuer des opérations sans intervention humaine : lancer une sauvegarde, nettoyer des fichiers temporaires, exécuter un script ou effectuer une opération de maintenance.

Le mécanisme cron permet précisément de programmer ce type de tâche.

Une tâche planifiée est définie dans une crontab, c’est-à-dire une table contenant les commandes à exécuter ainsi que les horaires auxquels elles doivent être lancées.

Chaque utilisateur peut disposer de sa propre crontab.

Consulter les tâches planifiées #

La commande suivante affiche la crontab de l’utilisateur actuellement connecté :

crontab -l

Elle permet notamment de vérifier les tâches déjà configurées.


Ajouter une tâche planifiée

Pour modifier la crontab de l’utilisateur courant :

crontab -e

Cette commande ouvre la crontab dans l’éditeur configuré sur le système.

Chaque ligne correspond à une tâche et suit une syntaxe composée de cinq champs temporels, suivis de la commande à exécuter :

minute heure jour_du_mois mois jour_de_la_semaine commande

On peut également la représenter ainsi :

mm hh jj MMM JJJ commande

Les cinq premiers champs permettent de définir précisément quand la commande doit être exécutée.

ChampValeurs
Minute0-59
Heure0-23
Jour du mois1-31
Mois1-12
Jour de la semaine0-7

Pour le jour de la semaine, 0 et 7 correspondent généralement au dimanche.


Comprendre la syntaxe d’une crontab

Chaque champ peut utiliser plusieurs formes de notation.

L’astérisque * signifie toutes les valeurs possibles.

*

La liste permet de sélectionner plusieurs valeurs :

5,8

correspond aux valeurs 5 et 8.

Une plage permet de sélectionner un intervalle :

2-5

correspond aux valeurs 2, 3, 4 et 5.

Enfin, / permet de définir une périodicité.

*/3

signifie toutes les trois unités :

0,3,6,9,12...

Une plage peut également être combinée avec cette notation :

10-20/3

correspond à :

10,13,16,19

Exemple de tâche planifiée

La ligne suivante :

0 0 13 * 5 commande

indique que la commande doit être exécutée à 00h00 le 13 du mois, lorsque le jour de la semaine correspond au cinquième jour selon la numérotation utilisée.

Il faut être particulièrement attentif à la combinaison des champs jour du mois et jour de la semaine, dont le comportement peut surprendre.

Pour une tâche devant s’exécuter précisément selon une combinaison de critères, il est préférable de tester la planification avant de la mettre en production.


Gérer la sortie d’une tâche cron

Une tâche cron exécute une commande comme si elle était lancée depuis le shell.

Si cette commande produit des informations sur sa sortie standard ou sa sortie d’erreur, cron peut les transmettre par courrier électronique à l’utilisateur, selon la configuration du système.

Pour conserver ces informations dans des fichiers, il est possible de rediriger les sorties.

Par exemple :

commande > fichier-1 2> fichier-2

La sortie standard sera enregistrée dans fichier-1, tandis que les erreurs seront enregistrées dans fichier-2.

Il est également possible de regrouper les deux sorties dans un même fichier :

commande >> /mon/repertoire/journal.txt 2>&1

Le double >> permet ici d’ajouter les nouvelles sorties à la fin du fichier sans écraser son contenu.

Cette méthode est particulièrement utile pour conserver un historique d’exécution et faciliter le diagnostic d’une tâche planifiée.

Conseil : lorsqu’une tâche cron est importante, prévoyez systématiquement une gestion de ses sorties et de ses erreurs. Une tâche qui échoue silencieusement peut rester inaperçue pendant longtemps.


À retenir

cron permet d’automatiser l’exécution de commandes sur un serveur Linux.

La configuration repose sur une crontab, consultable avec :

crontab -l

et modifiable avec :

crontab -e

Chaque tâche est définie par cinq paramètres temporels suivis de la commande à exécuter.

La planification ne suffit toutefois pas à garantir qu’une tâche fonctionne correctement. Pour les traitements importants, pensez également à gérer les sorties, les erreurs et les journaux d’exécution.

Ceci conclut notre guide. Le Centre d’Expertise Client XPR reste à votre disposition.


Qu'avez vous pensé de cet article ?
Free Pro est la filiale entreprise du Groupe iliad et met l’expertise technologique du Groupe iliad au service des entreprises et des marchés publics

Grâce à des infrastructures souveraines et certifiées, Free Pro propose des solutions Cloud, IT, télécom et cybersécurité – appelées Solutions XPR – pour répondre de façon simple aux enjeux des environnements les plus exigeants.

Fidèle à l’ADN du Groupe iliad, Free Pro place l’humain au cœur de sa démarche, en garantissant un service de proximité partout en France et un partenariat de confiance avec chacun de ses clients. Une expertise reposant sur plus de 20 ans d’expérience, qui lui permet d’accompagner de grandes références telles que le Groupe Printemps, Lidl, Monin, le ministère de l’Intérieur ou encore Gaumont.