En Linux il n’existe qu’une seule racine : /
.
Les autres systèmes de fichiers ne seront pas des racines comme dans Windows.
Tous les périphériques matériels, incluant les disques, se retrouvent dans le répertoire /dev
.
Les disques seront présents sous forme de fichier de type bloc.
Il n’est pas possible de les utiliser directement, il faudra:
Créer une ou plusieurs partitions
Formater la partition (création d’un système de fichiers)
Monter la partition (lui donner un chemin d’accès)
Lorsque vous ajoutez un disque dans une machine Linux (disque réel ou virtuel), un nouvel objet apparait dans le répertoire /dev.
Il sera nommé sd[x]
pour les disques SCSI ou hd[x]
pour les disques IDE.
La 3eme lettre sera assignée dans l’ordre. Si “a” est pris alors ce sera “b”, si “b” est pris ce sera “c”.
Attention: un disque ne possède pas de numéro à la fin.
Pour voir tous vos disques, vous pouvez utiliser:
$ ls /dev/sd* $ ls /dev/hd* $ ls /dev/nvme*
Avec VMWare, la règle d’assignation des noms de disques dans les VMs est la suivante:
Un disque sera nommé sd[a-z]
si le pilote utilisé est SCSI.
Un disque sera nommé hd[a-z]
si le pilote utilisé est IDE.
Les partitions sont ensuite numérotées pour chaque disque:
sda1
, sda2
,…
hda1
, hda2
,…
nvme0n1p1
, nvme0n1p2
,…
Après l’ajout de disques, ils doivent être partitionnés.
La commande fdisk
permet de manipuler et afficher les partitions.
fdisk -l
permet d’afficher toutes les partitions de tous les disques présents.
$ fdisk -l Disque /dev/sda : 64.4 Go, 64424509440 octets, 125829120 secteurs Unités = secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Type d'étiquette de disque : dos Identifiant de disque : 0x00011277 Périphérique Amorçage Début Fin Blocs Id. Système /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 125829119 61864960 8e Linux LVM Disque /dev/mapper/centos-root : 41.1 Go, 41120956416 octets, 80314368 secteurs Unités = secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Disque /dev/mapper/centos-swap : 2147 Mo, 2147483648 octets, 4194304 secteurs Unités = secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Disque /dev/mapper/centos-home : 20.1 Go, 20073938944 octets, 39206912 secteurs Unités = secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets
On voit les tailles (en blocs), le type, s’il s’agit de la partition d’amorçage.
Il est possible de créer un maximum de 4 partitions principales sur un disque ou alors une partition principale, une partition étendue dans laquelle on peut créer autant de partitions que l’on souhaite.
La création de partition se fait grâce à fdisk
.
Pour créer des partitions, on utilise le disque, pas les partitions (jamais de numéro à la fin):
$ fdisk /dev/sdb
ou
$ fdisk /dev/nvme0n2
Ensuite plusieurs options sont disponibles mais la création standard se fait avec les commandes suivantes:
n
Nouvelle partition
p
Partition principale
Entrée
Accepter le numéro de partition par défaut (s’il y en a un sinon le spécifier)
Entrée
Numéro du bloc de départ (peut être accepté ou spécifier)
Entrée
Numéro du bloc de fin(peut être accepté ou spécifier)
w
Sauvegarder et quitter (avant ça aucune modification n’a eu lieu)
Une fois les partitions créées, elles apparaissent dans /dev
.
Les partitions de /dev/sda
seront donc:
/dev/sda1
/dev/sda2
…
ou
/dev/nvme0n2p1
/dev/nvme0n2p2
…
C’est sur ces partitions que nous pourrons travailler: création de systèmes de fichiers et montage.
Une fois les partitions créées, elles ne sont toujours pas utilisables car il n’y a pas système de fichier dessus.
Il faudra en créer un grâce à la commande mkfs
.
Chaque partition du disque peut avoir un système de fichier différent: FAT, FAT32, EXT2, EXT3, EXT4, BTRFS, XFS… (Linux ne gère pas NTFS).
Deux façons existent de créer un système de fichier:
$ mkfs -t ext4 /dev/sdb1 $ mkfs.ext4 /dev/sdb1
ou
$ mkfs -t ext4 /dev/nvme0n2p1 $ mkfs.ext4 /dev/nvme0n2p1
Les deux commandes sont équivalentes.
Maintenant les partitions sont utilisables, il ne reste qu’à leur donner un chemin d’accès pour pouvoir y accéder.
Maintenant que nous avons des partitions utilisables, il faut pouvoir y accéder.
Il faut les placer quelque part, leur donner un chemin d’accès.
Pour ceci nous allons les placer dans un répertoire vide (n’importe où dans l’arborescence).
Si le répertoire n’est pas vide, les données disparaitront jusqu’à ce que vous démontiez le système de fichiers.
Chaque partition doit avoir son propre chemin d’accès.
Vous ne pouvez pas placer plusieurs partitions dans le même répertoire.
Une fois la partition montée dans le répertoire, tout ce que vous écrirez dans le répertoire sera placé dans la partition.
Deux méthodes existent pour monter un système de fichier:
Une méthode manuelle mais non persistante (au prochain redémarrage la partition ne sera plus montée).
Une méthode automatique et permanente.
$ mount [partition] [chemin] $ mount /dev/sdb1 /root/data
ou
$ mount /dev/nvme0n2p1 /root/data
Pour valider l’opération:
$ df -h
Maintenant, lorsque vous accédez au répertoire dans lequel est montée la partition, vous écrirez dans la nouvelle partition.
Dans notre exemple, il suffira d’écrire dans le répertoire: /root/data
.
Vous pouvez monter autant de partitions que vous le souhaitez mais dans des répertoires différents.
La commande mount permet de monter un système de fichiers mais ce montage ne sera pas permanent et il aura disparu en cas de redémarrage de la machine.
Pour le rendre permanent, il faudra modifier le fichier /etc/fstab
qui contient les partitions à monter au démarrage.
ATTENTION: une erreur dans le fichier /etc/fstab
empêche le système de démarrer au-delà du niveau d’exécution 1.
Il faudra alors corriger le problème pour pouvoir aller plus loin.
Voici comment modifier le fichier /etc/fstab
, en ajoutant la ligne suivante:
/dev/sdb1 /root/data ext4 defaults 0 0
Éteignez votre machine.
Ajoutez un disque.
Créez une partition.
Formatez la partition.
Montez la dans la répertoire /disque
.
Redémarrez votre système.
Est-ce que le disque est toujours monté?
Rendez le permanent.
Les systèmes de stockage doivent être protégés contre les pannes, en particulier les pannes de disque.
Pour la résistance aux pannes il y a les différents niveaux de RAID (Redundant Array of Independant Disks).
Le RAID consiste à stocker plusieurs fois les données sur plusieurs disques pour que la panne d’un disque ne cause pas de problème.
Raid 0: seul niveau de raid qui n’apporte aucune sécurité supplémentaire aux données.
Permet d’augmenter la taille du disque et de ses partitions.
Permet d’améliorer les performances en lecture et écriture car les données peuvent être traitées en parallèle.
Gros inconvénient, en cas de perte d’un disque, toutes les données sont perdues.
Il vaut mieux que tous les disques soient de la même taille sinon de l’espace sera perdu.
Le coût n’est pas élevé car tout l’espace de stockage peut être utilisé pour les données.
Raid 1: aussi appelé miroir.
Les données sont écrites simultanément sur les 2 disques.
Permet la redondance des données: en cas de panne d’un disque, il est déconnecté du miroir et seul le disque encore fonctionnel sera accessible.
Une fois le disque en panne remplacé le miroir peut être reconstruit manuellement ou automatiquement.
Les lectures peuvent être plus performantes si lues en parallèles sur les 2 disques.
Solution simple à mettre en œuvre mais coûteuse car seul la moitié de l’espace disque est utilisable.
Raid 0 + 1 et Raid 1 + 0 (Raid 10) comme leur nom l’indique, ils combinent le Raid 0 et le Raid 1.
Le Raid 1+0 offre de meilleures performances et une meilleure fiabilité car la perte d’un disque n’entraine pas la perte de tout le volume.
Le Raid 0+1 permet de faire un miroir à 3 grappes dont on peut retirer une grappe pour sauvegarde sans perte de données.
Raid 5: Très fiable, très performant.
Il faut un minimum de 3 disques.
La moitié des données est écrite sur un disque puis l’autre moitié sur le deuxième disque puis une données de contrôle sur le troisième disque.
Il y a rotation, les données de contrôle ne sont pas toute sur le même disque.
En cas de perte d’un disque, il peut être remplacé et les données perdues seront reconstruites grâce aux données restantes et aux données de contrôle.
La perte de 2 disques entraine la perte de toutes les données.
Solution économique car seulement un disque est perdu au profit des données de redondance, plus il y a de disques plus c’est économique.
Inconvénient: 3 disques minimum sont nécessaires.
Raid 6: le plus fiable.
Les données de redondance sont écrites plusieurs fois sur les disques.
Si elles sont écrites en double il sera possible de perdre 2 disques sans perte de données.
En cas de perte de 2 disques, la reconstruction peut être longue et coûteuse en terme de ressources.
Un minimum de 4 disques est nécessaire.
Plus il y a de disques moins la solution est coûteuse, comme pour Raid 5.
Raid 2: obsolète
Raid 3 et Raid 4: similaire à Raid 5 mais les données de parité sont sur un seul disque.
La différence entre les deux est que Raid 3 travaille par octet et Raid 4 par blocks.
Ne sont pas utilisés et donc ne seront pas étudiés.
Pour information, il existe aussi d’autres combinaisons de Raid qui sont peu utilisées.
Le but du lab est de créer une partition RAID 5 et de transférer le contenu de /home
sur cette partition et de la monter dans /home
à la place de l’ancienne: les données utilisateurs seront alors protégées contre les pannes.
Éteignez votre machine et ajoutez 4 disques durs de taille identique.
Démarrez votre machine.
Créez le RAID 5 avec l’utilitaire mdadm:
$ mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd
Cette commande crée un nouveau disque (le groupe RAID 5 sera vu comme un seul nouveau disque) nommé /dev/md0
.
Le niveau de RAID est RAID 5 (level=5).
Il est composé de 3 éléments.
Validez la création à l’aide de:
$ mdadm --detail /dev/md0
Formatez la partition RAID 5:
$ mkfs.ext4 /dev/md0
Monter le RAID5 dans /mnt
.
Copiez le contenu de /home
dans la partition qui est montée dans /mnt
.
Corrigez le propriétaire des répertoires copiés dans /mnt
.
À cette étape prenez un snapshot de votre machine.
Ajoutez la partition dans /etc/fstab
.
Avant de redémarrer votre système, assurez-vous que vous connaissez le mot de passe de root car en cas de problème, seul root sera capable de se connecter au système.
Vous pouvez redémarrer le système.
/home
devrait se trouver sur la partition RAID 5.
Que faire en cas de panne d’un des disques?
Il s’agit donc maintenant de simuler un panne d’un des disques en le retirant du RAID 5:
$ mdadm --manage /dev/md0 --set-faulty /dev/sdb $ mdadm --manage /dev/md0 --remove /dev/sdb
Vérifiez l’état du RAID avec :
$ mdadm --detail /dev/md0
Ajoutez le disque qui ne fisait pas partie du RAID 5:
$mdadm --manage /dev/md0 --add /dev/sde
Vérifiez la reconstruction à l’aide de
$ mdadm --detail /dev/md0
LVM (Logical Volume Manager) permet une gestion beaucoup plus souple des disques.
LVM permet de créer des volumes, supprimer des volumes mais surtout de redimensionner des volumes à chaud.
LVM permet aussi la prise d’instantanés pour les backups.
Apporte de la flexibilité par rapport au partitionnement classique.
Il s’agit de la couche de plus haut niveau de la gestion des disques.
Trois composantes définissent LVM.
Volumes Physiques (PV)
Ce sont les disques physiques
Les commandes pour les gérer commencent par pv…
Groupes de Volumes (VG)
Regroupement de volumes physiques, permet d’agréger leur espace
Les commandes pour les gérer commencent par vg…
Volumes Logiques (LV)
Ce sont les partitions créées sur les groupes de volumes
Les commandes pour les gérer commencent par lv…
Les étapes de création d’un volume sont les suivantes:
Installer des disques physiques
Déclarer les disques dans LVM (définition des PV)
Créer un groupe contenant les disques (définition des VG)
Créer les partitions (définition des LV)
Formater les LV
Monter les LV
La première étape dans la gestion des volumes LVM est d’ajouter les disques physiques comme volumes physiques.
Ceci permet de spécifier à LVM quels disques physiques peuvent être utilisés par LVM.
Pour configurer un disque physique comme étant un volume physique LVM:
$ pvcreate /dev/sdb
Il est possible d’ajouter plusieurs disques physiques d’un seul coup:
$ pvcreate /dev/sdb /dev/sdc ...
Les commandes suivantes permettent de visualiser les volumes physiques:
$ pvscan $ pvdisplay
Une fois les volumes physiques créés, il faut créer un groupe de volumes qui permettra de les regrouper en un seul espace de stockage:
$ vgcreate vgGroup /dev/sdb /dev/sdc
Ce groupe contient deux disques (deux volumes physiques LVM).
C’est maintenant tout cet espace de stockage qui pourra être maniuplé.
Il est possible d’ajouter des volumes physiques à un groupe de volumes:
$ vgextend vgGroup /dev/sdd
Pour visualiser les groupes de volumes:
$ vgscan $ vgdisplay
Pour créer un volume logique:
$ lvcreate -L [taille]G -n lv1 vgGroup1
Un nouveau périphérique est alors ajouté dans /dev
, son chemin d’accès est:
$ /dev/vgGroup/lv1
C’est ce volume logique qui pourra être utilisé comme un disque ordinaire mais avec des fonctionnalités supplémentaires comme les instantanés ou la possibilité de modifier la taille.
Pour formater le volume:
$ mkfs.ext4 /dev/vgGroup/lv1
Et pour monter le volume (à noter que c’est le volume logique qui est monté et non pas les disques physiques):
$ mount /dev/vgGroup/lv1 /mnt
Vous pouvez vérifier que le volume est monté correctement:
$ df -h
Créez des fichiers sur ce volumes pour tester leur existence après avoir augmenté la taille du volume.
Il s’agit maintenant d’augmenter la taille du volume.
La première étape consiste à ajouter un volume physique:
$ pvcreate /dev/sdd
Ensuite il faut ajouter le volume physique au groupe de volumes:
$ vgextend vgGroup /dev/sdd
Puis enfin c’est la taille du volume logique qui est augmentée:
$ lvextend -L +8G /dev/vgGroup/lv1
Il faut ensuite augmenter la taille du système de fichier. Pour ceci il faut démonter le volume, le vérifier et augmenter la taille puis le remonter.
Démontez le volume:
$ umount /mnt
Vérifier le volume:
$ e2fsck -f /dev/vgGroup/lv1
Étendre le système de fichiers:
$ resize2fs -p /dev/vgGroup/lv1
Remontez le système de fichiers:
$ mount /dev/vgGroup/lv1 /mnt
Au cours des étapes suivantes, valider chacune des commandes à l’aide de pvs
, pvscan
, pvdisplay
, vgs
, vgscan
, vgdisplay
, lvs
, lvscan
et lvdisplay
.
Dans une VM, ajouter 5 disques de 2 Go.
Configurer ces 5 disques comme volumes physiques dans LVM.
Créer un groupe de volumes contenant 4 volumes physiques (sdb
, sdc
, sdd
, sde
).
Créer un volume logique de 4Go.
Partitionner, formater et monter le volume créé.
Créer des fichiers sur le volume.
Ajouter le 5ème volume physique au groupe de volume.
Agrandir le volume logique de 3Go.
Écrire des fichiers sur le volume.
Pour réduire la taille d’un groupe de volume en supprimant un volume physique, il faut d’abord s’assurer qu’il y a suffisamment d’espace.
Il est possible de réduire la taille d’un volume logique.
Pour cela il faut d’abord démonter le volume puis vérifier le système de fichier, réduire le système de fichier puis réduire le volume logique.
Il peut être possible ensuite de supprimer un volume physique du groupe de volume.
Pour vérifier le système de fichier:
$ e2fsck -f /dev/group1/vol1
Pour le redimensionner:
$ resize2fs /dev/group1/vol1 10G
Puis réduire le volume logique:
$ lvreduce -L -8G /dev/group1/vol1
Puis il est possible de supprimer le disque du groupe de volume:
$ vgreduce group1 /dev/[vol]
Il est beaucoup plus difficile de réduire la taille d’un volume XFS.
Pour créer un instantané:
$ lvcreate -s -n vol-snap -L[taille] /dev/group1/vol1
Pour le supprimer:
$ lvremove /dev/group1/vol-snap
Pour le fusionner:
$ lvconvert --merge /dev/group1/vol-snap
Pour fusionner ou supprimer un snapshot, il est préférable de démonter le snapshot et l’original.
Il peut aussi être nécessaire de désactiver et réactiver un groupe de volume :
$ vgchange -an /dev/group $ vgchange -ay /dev/group
Après chaque commande, il est possible de voir l’état du snapshot à l’aide des commandes suivantes:
lvs
lvscan
lvdisplay
Créer deux volumes RAID 5 et combinez les en un volume LVM.
Créer un snapshot, le monter et modifier des fichiers sur le snapshot.
Choisir et exécuter une des options: fusionner ou supprimer l’instantané.
Réduire la taille du volume en supprimant sdb du groupe de volumes.
Supprimer tous les volumes physiques de LVM.