Ceci est une ancienne révision du document !
Table des matières
Version : 2021.01
Dernière mise-à-jour : 2021/06/24 09:01
LCF504 - Gestion des Disques, des Systèmes de Fichiers et du Swap
Contenu du Module
- LCF504 - Gestion des Disques, des Systèmes de Fichiers et du Swap
- Contenu du Module
- Périphériques de stockage
- Partitions
- Partitionnement
- LAB #1 - Partitionnement de votre Disque avec fdisk
- LAB #2 - Modifier les Drapeaux des Partitions avec fdisk
- Logical Volume Manager (LVM)
- LAB #3 - Volumes Logiques Linéaires
- Physical Volume (PV)
- Volume Group (VG) et Physical Extent (PE)
- Logical Volumes (LV)
- LAB #4 - Étendre un Volume Logique à Chaud
- LAB #5 - Snapshots
- LAB #6 - Suppression des Volumes
- LAB #7 - Volumes Logiques en Miroir
- LAB #8 - Modifier les Attributs LVM
- LAB #9 - Volumes Logiques en Bandes
- LAB #10 - Gérer les Métadonnées
- Systèmes de Fichiers Journalisés
- Présentation
- Ext3
- Gestion d'Ext3
- LAB #11 - Convertir un Système de Fichiers Ext3 en Ext2
- LAB #12 - Convertir un Système de Fichiers Ext2 en Ext3
- LAB #13 - Placer le Journal sur un autre Partition
- LAB #14 - Modifier la Fréquence de Vérification du Système de Fichiers Ext3
- Ext4
- LAB #15 - Créer un Système de Fichiers Ext4
- LAB #16 - Ajouter une Étiquette au Système de Fichiers Ext4
- LAB #17 - Convertir un Système de Fichiers Ext3 en Ext4
- XFS
- LAB #18 - Créer un Système de Fichiers XFS
- LAB #19 - Ajouter une Étiquette au Système de Fichiers XFS
- Autres Systèmes de Fichiers
- ReiserFS
- JFS
- Btrfs
- Comparaison des Commandes par Système de Fichiers
- LAB #20 - Créer un Système de Fichiers ISO
- La Commande mkisofs
- Systèmes de Fichiers Chiffrés
- LAB #21 - Créer un Système de Fichiers Chiffré avec LUKS
- Présentation
- Mise en Place
- Ajouter une deuxième Passphrase
- Supprimer une Passphrase
- Le Swap
- Taille du swap
- Partitions de swap
- La Commande swapon
- La Commande swapoff
- LAB #22 - Créer un Fichier de Swap
Périphériques de stockage
Les unités de stockage sous Linux sont référencées par un des fichiers se trouvant dans le répertoire /dev :
- hd[a-d]
- Les disques IDE et les lecteurs ATAPI
- sd[a-z]
- Les disques SCSI et SATA
- mmcblk[0-7]
- Les cartes SD/MMC
- scd[0-7]
- Les CDRoms SCSI
- xd[a-d]
- Les premiers disques sur IBM XT
- fd[0-7]
- Les lecteurs de disquettes
- st[0-7]
- Les lecteurs de bandes SCSI/SATA qui supportent le rembobinage
- nst[0-7]
- Les lecteurs de bandes SCSI/SATA qui ne supportent pas le rembobinage
- ht[0-7]
- Les lecteurs de bandes PATA qui supportent le rembobinage
- nht[0-7]
- Les lecteurs de bandes PATA qui ne supportent pas le rembobinage
- rmt8, rmt16, tape-d, tape-reset
- Les lecteurs QIC-80
- ram[0-15]
- Les disques virtuels. Ils sont supprimés à l'extinction de la machine. Un de ces disques est utilisé par le système pour monter l'image d'un disque racine défini par le fichier initrd au démarrage de la machine
- Périphériques loop
- Il existe 16 unités loop qui sont utilisés pour accèder en mode bloc à un système de fichiers contenu dans un fichier, par exemple, une image iso
- md[x]
- Un volume RAID logiciel
- vg[x]
- Un groupe de volumes
- lv[x]
- Un volume logique
Partitions
Un PC comportent en règle générale 2 contrôleurs de disque, chacun capable de gérer 2 disques, un maître et un esclave. Les disques attachés à ces contrôleurs comportent des noms différents pour pouvoir les distinguer :
- Contrôleur 0
- Maître
- hda - disque IDE
- sda - disque SATA ou SCSI
- Esclave
- hdb - disque IDE
- sdb - disque SATA ou SCSI
- Contrôleur 1
- Maître
- hdc - disque IDE
- sdc - disque SATA ou SCSI
- Esclave
- hdd - disque IDE
- sdd - disque SATA ou SCSI
Un disque peut comporter trois types de partitions :
- Partitions primaires,
- Maximum de 4. En effet, la Table des Partitions est grande de 64 octets. Il faut 16 octets pour codés une partition.
- Partitions Etendues,
- Généralement une seule partition étendue par disque. Elle contient des Lecteurs Logiques aussi appelés des partitions,
- Lecteurs Logiqiques.
Les 4 partitions primaires sont numérotées de 1 à 4. Par exemple :
- hda1, hda2, hda3 et hda4 pour le premier disque IDE sur le premier contrôleur de disque,
- sda1, sda2, sda3 et sda4 pour le premier disque SCSI ou SATA sur le premier contrôleur de disque.
Une partition étendue prend la place d'une partition primaire et les lecteurs logiques qui s'y trouvent commencent à partir de hda5 ou de sda5.
Pour clarifier ceci, considérons un disque SATA contenant deux partitions primaires, une seule partition étendue et 3 lecteurs logiques. Dans ce cas, les deux premières partitions sont sda1 et sda2, la partition étendue prend la place de la troisième partition primaire, la sda3 et s'appelle ainsi tandis que la quatrième partition primaire est inexistante.
Les lecteurs logiques commençant à sda5, nous obtenons la liste de partitions suivante : sda1, sda2, sda5, sda6, sda7. Notez que la sda3 ne peut pas être utilisée en tant que partition car elle est cachée par les lecteurs sda5, sda6 et sda7.
Le nombre de partitions sur un disque est limité :
- IDE,
- Jusqu'à 63,
- SCSI,
- Jusqu'à 15,
- Disques utilisant l'API libata,
- Jusqu'à 15.
Important : Ces limites peuvent être dépassées en utilisant la gestion LVM (Logical Volume Management).
Partitionnement
LAB #1 - Partitionnement de votre Disque sous RHEL/CentOS 8 avec fdisk
Pour procéder au partitionnement de votre disque ou de vos disques, RHEL/CentOS 8 possède l'outil dénommé fdisk.
Lancez fdisk en fournissant en argument le fichier de référence de votre premier disque dur, par exemple :
[root@centos8 ~]# fdisk /dev/sdb Welcome to fdisk (util-linux 2.32.1). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table. Created a new DOS disklabel with disk identifier 0xb0dacb39. Command (m for help):
Tapez ensuite la lettre m puis ↵ Entrée pour obtenir le menu :
Command (m for help): m Help: DOS (MBR) a toggle a bootable flag b edit nested BSD disklabel c toggle the dos compatibility flag Generic d delete a partition F list free unpartitioned space l list known partition types n add a new partition p print the partition table t change a partition type v verify the partition table i print information about a partition Misc m print this menu u change display/entry units x extra functionality (experts only) Script I load disk layout from sfdisk script file O dump disk layout to sfdisk script file Save & Exit w write table to disk and exit q quit without saving changes Create a new label g create a new empty GPT partition table G create a new empty SGI (IRIX) partition table o create a new empty DOS partition table s create a new empty Sun partition table Command (m for help):
Pour créer une nouvelle partition, vous devez utiliser la commande n.
Créez donc les partitions suivantes sur votre disque :
Partition | Type | Taille de la Partition |
---|---|---|
/dev/sdb1 | Primaire | 100 Mo |
/dev/sdb2 | Primaire | 100 Mo |
/dev/sdb3 | Primaire | 100 Mo |
/dev/sdb4 | Extended | Du premier secteur disponible au dernier secteur du disque |
/dev/sdb5 | Logique | 500 Mo |
/dev/sdb6 | Logique | 200 Mo |
/dev/sdb7 | Logique | 300 Mo |
/dev/sda8 | Logique | 500 Mo |
/dev/sdb9 | Logique | 400 Mo |
/dev/sdb10 | Logique | 500 Mo |
/dev/sdb11 | Logique | 500 Mo |
/dev/sdb12 | Logique | 200 Mo |
Créez d'abord les partitions primaires :
Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): Using default response p. Partition number (1-4, default 1): First sector (2048-8388607, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-8388607, default 8388607): +100M Created a new partition 1 of type 'Linux' and of size 100 MiB. Command (m for help): n Partition type p primary (1 primary, 0 extended, 3 free) e extended (container for logical partitions) Select (default p): Using default response p. Partition number (2-4, default 2): First sector (206848-8388607, default 206848): Last sector, +sectors or +size{K,M,G,T,P} (206848-8388607, default 8388607): +100M Created a new partition 2 of type 'Linux' and of size 100 MiB. Command (m for help): n Partition type p primary (2 primary, 0 extended, 2 free) e extended (container for logical partitions) Select (default p): Using default response p. Partition number (3,4, default 3): First sector (411648-8388607, default 411648): Last sector, +sectors or +size{K,M,G,T,P} (411648-8388607, default 8388607): +100M Created a new partition 3 of type 'Linux' and of size 100 MiB. Command (m for help):
Créez ensuite la partition étendue :
Command (m for help): n Partition type p primary (3 primary, 0 extended, 1 free) e extended (container for logical partitions) Select (default e): e Selected partition 4 First sector (616448-8388607, default 616448): Last sector, +sectors or +size{K,M,G,T,P} (616448-8388607, default 8388607): Created a new partition 4 of type 'Extended' and of size 3.7 GiB. Command (m for help):
Créez maintenant les autres partitions l'une après l'autre :
Command (m for help): n All primary partitions are in use. Adding logical partition 5 First sector (618496-8388607, default 618496): Last sector, +sectors or +size{K,M,G,T,P} (618496-8388607, default 8388607): +500M Created a new partition 5 of type 'Linux' and of size 500 MiB. Command (m for help): n All primary partitions are in use. Adding logical partition 6 First sector (1644544-8388607, default 1644544): Last sector, +sectors or +size{K,M,G,T,P} (1644544-8388607, default 8388607): +200M Created a new partition 6 of type 'Linux' and of size 200 MiB. Command (m for help): n All primary partitions are in use. Adding logical partition 7 First sector (2056192-8388607, default 2056192): Last sector, +sectors or +size{K,M,G,T,P} (2056192-8388607, default 8388607): +300M Created a new partition 7 of type 'Linux' and of size 300 MiB. Command (m for help): n All primary partitions are in use. Adding logical partition 8 First sector (2672640-8388607, default 2672640): Last sector, +sectors or +size{K,M,G,T,P} (2672640-8388607, default 8388607): +500M Created a new partition 8 of type 'Linux' and of size 500 MiB. Command (m for help): n All primary partitions are in use. Adding logical partition 9 First sector (3698688-8388607, default 3698688): Last sector, +sectors or +size{K,M,G,T,P} (3698688-8388607, default 8388607): +400M Created a new partition 9 of type 'Linux' and of size 400 MiB. Command (m for help): n All primary partitions are in use. Adding logical partition 10 First sector (4519936-8388607, default 4519936): Last sector, +sectors or +size{K,M,G,T,P} (4519936-8388607, default 8388607): +500M Created a new partition 10 of type 'Linux' and of size 500 MiB. Command (m for help): n All primary partitions are in use. Adding logical partition 11 First sector (5545984-8388607, default 5545984): Last sector, +sectors or +size{K,M,G,T,P} (5545984-8388607, default 8388607): +500M Created a new partition 11 of type 'Linux' and of size 500 MiB. Command (m for help): n All primary partitions are in use. Adding logical partition 12 First sector (6572032-8388607, default 6572032): Last sector, +sectors or +size{K,M,G,T,P} (6572032-8388607, default 8388607): +200M Created a new partition 12 of type 'Linux' and of size 200 MiB. Command (m for help):
Tapez ensuite la lettre p puis ↵ Entrée pour visualiser la nouvelle table des partitions. Vous obtiendrez un résultat similaire à celui-ci :
Command (m for help): p Disk /dev/sdb: 4 GiB, 4294967296 bytes, 8388608 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xb0dacb39 Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 206847 204800 100M 83 Linux /dev/sdb2 206848 411647 204800 100M 83 Linux /dev/sdb3 411648 616447 204800 100M 83 Linux /dev/sdb4 616448 8388607 7772160 3.7G 5 Extended /dev/sdb5 618496 1642495 1024000 500M 83 Linux /dev/sdb6 1644544 2054143 409600 200M 83 Linux /dev/sdb7 2056192 2670591 614400 300M 83 Linux /dev/sdb8 2672640 3696639 1024000 500M 83 Linux /dev/sdb9 3698688 4517887 819200 400M 83 Linux /dev/sdb10 4519936 5543935 1024000 500M 83 Linux /dev/sdb11 5545984 6569983 1024000 500M 83 Linux /dev/sdb12 6572032 6981631 409600 200M 83 Linux Command (m for help):
Ecrivez la table des partitions sur disque et exécutez la commande partprobe :
Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks. [root@centos8 ~]# partprobe [root@centos8 ~]#
Lancez fdisk puis tapez ensuite la lettre p puis ↵ Entrée pour visualiser la table des partitions actuelle :
[root@centos8 ~]# fdisk /dev/sdb Welcome to fdisk (util-linux 2.32.1). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): p Disk /dev/sdb: 4 GiB, 4294967296 bytes, 8388608 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xb0dacb39 Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 206847 204800 100M 83 Linux /dev/sdb2 206848 411647 204800 100M 83 Linux /dev/sdb3 411648 616447 204800 100M 83 Linux /dev/sdb4 616448 8388607 7772160 3.7G 5 Extended /dev/sdb5 618496 1642495 1024000 500M 83 Linux /dev/sdb6 1644544 2054143 409600 200M 83 Linux /dev/sdb7 2056192 2670591 614400 300M 83 Linux /dev/sdb8 2672640 3696639 1024000 500M 83 Linux /dev/sdb9 3698688 4517887 819200 400M 83 Linux /dev/sdb10 4519936 5543935 1024000 500M 83 Linux /dev/sdb11 5545984 6569983 1024000 500M 83 Linux /dev/sdb12 6572032 6981631 409600 200M 83 Linux Command (m for help):
Pour supprimer une partition, utilisez la commande d puis ↵ Entrée. fdisk vous demandera le numéro de la partition à supprimer, par exemple :
Command (m for help): d Partition number (1-12, default 12): 12 Partition 12 has been deleted. Command (m for help): p Disk /dev/sdb: 4 GiB, 4294967296 bytes, 8388608 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xb0dacb39 Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 206847 204800 100M 83 Linux /dev/sdb2 206848 411647 204800 100M 83 Linux /dev/sdb3 411648 616447 204800 100M 83 Linux /dev/sdb4 616448 8388607 7772160 3.7G 5 Extended /dev/sdb5 618496 1642495 1024000 500M 83 Linux /dev/sdb6 1644544 2054143 409600 200M 83 Linux /dev/sdb7 2056192 2670591 614400 300M 83 Linux /dev/sdb8 2672640 3696639 1024000 500M 83 Linux /dev/sdb9 3698688 4517887 819200 400M 83 Linux /dev/sdb10 4519936 5543935 1024000 500M 83 Linux /dev/sdb11 5545984 6569983 1024000 500M 83 Linux Command (m for help):
A ce stade, la partition n'a pas été réellement supprimée. En effet, vous avez la possibilité de sortir de fdisk en utilisant la commande q.
Tapez donc q pour sortir de fdisk puis relancez fdisk. Vous obtiendrez un résultat similaire à celui-ci :
Command (m for help): q [root@centos8 ~]# fdisk /dev/sdb Welcome to fdisk (util-linux 2.32.1). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): p Disk /dev/sdb: 4 GiB, 4294967296 bytes, 8388608 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xb0dacb39 Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 206847 204800 100M 83 Linux /dev/sdb2 206848 411647 204800 100M 83 Linux /dev/sdb3 411648 616447 204800 100M 83 Linux /dev/sdb4 616448 8388607 7772160 3.7G 5 Extended /dev/sdb5 618496 1642495 1024000 500M 83 Linux /dev/sdb6 1644544 2054143 409600 200M 83 Linux /dev/sdb7 2056192 2670591 614400 300M 83 Linux /dev/sdb8 2672640 3696639 1024000 500M 83 Linux /dev/sdb9 3698688 4517887 819200 400M 83 Linux /dev/sdb10 4519936 5543935 1024000 500M 83 Linux /dev/sdb11 5545984 6569983 1024000 500M 83 Linux /dev/sdb12 6572032 6981631 409600 200M 83 Linux Command (m for help):
LAB #2 - Modifier les Drapeaux des Partitions avec fdisk
Afin de mettre en place un RAID logiciel ou un volume logique, il est nécessaire de modifier les types de systèmes de fichiers sur les partitions créées.
Modifiez donc les nouvelles partitions à l'aide de la commande t de fdisk selon le tableau ci-dessous :
Taille de la Partition | Type de Système de Fichiers |
---|---|
500 Mo | RAID (fd) |
200 Mo | Linux LVM (8e) |
300 Mo | Linux LVM (8e) |
500 Mo | RAID (fd) |
400 Mo | Linux LVM (8e) |
500 Mo | RAID (fd) |
500 Mo | RAID (fd) |
200 Mo | Inchangé |
Vous obtiendrez un résultat similaire à celui-ci :
Command (m for help): t Partition number (1-12, default 12): 5 Hex code (type L to list all codes): fd Changed type of partition 'Linux' to 'Linux raid autodetect'. Command (m for help): t Partition number (1-12, default 12): 6 Hex code (type L to list all codes): 8e Changed type of partition 'Linux' to 'Linux LVM'. Command (m for help): t Partition number (1-12, default 12): 7 Hex code (type L to list all codes): 8e Changed type of partition 'Linux' to 'Linux LVM'. Command (m for help): t Partition number (1-12, default 12): 8 Hex code (type L to list all codes): fd Changed type of partition 'Linux' to 'Linux raid autodetect'. Command (m for help): t Partition number (1-12, default 12): 9 Hex code (type L to list all codes): 8e Changed type of partition 'Linux' to 'Linux LVM'. Command (m for help): t Partition number (1-12, default 12): 10 Hex code (type L to list all codes): fd Changed type of partition 'Linux' to 'Linux raid autodetect'. Command (m for help): t Partition number (1-12, default 12): 11 Hex code (type L to list all codes): fd Changed type of partition 'Linux' to 'Linux raid autodetect'.
A l'issu des modifications, vous obtiendrez un résultat similaire à celui-ci :
Command (m for help): p Disk /dev/sdb: 4 GiB, 4294967296 bytes, 8388608 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xb0dacb39 Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 206847 204800 100M 83 Linux /dev/sdb2 206848 411647 204800 100M 83 Linux /dev/sdb3 411648 616447 204800 100M 83 Linux /dev/sdb4 616448 8388607 7772160 3.7G 5 Extended /dev/sdb5 618496 1642495 1024000 500M fd Linux raid autodetect /dev/sdb6 1644544 2054143 409600 200M 8e Linux LVM /dev/sdb7 2056192 2670591 614400 300M 8e Linux LVM /dev/sdb8 2672640 3696639 1024000 500M fd Linux raid autodetect /dev/sdb9 3698688 4517887 819200 400M 8e Linux LVM /dev/sdb10 4519936 5543935 1024000 500M fd Linux raid autodetect /dev/sdb11 5545984 6569983 1024000 500M fd Linux raid autodetect /dev/sdb12 6572032 6981631 409600 200M 83 Linux Command (m for help):
Pour écrire la nouvelle table des partitions sur disque, vous devez utilisez la commande w puis la commande partprobe :
Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks. [root@centos8 ~]# partprobe
Options de la Commande fdisk
Les options de cette commande sont :
[root@centos8 ~]# fdisk --help Usage: fdisk [options] <disk> change partition table fdisk [options] -l [<disk>] list partition table(s) Display or manipulate a disk partition table. Options: -b, --sector-size <size> physical and logical sector size -B, --protect-boot don't erase bootbits when creating a new label -c, --compatibility[=<mode>] mode is 'dos' or 'nondos' (default) -L, --color[=<when>] colorize output (auto, always or never) colors are enabled by default -l, --list display partitions and exit -o, --output <list> output columns -t, --type <type> recognize specified partition table type only -u, --units[=<unit>] display units: 'cylinders' or 'sectors' (default) -s, --getsz display device size in 512-byte sectors [DEPRECATED] --bytes print SIZE in bytes rather than in human readable format -w, --wipe <mode> wipe signatures (auto, always or never) -W, --wipe-partitions <mode> wipe signatures from new partitions (auto, always or never) -C, --cylinders <number> specify the number of cylinders -H, --heads <number> specify the number of heads -S, --sectors <number> specify the number of sectors per track -h, --help display this help -V, --version display version Available output columns: gpt: Device Start End Sectors Size Type Type-UUID Attrs Name UUID dos: Device Start End Sectors Cylinders Size Type Id Attrs Boot End-C/H/S Start-C/H/S bsd: Slice Start End Sectors Cylinders Size Type Bsize Cpg Fsize sgi: Device Start End Sectors Cylinders Size Type Id Attrs sun: Device Start End Sectors Cylinders Size Type Id Flags For more details see fdisk(8).
Logical Volume Manager (LVM)
LAB #3 - Volumes Logiques Linéaires
Afin de mettre en place le LVM, vous avez besoin du paquet lvm2 et du paquet device-mapper.
Nous allons travailler sous RHEL/CentOS 8 avec les partitions suivantes :
/dev/sdb6 1644544 2054143 409600 200M 8e Linux LVM /dev/sdb7 2056192 2670591 614400 300M 8e Linux LVM /dev/sdb9 3698688 4517887 819200 400M 8e Linux LVM
Pour initialiser le LVM saississez la commande suivante :
[root@centos8 ~]# vgscan Found volume group "cl_centos8" using metadata type lvm2
Les options de la commande vgscan sont :
[root@centos8 ~]# vgscan --longhelp vgscan - Search for all volume groups vgscan [ --ignorelockingfailure ] [ --mknodes ] [ --notifydbus ] [ --reportformat basic|json ] [ COMMON_OPTIONS ] Common options for lvm: [ -d|--debug ] [ -h|--help ] [ -q|--quiet ] [ -v|--verbose ] [ -y|--yes ] [ -t|--test ] [ --commandprofile String ] [ --config String ] [ --driverloaded y|n ] [ --nolocking ] [ --lockopt String ] [ --longhelp ] [ --profile String ] [ --version ] Common variables for lvm: Variables in option or position args are capitalized, e.g. PV, VG, LV, Size, Number, String, Tag. PV Physical Volume name, a device path under /dev. For commands managing physical extents, a PV positional arg generally accepts a suffix indicating a range (or multiple ranges) of PEs. When the first PE is omitted, it defaults to the start of the device, and when the last PE is omitted it defaults to the end. PV[:PE-PE]... is start and end range (inclusive), PV[:PE+PE]... is start and length range (counting from 0). LV Logical Volume name. See lvm(8) for valid names. An LV positional arg generally includes the VG name and LV name, e.g. VG/LV. LV followed by _<type> indicates that an LV of the given type is required. (raid represents raid<N> type). The _new suffix indicates that the LV name is new. Tag Tag name. See lvm(8) for information about tag names and using tags in place of a VG, LV or PV. Select Select indicates that a required positional arg can be omitted if the --select option is used. No arg appears in this position. Size[UNIT] Size is an input number that accepts an optional unit. Input units are always treated as base two values, regardless of capitalization, e.g. 'k' and 'K' both refer to 1024. The default input unit is specified by letter, followed by |UNIT. UNIT represents other possible input units: BbBsSkKmMgGtTpPeE. (This should not be confused with the output control --units, where capital letters mean multiple of 1000.)
Physical Volume (PV)
Pour créer le PV il convient d'utiliser la commande pvcreate :
[root@centos8 ~]# pvcreate /dev/sdb6 /dev/sdb7 /dev/sdb9 Physical volume "/dev/sdb6" successfully created. Physical volume "/dev/sdb7" successfully created. Physical volume "/dev/sdb9" successfully created.
Les options de la commande pvcreate sont :
[root@centos8 ~]# pvcreate --longhelp pvcreate - Initialize physical volume(s) for use by LVM pvcreate PV ... [ -f|--force ] [ -M|--metadatatype lvm2 ] [ -u|--uuid String ] [ -Z|--zero y|n ] [ --dataalignment Size[k|UNIT] ] [ --dataalignmentoffset Size[k|UNIT] ] [ --bootloaderareasize Size[m|UNIT] ] [ --labelsector Number ] [ --pvmetadatacopies 0|1|2 ] [ --metadatasize Size[m|UNIT] ] [ --metadataignore y|n ] [ --norestorefile ] [ --setphysicalvolumesize Size[m|UNIT] ] [ --reportformat basic|json ] [ --restorefile String ] [ COMMON_OPTIONS ] Common options for lvm: [ -d|--debug ] [ -h|--help ] [ -q|--quiet ] [ -v|--verbose ] [ -y|--yes ] [ -t|--test ] [ --commandprofile String ] [ --config String ] [ --driverloaded y|n ] [ --nolocking ] [ --lockopt String ] [ --longhelp ] [ --profile String ] [ --version ] Common variables for lvm: Variables in option or position args are capitalized, e.g. PV, VG, LV, Size, Number, String, Tag. PV Physical Volume name, a device path under /dev. For commands managing physical extents, a PV positional arg generally accepts a suffix indicating a range (or multiple ranges) of PEs. When the first PE is omitted, it defaults to the start of the device, and when the last PE is omitted it defaults to the end. PV[:PE-PE]... is start and end range (inclusive), PV[:PE+PE]... is start and length range (counting from 0). LV Logical Volume name. See lvm(8) for valid names. An LV positional arg generally includes the VG name and LV name, e.g. VG/LV. LV followed by _<type> indicates that an LV of the given type is required. (raid represents raid<N> type). The _new suffix indicates that the LV name is new. Tag Tag name. See lvm(8) for information about tag names and using tags in place of a VG, LV or PV. Select Select indicates that a required positional arg can be omitted if the --select option is used. No arg appears in this position. Size[UNIT] Size is an input number that accepts an optional unit. Input units are always treated as base two values, regardless of capitalization, e.g. 'k' and 'K' both refer to 1024. The default input unit is specified by letter, followed by |UNIT. UNIT represents other possible input units: BbBsSkKmMgGtTpPeE. (This should not be confused with the output control --units, where capital letters mean multiple of 1000.)
Pour visualiser le PV il convient d'utiliser la commande pvdisplay :
[root@centos8 ~]# pvdisplay /dev/sdb6 /dev/sdb7 /dev/sdb9 "/dev/sdb6" is a new physical volume of "200.00 MiB" --- NEW Physical volume --- PV Name /dev/sdb6 VG Name PV Size 200.00 MiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID xsAjLA-sUEU-dexm-H7G1-Dsi4-q6qW-8Tqkay "/dev/sdb7" is a new physical volume of "300.00 MiB" --- NEW Physical volume --- PV Name /dev/sdb7 VG Name PV Size 300.00 MiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID WpssK3-sThn-3nS0-80O3-NcW3-23e0-gxejn4 "/dev/sdb9" is a new physical volume of "400.00 MiB" --- NEW Physical volume --- PV Name /dev/sdb9 VG Name PV Size 400.00 MiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID rqaB99-3UdD-pJxE-Z1Eo-h9yv-tZ41-r4UJSY
Les options de la commande pvdisplay sont :
[root@centos8 ~]# pvdisplay --longhelp pvdisplay - Display various attributes of physical volume(s) pvdisplay [ -a|--all ] [ -c|--colon ] [ -C|--columns ] [ -m|--maps ] [ -o|--options String ] [ -S|--select String ] [ -s|--short ] [ -O|--sort String ] [ --aligned ] [ --binary ] [ --configreport log|vg|lv|pv|pvseg|seg ] [ --foreign ] [ --ignorelockingfailure ] [ --logonly ] [ --noheadings ] [ --nosuffix ] [ --readonly ] [ --reportformat basic|json ] [ --separator String ] [ --shared ] [ --unbuffered ] [ --units r|R|h|H|b|B|s|S|k|K|m|M|g|G|t|T|p|P|e|E ] [ COMMON_OPTIONS ] [ PV|Tag ... ] Common options for lvm: [ -d|--debug ] [ -h|--help ] [ -q|--quiet ] [ -v|--verbose ] [ -y|--yes ] [ -t|--test ] [ --commandprofile String ] [ --config String ] [ --driverloaded y|n ] [ --nolocking ] [ --lockopt String ] [ --longhelp ] [ --profile String ] [ --version ] Common variables for lvm: Variables in option or position args are capitalized, e.g. PV, VG, LV, Size, Number, String, Tag. PV Physical Volume name, a device path under /dev. For commands managing physical extents, a PV positional arg generally accepts a suffix indicating a range (or multiple ranges) of PEs. When the first PE is omitted, it defaults to the start of the device, and when the last PE is omitted it defaults to the end. PV[:PE-PE]... is start and end range (inclusive), PV[:PE+PE]... is start and length range (counting from 0). LV Logical Volume name. See lvm(8) for valid names. An LV positional arg generally includes the VG name and LV name, e.g. VG/LV. LV followed by _<type> indicates that an LV of the given type is required. (raid represents raid<N> type). The _new suffix indicates that the LV name is new. Tag Tag name. See lvm(8) for information about tag names and using tags in place of a VG, LV or PV. Select Select indicates that a required positional arg can be omitted if the --select option is used. No arg appears in this position. Size[UNIT] Size is an input number that accepts an optional unit. Input units are always treated as base two values, regardless of capitalization, e.g. 'k' and 'K' both refer to 1024. The default input unit is specified by letter, followed by |UNIT. UNIT represents other possible input units: BbBsSkKmMgGtTpPeE. (This should not be confused with the output control --units, where capital letters mean multiple of 1000.)
Volume Group (VG) et Physical Extent (PE)
Pour créer un Volume Group dénommé vg0, il convient d'utiliser la commande vgcreate :
[root@centos8 ~]# vgcreate -s 8M vg0 /dev/sdb6 /dev/sdb7 /dev/sdb9 Volume group "vg0" successfully created
Les options de la commande vgcreate sont :
[root@centos8 ~]# vgcreate --help vgcreate - Create a volume group vgcreate VG_new PV ... [ -A|--autobackup y|n ] [ -c|--clustered y|n ] [ -l|--maxlogicalvolumes Number ] [ -p|--maxphysicalvolumes Number ] [ -M|--metadatatype lvm2 ] [ -s|--physicalextentsize Size[m|UNIT] ] [ -f|--force ] [ -Z|--zero y|n ] [ --addtag Tag ] [ --alloc contiguous|cling|cling_by_tags|normal|anywhere|inherit ] [ --metadataprofile String ] [ --labelsector Number ] [ --metadatasize Size[m|UNIT] ] [ --pvmetadatacopies 0|1|2 ] [ --vgmetadatacopies all|unmanaged|Number ] [ --reportformat basic|json ] [ --dataalignment Size[k|UNIT] ] [ --dataalignmentoffset Size[k|UNIT] ] [ --shared ] [ --systemid String ] [ --locktype sanlock|dlm|none ] [ COMMON_OPTIONS ] Common options for lvm: [ -d|--debug ] [ -h|--help ] [ -q|--quiet ] [ -v|--verbose ] [ -y|--yes ] [ -t|--test ] [ --commandprofile String ] [ --config String ] [ --driverloaded y|n ] [ --nolocking ] [ --lockopt String ] [ --longhelp ] [ --profile String ] [ --version ] Use --longhelp to show all options and advanced commands.
Pour afficher les informations concernant vg0, il convient d'utiliser la commande vgdisplay :
[root@centos8 ~]# vgdisplay vg0 --- Volume group --- VG Name vg0 System ID Format lvm2 Metadata Areas 3 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 3 Act PV 3 VG Size 880.00 MiB PE Size 8.00 MiB Total PE 110 Alloc PE / Size 0 / 0 Free PE / Size 110 / 880.00 MiB VG UUID 6cO8IX-xhvn-5J4z-Em2t-7RAq-u3y8-1cVZln
Les options de la commande vgdisplay sont :
[root@centos8 ~]# vgdisplay --help vgdisplay - Display volume group information vgdisplay [ -A|--activevolumegroups ] [ -c|--colon ] [ -C|--columns ] [ -o|--options String ] [ -S|--select String ] [ -s|--short ] [ -O|--sort String ] [ --aligned ] [ --binary ] [ --configreport log|vg|lv|pv|pvseg|seg ] [ --foreign ] [ --ignorelockingfailure ] [ --logonly ] [ --noheadings ] [ --nosuffix ] [ --readonly ] [ --reportformat basic|json ] [ --shared ] [ --separator String ] [ --unbuffered ] [ --units r|R|h|H|b|B|s|S|k|K|m|M|g|G|t|T|p|P|e|E ] [ COMMON_OPTIONS ] [ VG|Tag ... ] Common options for lvm: [ -d|--debug ] [ -h|--help ] [ -q|--quiet ] [ -v|--verbose ] [ -y|--yes ] [ -t|--test ] [ --commandprofile String ] [ --config String ] [ --driverloaded y|n ] [ --nolocking ] [ --lockopt String ] [ --longhelp ] [ --profile String ] [ --version ] Use --longhelp to show all options and advanced commands.
Logical Volumes (LV)
Pour créer un Logical Volume dénommé lv0 dans le Volume Group vg0, il convient d'utiliser la commande lvcreate :
[root@centos8 ~]# lvcreate -L 350 -n lv0 vg0 Rounding up size to full physical extent 352.00 MiB Logical volume "lv0" created.
Important -Notez que la taille du LV est un multiple du PE.
Les options de la commande lvcreate sont :
[root@centos8 ~]# lvcreate --help lvcreate - Create a logical volume Create a linear LV. lvcreate -L|--size Size[m|UNIT] VG [ -l|--extents Number[PERCENT] ] [ --type linear ] [ COMMON_OPTIONS ] [ PV ... ] Create a striped LV (infers --type striped). lvcreate -i|--stripes Number -L|--size Size[m|UNIT] VG [ -l|--extents Number[PERCENT] ] [ -I|--stripesize Size[k|UNIT] ] [ COMMON_OPTIONS ] [ PV ... ] Create a raid1 or mirror LV (infers --type raid1|mirror). lvcreate -m|--mirrors Number -L|--size Size[m|UNIT] VG [ -l|--extents Number[PERCENT] ] [ -R|--regionsize Size[m|UNIT] ] [ --mirrorlog core|disk ] [ --minrecoveryrate Size[k|UNIT] ] [ --maxrecoveryrate Size[k|UNIT] ] [ COMMON_OPTIONS ] [ PV ... ] Create a raid LV (a specific raid level must be used, e.g. raid1). lvcreate --type raid -L|--size Size[m|UNIT] VG [ -l|--extents Number[PERCENT] ] [ -m|--mirrors Number ] [ -i|--stripes Number ] [ -I|--stripesize Size[k|UNIT] ] [ -R|--regionsize Size[m|UNIT] ] [ --minrecoveryrate Size[k|UNIT] ] [ --maxrecoveryrate Size[k|UNIT] ] [ --raidintegrity y|n ] [ --raidintegritymode String ] [ --raidintegrityblocksize Number ] [ COMMON_OPTIONS ] [ PV ... ] Create a raid10 LV. lvcreate -m|--mirrors Number -i|--stripes Number -L|--size Size[m|UNIT] VG [ -l|--extents Number[PERCENT] ] [ -I|--stripesize Size[k|UNIT] ] [ -R|--regionsize Size[m|UNIT] ] [ --minrecoveryrate Size[k|UNIT] ] [ --maxrecoveryrate Size[k|UNIT] ] [ COMMON_OPTIONS ] [ PV ... ] Create a COW snapshot LV of an origin LV. lvcreate -s|--snapshot -L|--size Size[m|UNIT] LV [ -l|--extents Number[PERCENT] ] [ -i|--stripes Number ] [ -I|--stripesize Size[k|UNIT] ] [ -c|--chunksize Size[k|UNIT] ] [ --type snapshot ] [ COMMON_OPTIONS ] [ PV ... ] Create a thin pool. lvcreate --type thin-pool -L|--size Size[m|UNIT] VG [ -l|--extents Number[PERCENT] ] [ -c|--chunksize Size[k|UNIT] ] [ -i|--stripes Number ] [ -I|--stripesize Size[k|UNIT] ] [ --thinpool LV_new ] [ --poolmetadatasize Size[m|UNIT] ] [ --poolmetadataspare y|n ] [ --discards passdown|nopassdown|ignore ] [ --errorwhenfull y|n ] [ COMMON_OPTIONS ] [ PV ... ] Create a cache pool. lvcreate --type cache-pool -L|--size Size[m|UNIT] VG [ -l|--extents Number[PERCENT] ] [ -H|--cache ] [ -c|--chunksize Size[k|UNIT] ] [ --poolmetadatasize Size[m|UNIT] ] [ --poolmetadataspare y|n ] [ --cachemode writethrough|writeback|passthrough ] [ --cachepolicy String ] [ --cachesettings String ] [ --cachemetadataformat auto|1|2 ] [ COMMON_OPTIONS ] [ PV ... ] Create a thin LV in a thin pool (infers --type thin). lvcreate -V|--virtualsize Size[m|UNIT] --thinpool LV_thinpool VG [ -T|--thin ] [ --type thin ] [ --discards passdown|nopassdown|ignore ] [ --errorwhenfull y|n ] [ COMMON_OPTIONS ] Create a thin LV that is a snapshot of an existing thin LV (infers --type thin). lvcreate -s|--snapshot LV_thin [ --type thin ] [ --discards passdown|nopassdown|ignore ] [ --errorwhenfull y|n ] [ COMMON_OPTIONS ] Create a thin LV that is a snapshot of an external origin LV. lvcreate --type thin --thinpool LV_thinpool LV [ -T|--thin ] [ -c|--chunksize Size[k|UNIT] ] [ --poolmetadatasize Size[m|UNIT] ] [ --poolmetadataspare y|n ] [ --discards passdown|nopassdown|ignore ] [ --errorwhenfull y|n ] [ COMMON_OPTIONS ] Create a LV that returns VDO when used. lvcreate --type vdo -L|--size Size[m|UNIT] VG [ -l|--extents Number[PERCENT] ] [ -V|--virtualsize Size[m|UNIT] ] [ -i|--stripes Number ] [ -I|--stripesize Size[k|UNIT] ] [ --vdo ] [ --vdopool LV_new ] [ --compression y|n ] [ --deduplication y|n ] [ COMMON_OPTIONS ] [ PV ... ] Create a thin LV, first creating a thin pool for it, where the new thin pool is named by the --thinpool arg. lvcreate --type thin -V|--virtualsize Size[m|UNIT] -L|--size Size[m|UNIT] --thinpool LV_new [ -l|--extents Number[PERCENT] ] [ -T|--thin ] [ -c|--chunksize Size[k|UNIT] ] [ -i|--stripes Number ] [ -I|--stripesize Size[k|UNIT] ] [ --poolmetadatasize Size[m|UNIT] ] [ --poolmetadataspare y|n ] [ --discards passdown|nopassdown|ignore ] [ --errorwhenfull y|n ] [ COMMON_OPTIONS ] [ PV ... ] Create a new LV, then attach the specified cachepool which converts the new LV to type cache. lvcreate --type cache -L|--size Size[m|UNIT] --cachepool LV_cachepool VG [ -l|--extents Number[PERCENT] ] [ -H|--cache ] [ -c|--chunksize Size[k|UNIT] ] [ -i|--stripes Number ] [ -I|--stripesize Size[k|UNIT] ] [ --poolmetadatasize Size[m|UNIT] ] [ --poolmetadataspare y|n ] [ --cachemode writethrough|writeback|passthrough ] [ --cachepolicy String ] [ --cachesettings String ] [ --cachemetadataformat auto|1|2 ] [ COMMON_OPTIONS ] [ PV ... ] Create a new LV, then attach the specified cachevol which converts the new LV to type cache. lvcreate --type cache -L|--size Size[m|UNIT] --cachevol LV VG [ -l|--extents Number[PERCENT] ] [ -c|--chunksize Size[k|UNIT] ] [ -i|--stripes Number ] [ -I|--stripesize Size[k|UNIT] ] [ --cachemode writethrough|writeback|passthrough ] [ --cachepolicy String ] [ --cachesettings String ] [ --cachemetadataformat auto|1|2 ] [ COMMON_OPTIONS ] [ PV ... ] Create a new LV, then attach a cachevol created from the specified cache device, which converts the new LV to type cache. lvcreate --type cache -L|--size Size[m|UNIT] --cachedevice PV VG [ -l|--extents Number[PERCENT] ] [ -c|--chunksize Size[k|UNIT] ] [ -i|--stripes Number ] [ -I|--stripesize Size[k|UNIT] ] [ --cachemode writethrough|writeback|passthrough ] [ --cachepolicy String ] [ --cachesettings String ] [ --cachemetadataformat auto|1|2 ] [ --cachesize Size[m|UNIT] ] [ COMMON_OPTIONS ] [ PV ... ] Create a new LV, then attach the specified cachevol which converts the new LV to type writecache. lvcreate --type writecache -L|--size Size[m|UNIT] --cachevol LV VG [ -l|--extents Number[PERCENT] ] [ -i|--stripes Number ] [ -I|--stripesize Size[k|UNIT] ] [ --cachesettings String ] [ COMMON_OPTIONS ] [ PV ... ] Create a new LV, then attach a cachevol created from the specified cache device, which converts the new LV to type writecache. lvcreate --type writecache -L|--size Size[m|UNIT] --cachedevice PV VG [ -l|--extents Number[PERCENT] ] [ -i|--stripes Number ] [ -I|--stripesize Size[k|UNIT] ] [ --cachesize Size[m|UNIT] ] [ --cachesettings String ] [ COMMON_OPTIONS ] [ PV ... ] Common options for command: [ -a|--activate y|n|ay ] [ -A|--autobackup y|n ] [ -C|--contiguous y|n ] [ -M|--persistent y|n ] [ -j|--major Number ] [ -k|--setactivationskip y|n ] [ -K|--ignoreactivationskip ] [ -n|--name String ] [ -p|--permission rw|r ] [ -r|--readahead auto|none|Number ] [ -W|--wipesignatures y|n ] [ -Z|--zero y|n ] [ --addtag Tag ] [ --alloc contiguous|cling|cling_by_tags|normal|anywhere|inherit ] [ --ignoremonitoring ] [ --metadataprofile String ] [ --minor Number ] [ --monitor y|n ] [ --nosync ] [ --noudevsync ] [ --reportformat basic|json ] Common options for lvm: [ -d|--debug ] [ -h|--help ] [ -q|--quiet ] [ -v|--verbose ] [ -y|--yes ] [ -t|--test ] [ --commandprofile String ] [ --config String ] [ --driverloaded y|n ] [ --nolocking ] [ --lockopt String ] [ --longhelp ] [ --profile String ] [ --version ] Use --longhelp to show all options and advanced commands.
Créez maintenant un répertoire dans /mnt pour monter lv0 :
[root@centos8 ~]# mkdir /mnt/lvm
Créez un système de fichiers en ext3 sur /dev/vg0/lv0 :
[root@centos8 ~]# mke2fs -j /dev/vg0/lv0 mke2fs 1.45.6 (20-Mar-2020) Creating filesystem with 360448 1k blocks and 90112 inodes Filesystem UUID: 87b6d526-d379-4e0c-8984-94811f1cee33 Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729, 204801, 221185 Allocating group tables: done Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done
Montez votre lv0 :
[root@centos8 ~]# mount -t ext3 /dev/vg0/lv0 /mnt/lvm
Vous allez maintenant copier le contenu de votre répertoire /home vers /mnt/lvm.
Saisissez donc la commande pour copier le contenu de /home :
[root@centos8 ~]# cp -a /home /mnt/lvm
Constatez ensuite le contenu de /mnt/lvm :
[root@centos8 ~]# ls -l /mnt/lvm total 14 drwxr-xr-x. 5 root root 1024 Apr 20 14:35 home drwx------. 2 root root 12288 May 26 17:00 lost+found
Une particularité du volume logique est la capacité de d'être aggrandi ou réduit sans pertes de données. Commencez par constater la taille totale du volume :
[root@centos8 ~]# df -h /mnt/lvm Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg0-lv0 333M 17M 314M 1% /mnt/lvm
Dans la cas de notre exemple, la taille est de 333 Mo avec 17 Mo occupé.
LAB #4 - Etendre un Volume Logique à Chaud
Pour agrandir un volume logique, le paquet lvm2 contient les commandes lvextend et resize2fs :
[root@centos8 ~]# lvextend -L +100M /dev/vg0/lv0 Rounding size to boundary between physical extents: 104.00 MiB. Size of logical volume vg0/lv0 changed from 352.00 MiB (44 extents) to 456.00 MiB (57 extents). Logical volume vg0/lv0 successfully resized.
Important - Notez que l'agrandissement du volume est un multiple du PE.
Les options de la commande lvextend sont :
[root@centos8 ~]# lvextend --help lvextend - Add space to a logical volume Extend an LV by a specified size. lvextend -L|--size [+]Size[m|UNIT] LV [ -l|--extents [+]Number[PERCENT] ] [ -r|--resizefs ] [ -i|--stripes Number ] [ -I|--stripesize Size[k|UNIT] ] [ --poolmetadatasize [+]Size[m|UNIT] ] [ COMMON_OPTIONS ] [ PV ... ] Extend an LV by specified PV extents. lvextend LV PV ... [ -r|--resizefs ] [ -i|--stripes Number ] [ -I|--stripesize Size[k|UNIT] ] [ COMMON_OPTIONS ] Extend a pool metadata SubLV by a specified size. lvextend --poolmetadatasize [+]Size[m|UNIT] LV_thinpool [ -i|--stripes Number ] [ -I|--stripesize Size[k|UNIT] ] [ COMMON_OPTIONS ] [ PV ... ] Extend an LV according to a predefined policy. lvextend --usepolicies LV_snapshot_thinpool [ -r|--resizefs ] [ COMMON_OPTIONS ] [ PV ... ] Common options for command: [ -A|--autobackup y|n ] [ -f|--force ] [ -m|--mirrors Number ] [ -n|--nofsck ] [ --alloc contiguous|cling|cling_by_tags|normal|anywhere|inherit ] [ --nosync ] [ --noudevsync ] [ --reportformat basic|json ] [ --type linear|striped|snapshot|mirror|raid|thin|cache|vdo|thin-pool|cache-pool|vdo-pool ] Common options for lvm: [ -d|--debug ] [ -h|--help ] [ -q|--quiet ] [ -v|--verbose ] [ -y|--yes ] [ -t|--test ] [ --commandprofile String ] [ --config String ] [ --driverloaded y|n ] [ --nolocking ] [ --lockopt String ] [ --longhelp ] [ --profile String ] [ --version ] Use --longhelp to show all options and advanced commands.
Le volume ayant été agrandi, il est necessaire maintenant d'agrandir le filesystem qui s'y trouve :
[root@centos8 ~]# resize2fs /dev/vg0/lv0 resize2fs 1.45.6 (20-Mar-2020) Filesystem at /dev/vg0/lv0 is mounted on /mnt/lvm; on-line resizing required old_desc_blocks = 2, new_desc_blocks = 2 The filesystem on /dev/vg0/lv0 is now 466944 (1k) blocks long.
Constatez maintenant la modification de la taille du volume :
[root@centos8 ~]# df -h /mnt/lvm Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg0-lv0 434M 17M 395M 5% /mnt/lvm
Vous noterez que la taille a augmentée mais que les données sont toujours présentes.
LAB #5 - Snapshots
Un snapshot est un instantané d'un système de fichiers. Dans cet exemple, vous allez créer un snapshot de votre lv0 :
Avant de commencer, créez un fichier de 10Mo dans le volume :
[root@centos8 ~]# dd if=/dev/zero of=/mnt/lvm/10M bs=1048576 count=10 10+0 records in 10+0 records out 10485760 bytes (10 MB, 10 MiB) copied, 0.0281282 s, 373 MB/s
Créez maintenant un snapshot :
[root@centos8 ~]# lvcreate -s -L 18M -n testsnap /dev/vg0/lv0 Rounding up size to full physical extent 24.00 MiB Logical volume "testsnap" created.
Pour avoir une confirmation de la création du snapshot, utilisez la commande lvs :
[root@centos8 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root cl_centos8 -wi-ao---- 27.79g swap cl_centos8 -wi-ao---- 3.20g lv0 vg0 owi-aos--- 456.00m testsnap vg0 swi-a-s--- 24.00m lv0 0.05
Important - Notez que le snapshot est créé dans le même VG que le LV d'origine.
Les options de la commande lvs sont :
[root@centos8 ~]# lvs --help lvs - Display information about logical volumes lvs [ -H|--history ] [ -a|--all ] [ -o|--options String ] [ -S|--select String ] [ -O|--sort String ] [ --segments ] [ --aligned ] [ --binary ] [ --configreport log|vg|lv|pv|pvseg|seg ] [ --foreign ] [ --ignorelockingfailure ] [ --logonly ] [ --nameprefixes ] [ --noheadings ] [ --nosuffix ] [ --readonly ] [ --reportformat basic|json ] [ --rows ] [ --separator String ] [ --shared ] [ --unbuffered ] [ --units r|R|h|H|b|B|s|S|k|K|m|M|g|G|t|T|p|P|e|E ] [ --unquoted ] [ COMMON_OPTIONS ] [ VG|LV|Tag ... ] Common options for lvm: [ -d|--debug ] [ -h|--help ] [ -q|--quiet ] [ -v|--verbose ] [ -y|--yes ] [ -t|--test ] [ --commandprofile String ] [ --config String ] [ --driverloaded y|n ] [ --nolocking ] [ --lockopt String ] [ --longhelp ] [ --profile String ] [ --version ] Use --longhelp to show all options and advanced commands.
Créez maintenant un répertoire pour monter le snapshot :
[root@centos8 ~]# mkdir /mnt/testsnap
Montez le snapshot :
[root@centos8 ~]# mount /dev/vg0/testsnap /mnt/testsnap
Comparez le volume d'origine et le snapshot :
[root@centos8 ~]# ls -l /mnt/lvm total 10296 -rw-r--r--. 1 root root 10485760 Jun 24 04:41 10M drwxr-xr-x. 3 root root 1024 Jun 16 06:39 home drwx------. 2 root root 12288 Jun 24 04:20 lost+found [root@centos8 ~]# ls -l /mnt/testsnap/ total 10296 -rw-r--r--. 1 root root 10485760 Jun 24 04:41 10M drwxr-xr-x. 3 root root 1024 Jun 16 06:39 home drwx------. 2 root root 12288 Jun 24 04:20 lost+found
Supprimez maintenant le fichier 10M de votre volume d'origine :
[root@centos8 ~]# rm /mnt/lvm/10M rm: remove regular file '/mnt/lvm/10M'? y
Constatez le résultat de cette suppression :
[root@centos8 ~]# df -Ph /mnt/lvm Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg0-lv0 434M 17M 395M 5% /mnt/lvm [root@centos8 ~]# df -Ph /mnt/testsnap/ Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg0-testsnap 434M 27M 385M 7% /mnt/testsnap [root@centos8 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root cl_centos8 -wi-ao---- 27.79g swap cl_centos8 -wi-ao---- 3.20g lv0 vg0 owi-aos--- 456.00m testsnap vg0 swi-aos--- 24.00m lv0 0.24
A Faire - Restaurez le fichier 10M à partir du snapshot.
LAB #6 - Suppression des Volumes
La suppression d'un volume logique se fait grace à la commande lvremove :
[root@centos8 ~]# umount /mnt/testsnap/ [root@centos8 ~]# lvremove /dev/vg0/testsnap Do you really want to remove active logical volume vg0/testsnap? [y/n]: y Logical volume "testsnap" successfully removed [root@centos8 ~]# umount /mnt/lvm [root@centos8 ~]# lvremove /dev/vg0/lv0 Do you really want to remove active logical volume vg0/lv0? [y/n]: y Logical volume "lv0" successfully removed
Important - Notez que cette opération necéssite à ce que le volume logique soit démonté.
Les options de la commande lvremove sont :
[root@centos8 ~]# lvremove --help lvremove - Remove logical volume(s) from the system lvremove VG|LV|Tag|Select ... [ -A|--autobackup y|n ] [ -f|--force ] [ -S|--select String ] [ --nohistory ] [ --noudevsync ] [ --reportformat basic|json ] [ COMMON_OPTIONS ] Common options for lvm: [ -d|--debug ] [ -h|--help ] [ -q|--quiet ] [ -v|--verbose ] [ -y|--yes ] [ -t|--test ] [ --commandprofile String ] [ --config String ] [ --driverloaded y|n ] [ --nolocking ] [ --lockopt String ] [ --longhelp ] [ --profile String ] [ --version ] Use --longhelp to show all options and advanced commands
Le Volume Group peut aussi être supprimé :
[root@centos8 ~]# vgremove vg0 Volume group "vg0" successfully removed
Les options de la commande vgremove sont :
[root@centos8 ~]# vgremove --help vgremove - Remove volume group(s) vgremove VG|Tag|Select ... [ -f|--force ] [ -S|--select String ] [ --noudevsync ] [ --reportformat basic|json ] [ COMMON_OPTIONS ] Common options for lvm: [ -d|--debug ] [ -h|--help ] [ -q|--quiet ] [ -v|--verbose ] [ -y|--yes ] [ -t|--test ] [ --commandprofile String ] [ --config String ] [ --driverloaded y|n ] [ --nolocking ] [ --lockopt String ] [ --longhelp ] [ --profile String ] [ --version ] Use --longhelp to show all options and advanced commands.
Ainsi que le volume physique :
[root@centos8 ~]# pvremove /dev/sdb6 /dev/sdb7 /dev/sdb9 Labels on physical volume "/dev/sdb6" successfully wiped. Labels on physical volume "/dev/sdb7" successfully wiped. Labels on physical volume "/dev/sdb9" successfully wiped.
Les options de la commande pvremove sont :
[root@centos8 ~]# pvremove --help pvremove - Remove LVM label(s) from physical volume(s) pvremove PV ... [ -f|--force ] [ --reportformat basic|json ] [ COMMON_OPTIONS ] Common options for lvm: [ -d|--debug ] [ -h|--help ] [ -q|--quiet ] [ -v|--verbose ] [ -y|--yes ] [ -t|--test ] [ --commandprofile String ] [ --config String ] [ --driverloaded y|n ] [ --nolocking ] [ --lockopt String ] [ --longhelp ] [ --profile String ] [ --version ] Use --longhelp to show all options and advanced commands.
LAB #7 - Volumes Logiques en Miroir
Re-créez maintenant votre Volume Group :
[root@centos8 ~]# pvcreate /dev/sdb6 /dev/sdb7 /dev/sdb9 Physical volume "/dev/sdb6" successfully created. Physical volume "/dev/sdb7" successfully created. Physical volume "/dev/sdb9" successfully created. [root@centos8 ~]# vgcreate -s 8M vg0 /dev/sdb6 /dev/sdb7 /dev/sdb9 Volume group "vg0" successfully created
Créez maintenant un Logical Volume en miroir grâce à l'option -m de la commande lvcreate, suivi du nombre de miroirs :
[root@centos8 ~]# lvcreate -m 1 -L 100M -n lv1 vg0 Rounding up size to full physical extent 104.00 MiB Logical volume "lv1" created.
Constatez maintenant la présence du miroir :
[root@centos8 ~]# lvdisplay -m /dev/vg0/lv1 --- Logical volume --- LV Path /dev/vg0/lv1 LV Name lv1 VG Name vg0 LV UUID lJQQWs-n05T-pxzi-Zq2R-UzRI-kYZf-hsNPYQ LV Write Access read/write LV Creation host, time centos8.ittraining.loc, 2021-06-02 07:37:28 -0400 LV Status available # open 0 LV Size 104.00 MiB Current LE 13 Mirrored volumes 2 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:4 --- Segments --- Logical extents 0 to 12: Type raid1 Monitoring monitored Raid Data LV 0 Logical volume lv1_rimage_0 Logical extents 0 to 12 Raid Data LV 1 Logical volume lv1_rimage_1 Logical extents 0 to 12 Raid Metadata LV 0 lv1_rmeta_0 Raid Metadata LV 1 lv1_rmeta_1
Le miroir s'étend sur plusieurs volumes physiques :
[root@centos8 ~]# pvdisplay -m /dev/sdb6 /dev/sdb7 /dev/sdb9 --- Physical volume --- PV Name /dev/sdb6 VG Name vg0 PV Size 200.00 MiB / not usable 8.00 MiB Allocatable yes PE Size 8.00 MiB Total PE 24 Free PE 10 Allocated PE 14 PV UUID lxuKRI-l3Dd-jhsv-OWtw-au2c-0ti0-XGnt1E --- Physical Segments --- Physical extent 0 to 0: Logical volume /dev/vg0/lv1_rmeta_0 Logical extents 0 to 0 Physical extent 1 to 13: Logical volume /dev/vg0/lv1_rimage_0 Logical extents 0 to 12 Physical extent 14 to 23: FREE --- Physical volume --- PV Name /dev/sdb7 VG Name vg0 PV Size 300.00 MiB / not usable 4.00 MiB Allocatable yes PE Size 8.00 MiB Total PE 37 Free PE 23 Allocated PE 14 PV UUID QDmfcX-Pv8o-hapq-TJOI-RaPH-qecT-VUMY4v --- Physical Segments --- Physical extent 0 to 0: Logical volume /dev/vg0/lv1_rmeta_1 Logical extents 0 to 0 Physical extent 1 to 13: Logical volume /dev/vg0/lv1_rimage_1 Logical extents 0 to 12 Physical extent 14 to 36: FREE --- Physical volume --- PV Name /dev/sdb9 VG Name vg0 PV Size 400.00 MiB / not usable 8.00 MiB Allocatable yes PE Size 8.00 MiB Total PE 49 Free PE 49 Allocated PE 0 PV UUID ZTQV1b-Ha76-BQtB-zJEU-kfyK-ausJ-CxnRwg --- Physical Segments --- Physical extent 0 to 48: FREE
La suppression du miroir se fait en utilisant la commande lvconvert en indiquant quel volume physique doit être vidé de son contenu :
[root@centos8 ~]# lvconvert -m 0 /dev/vg0/lv1 /dev/sdb7 Are you sure you want to convert raid1 LV vg0/lv1 to type linear losing all resilience? [y/n]: y Logical volume vg0/lv1 successfully converted.
De même, il est possible de créer un miroir pour un volume logique existant :
[root@centos8 ~]# lvconvert -m 1 /dev/vg0/lv1 Are you sure you want to convert linear LV vg0/lv1 to raid1 with 2 images enhancing resilience? [y/n]: y Logical volume vg0/lv1 successfully converted.
Supprimez de nouveau votre miroir :
[root@centos8 ~]# lvconvert -m 0 /dev/vg0/lv1 /dev/sdb7 Are you sure you want to convert raid1 LV vg0/lv1 to type linear losing all resilience? [y/n]: y Logical volume vg0/lv1 successfully converted.
Les options de la commande lvconvert sont :
[root@centos8 ~]# lvconvert --help lvconvert - Change logical volume layout Convert LV to linear. lvconvert --type linear LV [ COMMON_OPTIONS ] [ PV ... ] Convert LV to striped. lvconvert --type striped LV [ -I|--stripesize Size[k|UNIT] ] [ -R|--regionsize Size[m|UNIT] ] [ -i|--interval Number ] [ --stripes Number ] [ COMMON_OPTIONS ] [ PV ... ] Convert LV to type mirror (also see type raid1), lvconvert --type mirror LV [ -m|--mirrors [+|-]Number ] [ -I|--stripesize Size[k|UNIT] ] [ -R|--regionsize Size[m|UNIT] ] [ -i|--interval Number ] [ --stripes Number ] [ --mirrorlog core|disk ] [ COMMON_OPTIONS ] [ PV ... ] Convert LV to raid or change raid layout (a specific raid level must be used, e.g. raid1). lvconvert --type raid LV [ -m|--mirrors [+|-]Number ] [ -I|--stripesize Size[k|UNIT] ] [ -R|--regionsize Size[m|UNIT] ] [ -i|--interval Number ] [ --stripes Number ] [ COMMON_OPTIONS ] [ PV ... ] Convert LV to raid1 or mirror, or change number of mirror images. lvconvert -m|--mirrors [+|-]Number LV [ -R|--regionsize Size[m|UNIT] ] [ -i|--interval Number ] [ --mirrorlog core|disk ] [ COMMON_OPTIONS ] [ PV ... ] Convert raid LV to change number of stripe images. lvconvert --stripes Number LV_raid [ -i|--interval Number ] [ -R|--regionsize Size[m|UNIT] ] [ -I|--stripesize Size[k|UNIT] ] [ COMMON_OPTIONS ] [ PV ... ] Convert raid LV to change the stripe size. lvconvert -I|--stripesize Size[k|UNIT] LV_raid [ -i|--interval Number ] [ -R|--regionsize Size[m|UNIT] ] [ COMMON_OPTIONS ] Split images from a raid1 or mirror LV and use them to create a new LV. lvconvert --splitmirrors Number -n|--name LV_new LV_cache_mirror_raid1 [ COMMON_OPTIONS ] [ PV ... ] Split images from a raid1 LV and track changes to origin for later merge. lvconvert --splitmirrors Number --trackchanges LV_cache_raid1 [ COMMON_OPTIONS ] [ PV ... ] Merge LV images that were split from a raid1 LV. lvconvert --mergemirrors VG|LV_linear_raid|Tag ... [ COMMON_OPTIONS ] Convert LV to a thin LV, using the original LV as an external origin. lvconvert --type thin --thinpool LV LV_linear_striped_thin_cache_raid [ -T|--thin ] [ -r|--readahead auto|none|Number ] [ -c|--chunksize Size[k|UNIT] ] [ -Z|--zero y|n ] [ --originname LV_new ] [ --poolmetadata LV ] [ --poolmetadatasize Size[m|UNIT] ] [ --poolmetadataspare y|n ] [ --metadataprofile String ] [ COMMON_OPTIONS ] Attach a cache pool to an LV, converts the LV to type cache. lvconvert --type cache --cachepool LV LV_linear_striped_thinpool_vdo_vdopool_vdopooldata_raid [ -H|--cache ] [ -Z|--zero y|n ] [ -r|--readahead auto|none|Number ] [ -c|--chunksize Size[k|UNIT] ] [ --cachemetadataformat auto|1|2 ] [ --cachemode writethrough|writeback|passthrough ] [ --cachepolicy String ] [ --cachesettings String ] [ --poolmetadata LV ] [ --poolmetadatasize Size[m|UNIT] ] [ --poolmetadataspare y|n ] [ --metadataprofile String ] [ COMMON_OPTIONS ] Attach a writecache to an LV, converts the LV to type writecache. lvconvert --type writecache --cachevol LV LV_linear_striped_raid [ --cachesettings String ] [ COMMON_OPTIONS ] Attach a cache to an LV, converts the LV to type cache. lvconvert --type cache --cachevol LV LV_linear_striped_thinpool_raid [ -H|--cache ] [ -Z|--zero y|n ] [ -c|--chunksize Size[k|UNIT] ] [ --cachemetadataformat auto|1|2 ] [ --cachemode writethrough|writeback|passthrough ] [ --cachepolicy String ] [ --cachesettings String ] [ --poolmetadatasize Size[m|UNIT] ] [ COMMON_OPTIONS ] Add a writecache to an LV, using a specified cache device. lvconvert --type writecache --cachedevice PV LV_linear_striped_raid [ --cachesize Size[m|UNIT] ] [ --cachesettings String ] [ COMMON_OPTIONS ] Add a cache to an LV, using a specified cache device. lvconvert --type cache --cachedevice PV LV_linear_striped_thinpool_raid [ --cachesize Size[m|UNIT] ] [ --cachesettings String ] [ COMMON_OPTIONS ] Convert LV to type thin-pool. lvconvert --type thin-pool LV_linear_striped_cache_raid [ -I|--stripesize Size[k|UNIT] ] [ -r|--readahead auto|none|Number ] [ -c|--chunksize Size[k|UNIT] ] [ -Z|--zero y|n ] [ --stripes Number ] [ --discards passdown|nopassdown|ignore ] [ --poolmetadata LV ] [ --poolmetadatasize Size[m|UNIT] ] [ --poolmetadataspare y|n ] [ --metadataprofile String ] [ COMMON_OPTIONS ] [ PV ... ] Convert LV to type cache-pool. lvconvert --type cache-pool LV_linear_striped_raid [ -Z|--zero y|n ] [ -r|--readahead auto|none|Number ] [ -c|--chunksize Size[k|UNIT] ] [ --cachemetadataformat auto|1|2 ] [ --cachemode writethrough|writeback|passthrough ] [ --cachepolicy String ] [ --cachesettings String ] [ --poolmetadata LV ] [ --poolmetadatasize Size[m|UNIT] ] [ --poolmetadataspare y|n ] [ --metadataprofile String ] [ COMMON_OPTIONS ] [ PV ... ] Convert LV to type vdopool. lvconvert --type vdo-pool LV_linear_striped_cache_raid [ -n|--name LV_new ] [ -V|--virtualsize Size[m|UNIT] ] [ --compression y|n ] [ --deduplication y|n ] [ COMMON_OPTIONS ] Detach a cache from an LV. lvconvert --splitcache LV_thinpool_cache_cachepool_vdopool_writecache [ COMMON_OPTIONS ] Merge thin LV into its origin LV. lvconvert --mergethin LV_thin ... [ COMMON_OPTIONS ] Merge COW snapshot LV into its origin. lvconvert --mergesnapshot LV_snapshot ... [ -i|--interval Number ] [ COMMON_OPTIONS ] Combine a former COW snapshot (second arg) with a former origin LV (first arg) to reverse a splitsnapshot command. lvconvert --type snapshot LV LV_linear_striped [ -s|--snapshot ] [ -c|--chunksize Size[k|UNIT] ] [ -Z|--zero y|n ] [ COMMON_OPTIONS ] Replace failed PVs in a raid or mirror LV. Repair a thin pool. Repair a cache pool. lvconvert --repair LV_thinpool_cache_cachepool_mirror_raid [ -i|--interval Number ] [ --usepolicies ] [ --poolmetadataspare y|n ] [ COMMON_OPTIONS ] [ PV ... ] Replace specific PV(s) in a raid LV with another PV. lvconvert --replace PV LV_raid [ COMMON_OPTIONS ] [ PV ... ] Poll LV to continue conversion. lvconvert --startpoll LV_mirror_raid [ COMMON_OPTIONS ] Add or remove data integrity checksums to raid images. lvconvert --raidintegrity y|n LV_raid [ --raidintegritymode String ] [ --raidintegrityblocksize Number ] [ COMMON_OPTIONS ] [ PV ... ] Common options for command: [ -b|--background ] [ -f|--force ] [ --alloc contiguous|cling|cling_by_tags|normal|anywhere|inherit ] [ --noudevsync ] Common options for lvm: [ -d|--debug ] [ -h|--help ] [ -q|--quiet ] [ -v|--verbose ] [ -y|--yes ] [ -t|--test ] [ --commandprofile String ] [ --config String ] [ --driverloaded y|n ] [ --nolocking ] [ --lockopt String ] [ --longhelp ] [ --profile String ] [ --version ] Use --longhelp to show all options and advanced commands.
LAB #8 - Modifier les Attributs LVM
En cas de présence d'un miroir, la commande lvs indique la présence du miroir dans la colonne Attr avec la lettre m :
[root@centos8 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root cl_centos8 -wi-ao---- 27.79g swap cl_centos8 -wi-ao---- 3.20g lv1 vg0 -wi-a----- 104.00m
Consultez cette page pour comprendre les attributs.
La commande equivalente pour les Volume Groups est vgs :
[root@centos8 ~]# vgs VG #PV #LV #SN Attr VSize VFree cl_centos8 1 2 0 wz--n- <31.00g 0 vg0 3 1 0 wz--n- 880.00m 776.00m
Consultez cette page pour comprendre les attributs.
La commande equivalente pour les Physical Volumes est pvs :
[root@centos8 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 cl_centos8 lvm2 a-- <31.00g 0 /dev/sdb6 vg0 lvm2 a-- 192.00m 88.00m /dev/sdb7 vg0 lvm2 a-- 296.00m 296.00m /dev/sdb9 vg0 lvm2 a-- 392.00m 392.00m
Consultez cette page pour comprendre les attributs.
Les commandes lvchange, vgchange et pvchange permettent de modifier les attributs des Logical Volumes, Volume Groups et Physical Volumes respectivement.
Par exemple, pour rendre inutilisable un Logical Volume, il convient d'enlever l'attribut a :
[root@centos8 ~]# lvchange -a n /dev/vg0/lv1
Pour faire l'inverse il convient de saisir la commande suivante :
[root@centos8 ~]# lvchange -a y /dev/vg0/lv1
Les options de la commande lvchange sont :
[root@centos8 ~]# lvchange --help lvchange - Change the attributes of logical volume(s) Change a general LV attribute. For options listed in parentheses, any one is required, after which the others are optional. lvchange ( -C|--contiguous y|n, -p|--permission rw|r, -r|--readahead auto|none|Number, -k|--setactivationskip y|n, -Z|--zero y|n, -M|--persistent n, --addtag Tag, --deltag Tag, --alloc contiguous|cling|cling_by_tags|normal|anywhere|inherit, --compression y|n, --deduplication y|n, --detachprofile, --metadataprofile String, --profile String, --errorwhenfull y|n, --discards passdown|nopassdown|ignore, --cachemode writethrough|writeback|passthrough, --cachepolicy String, --cachesettings String, --minrecoveryrate Size[k|UNIT], --maxrecoveryrate Size[k|UNIT], --writebehind Number, --writemostly PV[:t|n|y] ) VG|LV|Tag|Select ... [ -a|--activate y|n|ay ] [ --poll y|n ] [ --monitor y|n ] [ COMMON_OPTIONS ] Resyncronize a mirror or raid LV. Use to reset 'R' attribute on a not initially synchronized LV. lvchange --resync VG|LV_mirror_raid|Tag|Select ... [ -a|--activate y|n|ay ] [ COMMON_OPTIONS ] Resynchronize or check a raid LV. lvchange --syncaction check|repair VG|LV_raid|Tag|Select ... [ COMMON_OPTIONS ] Reconstruct data on specific PVs of a raid LV. lvchange --rebuild PV VG|LV_raid|Tag|Select ... [ COMMON_OPTIONS ] Activate or deactivate an LV. lvchange -a|--activate y|n|ay VG|LV|Tag|Select ... [ -P|--partial ] [ -K|--ignoreactivationskip ] [ --activationmode partial|degraded|complete ] [ --poll y|n ] [ --monitor y|n ] [ --ignorelockingfailure ] [ --sysinit ] [ --readonly ] [ COMMON_OPTIONS ] Reactivate an LV using the latest metadata. lvchange --refresh VG|LV|Tag|Select ... [ -P|--partial ] [ --activationmode partial|degraded|complete ] [ --poll y|n ] [ --monitor y|n ] [ COMMON_OPTIONS ] Start or stop monitoring an LV from dmeventd. lvchange --monitor y|n VG|LV|Tag|Select ... [ COMMON_OPTIONS ] Start or stop processing an LV conversion. lvchange --poll y|n VG|LV|Tag|Select ... [ --monitor y|n ] [ COMMON_OPTIONS ] Make the minor device number persistent for an LV. lvchange -M|--persistent y --minor Number LV [ -j|--major Number ] [ -a|--activate y|n|ay ] [ --poll y|n ] [ --monitor y|n ] [ COMMON_OPTIONS ] Common options for command: [ -A|--autobackup y|n ] [ -f|--force ] [ -S|--select String ] [ --ignoremonitoring ] [ --noudevsync ] [ --reportformat basic|json ] Common options for lvm: [ -d|--debug ] [ -h|--help ] [ -q|--quiet ] [ -v|--verbose ] [ -y|--yes ] [ -t|--test ] [ --commandprofile String ] [ --config String ] [ --driverloaded y|n ] [ --nolocking ] [ --lockopt String ] [ --longhelp ] [ --profile String ] [ --version ] Use --longhelp to show all options and advanced commands.
LAB #9 - Volumes Logiques en Bandes
Un volume logique en bandes est créé pour augmenter, comme dans le cas du RAID, les performances des entrées et sorties. Pour créer ce volume, la commande lvcreate prend deux option supplémentaires :
- -i - indique le nombre de volumes de bandes,
- -I - indique la taille en Ko de chaque bande.
Saisissez donc la commande suivante :
[root@centos8 ~]# lvcreate -i2 -I64 -n lv2 -L 100M vg0 /dev/sdb7 /dev/sdb9 Rounding up size to full physical extent 104.00 MiB Rounding size 104.00 MiB (13 extents) up to stripe boundary size 112.00 MiB(14 extents). Logical volume "lv2" created.
Constatez la présence de vos bandes sur /dev/sda7 et sur /dev/sda9 :
[root@centos8 ~]# lvdisplay -m /dev/vg0/lv2 --- Logical volume --- LV Path /dev/vg0/lv2 LV Name lv2 VG Name vg0 LV UUID MmXbPt-ZF8u-rnIv-3YU9-m64J-RCz2-6NzAuG LV Write Access read/write LV Creation host, time centos8.ittraining.loc, 2021-06-02 07:47:38 -0400 LV Status available # open 0 LV Size 112.00 MiB Current LE 14 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:1 --- Segments --- Logical extents 0 to 13: Type striped Stripes 2 Stripe size 64.00 KiB Stripe 0: Physical volume /dev/sdb7 Physical extents 0 to 6 Stripe 1: Physical volume /dev/sdb9 Physical extents 0 to 6
Utilisez maintenant la commande lvs pour visualiser les volumes physiques utilisés par le volume logique :
[root@centos8 ~]# lvs -o +devices LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices root cl_centos8 -wi-ao---- 27.79g /dev/sda2(820) swap cl_centos8 -wi-ao---- 3.20g /dev/sda2(0) lv1 vg0 -wi-a----- 104.00m /dev/sdb6(1) lv2 vg0 -wi-a----- 112.00m /dev/sdb7(0),/dev/sdb9(0)
LAB #10 - Gérer les Métadonnées
Les métadonnées pour chaque Volume Group sont stockés dans un fichier texte au nom du Volume Group dans le répertoire /etc/lvm/backup :
[root@centos8 ~]# cat /etc/lvm/backup/vg0 # Generated by LVM2 version 2.03.09(2)-RHEL8 (2020-05-28): Wed Jun 2 07:47:38 2021 contents = "Text Format Volume Group" version = 1 description = "Created *after* executing 'lvcreate -i2 -I64 -n lv2 -L 100M vg0 /dev/sdb7 /dev/sdb9'" creation_host = "centos8.ittraining.loc" # Linux centos8.ittraining.loc 4.18.0-240.22.1.el8_3.x86_64 #1 SMP Thu Apr 8 19:01:30 UTC 2021 x86_64 creation_time = 1622634458 # Wed Jun 2 07:47:38 2021 vg0 { id = "TDXUip-c3yg-J83l-Z30x-zcsJ-Rbvl-gjFvfd" seqno = 11 format = "lvm2" # informational status = ["RESIZEABLE", "READ", "WRITE"] flags = [] extent_size = 16384 # 8 Megabytes max_lv = 0 max_pv = 0 metadata_copies = 0 physical_volumes { pv0 { id = "lxuKRI-l3Dd-jhsv-OWtw-au2c-0ti0-XGnt1E" device = "/dev/sdb6" # Hint only status = ["ALLOCATABLE"] flags = [] dev_size = 409600 # 200 Megabytes pe_start = 2048 pe_count = 24 # 192 Megabytes } pv1 { id = "QDmfcX-Pv8o-hapq-TJOI-RaPH-qecT-VUMY4v" device = "/dev/sdb7" # Hint only status = ["ALLOCATABLE"] flags = [] dev_size = 614400 # 300 Megabytes pe_start = 2048 pe_count = 37 # 296 Megabytes } pv2 { id = "ZTQV1b-Ha76-BQtB-zJEU-kfyK-ausJ-CxnRwg" device = "/dev/sdb9" # Hint only status = ["ALLOCATABLE"] flags = [] dev_size = 819200 # 400 Megabytes pe_start = 2048 pe_count = 49 # 392 Megabytes } } logical_volumes { lv1 { id = "lJQQWs-n05T-pxzi-Zq2R-UzRI-kYZf-hsNPYQ" status = ["READ", "WRITE", "VISIBLE"] flags = [] creation_time = 1622633848 # 2021-06-02 07:37:28 -0400 creation_host = "centos8.ittraining.loc" segment_count = 1 segment1 { start_extent = 0 extent_count = 13 # 104 Megabytes type = "striped" stripe_count = 1 # linear stripes = [ "pv0", 1 ] } } lv2 { id = "MmXbPt-ZF8u-rnIv-3YU9-m64J-RCz2-6NzAuG" status = ["READ", "WRITE", "VISIBLE"] flags = [] creation_time = 1622634458 # 2021-06-02 07:47:38 -0400 creation_host = "centos8.ittraining.loc" segment_count = 1 segment1 { start_extent = 0 extent_count = 14 # 112 Megabytes type = "striped" stripe_count = 2 stripe_size = 128 # 64 Kilobytes stripes = [ "pv1", 0, "pv2", 0 ] } } } }
Des archives sont créées lors de chaque modification d'un groupe de volumes et elles sont placés dans le répertoire /etc/lvm/archives :
[root@centos8 ~]# ls /etc/lvm/archive/ vg0_00000-427117660.vg vg0_00002-2064899457.vg vg0_00004-5061041.vg vg0_00006-1956284179.vg vg0_00008-708301076.vg vg0_00010-1200598227.vg vg0_00012-854342401.vg vg0_00001-1993147316.vg vg0_00003-1757437978.vg vg0_00005-116946854.vg vg0_00007-1006758937.vg vg0_00009-1054420117.vg vg0_00011-973084311.vg
La commande vgcfgbackup est utilisée pour sauvegarder les métadonnées manuellement dans le fichier /etc/lvm/backup/nom_du_volume_group :
La commande vgcfgrestore permet de restaurer une sauvegarde. Sans l'option -f pour spécifier la sauvegarde à restaurer, cette commande renvoie la liste des sauvegardes disponibles :
[root@centos8 ~]# vgcfgbackup vg0 Volume group "vg0" successfully backed up.
Il est aussi possible de modifier l'emplacement de la sauvegarde avec l'option -f de la commande :
[root@centos8 ~]# vgcfgbackup -f /tmp/vg0_backup vg0 Volume group "vg0" successfully backed up.
Par contre, toute sauvegarde en dehors des répertoires par défaut n'est pas visible dans la sortie de la commande vgcfgrestore –list :
[root@centos8 ~]# vgcfgrestore --list vg0 File: /etc/lvm/archive/vg0_00000-427117660.vg VG name: vg0 Description: Created *before* executing 'vgcreate -s 8M vg0 /dev/sdb6 /dev/sdb7 /dev/sdb9' Backup Time: Wed May 26 10:43:14 2021 File: /etc/lvm/archive/vg0_00001-1993147316.vg VG name: vg0 Description: Created *before* executing 'lvcreate -L 350 -n lv0 vg0' Backup Time: Wed May 26 16:56:31 2021 File: /etc/lvm/archive/vg0_00002-2064899457.vg VG name: vg0 Description: Created *before* executing 'lvextend -L +100M /dev/vg0/lv0' Backup Time: Wed May 26 22:12:15 2021 File: /etc/lvm/archive/vg0_00003-1757437978.vg VG name: vg0 Description: Created *before* executing 'lvcreate -s -L 13M -n testsnap /dev/vg0/lv0' Backup Time: Wed May 26 22:19:25 2021 File: /etc/lvm/archive/vg0_00004-5061041.vg VG name: vg0 Description: Created *before* executing 'lvremove /dev/vg0/testsnap' Backup Time: Wed May 26 22:38:37 2021 File: /etc/lvm/archive/vg0_00005-116946854.vg VG name: vg0 Description: Created *before* executing 'lvremove /dev/vg0/lv0' Backup Time: Wed May 26 22:42:18 2021 File: /etc/lvm/archive/vg0_00006-1956284179.vg VG name: vg0 Description: Created *before* executing 'vgremove vg0' Backup Time: Wed May 26 22:43:49 2021 File: /etc/lvm/archive/vg0_00007-1006758937.vg VG name: vg0 Description: Created *before* executing 'vgcreate -s 8M vg0 /dev/sdb6 /dev/sdb7 /dev/sdb9' Backup Time: Wed Jun 2 07:37:07 2021 File: /etc/lvm/archive/vg0_00008-708301076.vg VG name: vg0 Description: Created *before* executing 'lvcreate -m 1 -L 100M -n lv1 vg0' Backup Time: Wed Jun 2 07:37:28 2021 File: /etc/lvm/archive/vg0_00009-1054420117.vg VG name: vg0 Description: Created *before* executing 'lvconvert -m 0 /dev/vg0/lv1 /dev/sdb7' Backup Time: Wed Jun 2 07:41:04 2021 File: /etc/lvm/archive/vg0_00010-1200598227.vg VG name: vg0 Description: Created *before* executing 'lvconvert -m 1 /dev/vg0/lv1' Backup Time: Wed Jun 2 07:41:53 2021 File: /etc/lvm/archive/vg0_00011-973084311.vg VG name: vg0 Description: Created *before* executing 'lvconvert -m 0 /dev/vg0/lv1 /dev/sdb7' Backup Time: Wed Jun 2 07:42:23 2021 File: /etc/lvm/archive/vg0_00012-854342401.vg VG name: vg0 Description: Created *before* executing 'lvcreate -i2 -I64 -n lv2 -L 100M vg0 /dev/sdb7 /dev/sdb9' Backup Time: Wed Jun 2 07:47:38 2021 File: /etc/lvm/backup/vg0 VG name: vg0 Description: Created *after* executing 'vgcfgbackup vg0' Backup Time: Wed Jun 2 07:50:57 2021
Systèmes de Fichiers Journalisés
Présentation
Un journal est la partie d'un système de fichiers journalisé qui trace les opérations d'écriture tant qu'elles ne sont pas terminées et cela en vue de garantir l'intégrité des données en cas d'arrêt brutal.
L'intérêt est de pouvoir plus facilement et plus rapidement récupérer les données en cas d'arrêt brutal du système d'exploitation (coupure d'alimentation, plantage du système, etc.), alors que les partitions n'ont pas été correctement synchronisées et démontées.
Sans un tel fichier journal, un outil de récupération de données après un arrêt brutal doit parcourir l'intégralité du système de fichier pour vérifier sa cohérence. Lorsque la taille du système de fichiers est importante, cela peut durer très longtemps pour un résultat moins efficace car entraînant des pertes de données.
Linux peut utiliser un des systèmes de fichiers journalisés suivants :
Système de fichier | Taille maximum - fichier | Taille maximum - système de fichier |
---|---|---|
Ext3 | 2 To | 32 To |
Ext4 | 16 To | 1 EiB |
XFS | 8 EiB | 16 EiB |
ReiserFS v3 | 8 To | 16 To |
JFS | 4 Po | 32 Po |
Btrfs | 16 EiB | 16 EiB |
A faire : Pour comparer ces six systèmes de fichier, veuillez consulter cette page
Ext3
Ext3 est une évolution de Ext2 et a pour principale différence d'utiliser un fichier journal. Il peut :
- être utilisé à partir d'une partition Ext2, sans avoir à sauvegarder et à restaurer des données,
- utiliser tous les utilitaires de maintenance pour les systèmes de fichiers ext2, comme fsck,
- utiliser le logiciel dump, ce qui n'est pas le cas avec ReiserFS.
Pour plus d'information concernant Ext3, consultez cette page
Gestion d'Ext3
Notez maintenant le numéro de la dernière partition que vous avez précédemment créée :
[root@centos8 ~]# fdisk -l Disk /dev/sdb: 4 GiB, 4294967296 bytes, 8388608 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xb0dacb39 Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 206847 204800 100M 83 Linux /dev/sdb2 206848 411647 204800 100M 83 Linux /dev/sdb3 411648 616447 204800 100M 83 Linux /dev/sdb4 616448 8388607 7772160 3.7G 5 Extended /dev/sdb5 618496 1642495 1024000 500M fd Linux raid autodetect /dev/sdb6 1644544 2054143 409600 200M 8e Linux LVM /dev/sdb7 2056192 2670591 614400 300M 8e Linux LVM /dev/sdb8 2672640 3696639 1024000 500M fd Linux raid autodetect /dev/sdb9 3698688 4517887 819200 400M 8e Linux LVM /dev/sdb10 4519936 5543935 1024000 500M fd Linux raid autodetect /dev/sdb11 5545984 6569983 1024000 500M fd Linux raid autodetect /dev/sdb12 6572032 6981631 409600 200M 83 Linux Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x70b17285 Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 616447 614400 300M 83 Linux /dev/sda2 616448 4712447 4096000 2G 82 Linux swap / Solaris /dev/sda3 4712448 35432447 30720000 14.7G 83 Linux Disk /dev/mapper/vg0-lv1: 104 MiB, 109051904 bytes, 212992 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/vg0-lv2: 112 MiB, 117440512 bytes, 229376 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 65536 bytes / 131072 bytes
Créez un filesystem Ext3 sur /dev/sdb12 en utilisant la commande mke2fs -j :
[root@centos8 ~]# mke2fs -j /dev/sdb12 mke2fs 1.45.6 (20-Mar-2020) Creating filesystem with 204800 1k blocks and 51200 inodes Filesystem UUID: a2515f45-a32a-4e87-b7e6-170448f3f803 Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729 Allocating group tables: done Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done
Les options de la commande mke2fs sont :
[root@centos8 ~]# mke2fs --help mke2fs: invalid option -- '-' Usage: mke2fs [-c|-l filename] [-b block-size] [-C cluster-size] [-i bytes-per-inode] [-I inode-size] [-J journal-options] [-G flex-group-size] [-N number-of-inodes] [-d root-directory] [-m reserved-blocks-percentage] [-o creator-os] [-g blocks-per-group] [-L volume-label] [-M last-mounted-directory] [-O feature[,...]] [-r fs-revision] [-E extended-option[,...]] [-t fs-type] [-T usage-type ] [-U UUID] [-e errors_behavior][-z undo_file] [-jnqvDFSV] device [blocks-count]
Important : Lors de la mise en place d'un filesystem ext2/ext3/ext4, le système réserve 5% de l'espace disque pour root. Sur des disques de grande taille il est parfois préférable de récupérer une partie de cet espace en utilisant la commande tune2fs -m n /dev/sdXY ou n est le nouveau pourcentage à réserver.
LAB #11 - Convertir un Système de Fichiers Ext3 en Ext2
Pour vérifier si un système de fichiers Ext2 est journalisé, utilisez la commande dumpe2fs :
[root@centos8 ~]# dumpe2fs -h /dev/sdb12 dumpe2fs 1.45.6 (20-Mar-2020) Filesystem volume name: <none> Last mounted on: <not available> Filesystem UUID: a2515f45-a32a-4e87-b7e6-170448f3f803 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype sparse_super large_file Filesystem flags: signed_directory_hash Default mount options: user_xattr acl Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 51200 Block count: 204800 Reserved block count: 10240 Free blocks: 192674 Free inodes: 51189 First block: 1 Block size: 1024 Fragment size: 1024 Reserved GDT blocks: 256 Blocks per group: 8192 Fragments per group: 8192 Inodes per group: 2048 Inode blocks per group: 256 Filesystem created: Wed Jun 2 07:55:24 2021 Last mount time: n/a Last write time: Wed Jun 2 07:55:24 2021 Mount count: 0 Maximum mount count: -1 Last checked: Wed Jun 2 07:55:24 2021 Check interval: 0 (<none>) Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 128 Journal inode: 8 Default directory hash: half_md4 Directory Hash Seed: faee0b81-0538-4c06-8d86-468bc0c760ac Journal backup: inode blocks Journal features: (none) Journal size: 4096k Journal length: 4096 Journal sequence: 0x00000001 Journal start: 0
Important : Le drapeau Filesystem features: has_journal … démontre que Ext3 est utilisé sur cette partition.
Les options de cette commande sont :
[root@centos8 ~]# dumpe2fs --help dumpe2fs 1.45.6 (20-Mar-2020) dumpe2fs: invalid option -- '-' Usage: dumpe2fs [-bfghimxV] [-o superblock=<num>] [-o blocksize=<num>] device
Pour supprimer Ext3 sur cette partition, il convient d'utiliser la commande tune2fs
[root@centos8 ~]# tune2fs -O ^has_journal /dev/sdb12 tune2fs 1.45.6 (20-Mar-2020)
Les options de cette commande sont :
[root@centos8 ~]# tune2fs --help tune2fs 1.45.6 (20-Mar-2020) tune2fs: invalid option -- '-' Usage: tune2fs [-c max_mounts_count] [-e errors_behavior] [-f] [-g group] [-i interval[d|m|w]] [-j] [-J journal_options] [-l] [-m reserved_blocks_percent] [-o [^]mount_options[,...]] [-r reserved_blocks_count] [-u user] [-C mount_count] [-L volume_label] [-M last_mounted_dir] [-O [^]feature[,...]] [-Q quota_options] [-E extended-option[,...]] [-T last_check_time] [-U UUID] [-I new_inode_size] [-z undo_file] device
Constatez le résultat de cette commande :
[root@centos8 ~]# dumpe2fs -h /dev/sdb12 dumpe2fs 1.45.6 (20-Mar-2020) Filesystem volume name: <none> Last mounted on: <not available> Filesystem UUID: a2515f45-a32a-4e87-b7e6-170448f3f803 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: ext_attr resize_inode dir_index filetype sparse_super large_file Filesystem flags: signed_directory_hash Default mount options: user_xattr acl Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 51200 Block count: 204800 Reserved block count: 10240 Free blocks: 196787 Free inodes: 51189 First block: 1 Block size: 1024 Fragment size: 1024 Reserved GDT blocks: 256 Blocks per group: 8192 Fragments per group: 8192 Inodes per group: 2048 Inode blocks per group: 256 Filesystem created: Wed Jun 2 07:55:24 2021 Last mount time: n/a Last write time: Wed Jun 2 07:59:01 2021 Mount count: 0 Maximum mount count: -1 Last checked: Wed Jun 2 07:55:24 2021 Check interval: 0 (<none>) Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 128 Default directory hash: half_md4 Directory Hash Seed: faee0b81-0538-4c06-8d86-468bc0c760ac Journal backup: inode blocks
Important : Notez que le drapeau Filesystem features: has_journal … a été supprimé.
Supprimez maintenant l'inode du journal :
[root@centos8 ~]# fsck /dev/sdb12 fsck from util-linux 2.32.1 e2fsck 1.45.6 (20-Mar-2020) /dev/sdb12: clean, 11/51200 files, 8013/204800 blocks
Créez maintenant un point de montage pour /dev/sdb12 :
[root@centos8 ~]# mkdir /mnt/sdb12
Essayez de monter /dev/sdb12 en tant que système de fichiers Ext3. Vous obtiendrez un résultat similaire à celui-ci :
[root@centos8 ~]# mount -t ext3 /dev/sdb12 /mnt/sdb12 mount: /mnt/sdb12: wrong fs type, bad option, bad superblock on /dev/sdb12, missing codepage or helper program, or other error.
Important : Notez l'erreur due au mauvais système de fichiers qui suit l'option -t.
Montez maintenant le système de fichiers en tant que Ext2 :
[root@centos8 ~]# mount -t ext2 /dev/sdb12 /mnt/sdb12
LAB #12 - Convertir un Système de Fichiers Ext2 en Ext3
Pour replacer le journal sur /dev/sdb12, il convient d'utiliser la commande tune2fs :
[root@centos8 ~]# umount /mnt/sdb12 [root@centos8 ~]# tune2fs -j /dev/sdb12 tune2fs 1.45.6 (20-Mar-2020) Creating journal inode: done
Important : Notez que vous avez du démonter la partition avant d'exécuter la commande tune2fs.
LAB #13 - Placer le Journal sur un autre Partition
Le journal d'un système de fichiers peut être placé sur un autre périphérique bloc.
Créez un système de fichiers sur /dev/sdb11 :
[root@centos8 ~]# mke2fs -O journal_dev /dev/sdb11 mke2fs 1.45.6 (20-Mar-2020) Creating filesystem with 512000 1k blocks and 0 inodes Filesystem UUID: 23327281-e88a-4da0-bafa-50ee10c52937 Superblock backups stored on blocks: Zeroing journal device:
Important : Notez l'utilisation de l'option -O.
Créez maintenant un système de fichiers Ext3 sur /dev/sdb12 en plaçant le journal sur /dev/sdb11 :
[root@centos8 ~]# mke2fs -j -J device=/dev/sdb11 /dev/sdb12 mke2fs 1.45.6 (20-Mar-2020) Using journal device's blocksize: 1024 /dev/sdb12 contains a ext3 file system last mounted on Wed Jun 2 08:03:11 2021 Proceed anyway? (y,N) y Creating filesystem with 204800 1k blocks and 51200 inodes Filesystem UUID: 0e783411-6407-4cba-8db5-0e2729000c9e Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729 Allocating group tables: done Writing inode tables: done Adding journal to device /dev/sdb11: done Writing superblocks and filesystem accounting information: done
Important : Notez que le journal a été placé sur /dev/sdb11 graĉe à l'utilisation de l'option -J.
LAB #14 - Modifier la Fréquence de Vérification du Système de Fichiers Ext3
Pour modifier la fréquence de vérification du système de fichiers sur /dev/sdb12, il convient d'utiliser soit l'option -c, soit l'option -i :
[root@centos8 ~]# tune2fs -i 100d /dev/sdb12 tune2fs 1.45.6 (20-Mar-2020) Setting interval between checks to 8640000 seconds
Dernièrement, pour obtenir seul l'UUID du système de fichiers, utilisez les commandes dumpe2fs et grep :
[root@centos8 ~]# dumpe2fs /dev/sdb12 | grep UUID dumpe2fs 1.45.6 (20-Mar-2020) Filesystem UUID: 0e783411-6407-4cba-8db5-0e2729000c9e Journal UUID: 23327281-e88a-4da0-bafa-50ee10c52937
Ext4
Le système de fichiers Ext4 a été introduit dans le noyau 2.6.19 en mode expérimental et est devenu stable dans le noyau 2.6.28.
Ext4 n'est pas une évolution de Ext3. Cependant il a une compatibilité ascendante avec Ext3.
Les fonctionnalités majeures d'Ext4 sont :
- la gestion des volumes d'une taille allant jusqu'à 1 024 pébioctets,
- l'allocation par extents qui permettent la pré-allocation d'une zone contiguë pour un fichier afin de minimiser la fragmentation.
L'option extents est activée par défaut depuis le noyau 2.6.23.
La compatibilité ascendante avec ext3 comprend :
- la possibilité de monter une partition Ext3 en tant que partition Ext4,
- la possibilité de monter une partition Ext4 en tant que partition Ext3 mais uniquement dans le cas où la partition Ext4 n'ait jamais utilisé l'allocation par extents pour enregistrer des fichiers, mais l'allocation binaire comprise par ext3.
Pour plus d'informations concernant Ext4, consultez cette page.
LAB #15 - Créer un Système de Fichiers Ext4
Créez un système de fichiers Ext4 sur /dev/sdb11 :
[root@centos8 ~]# mkfs.ext4 /dev/sdb11 mke2fs 1.45.6 (20-Mar-2020) /dev/sdb11 contains a jbd file system Proceed anyway? (y,N) y Creating filesystem with 512000 1k blocks and 128016 inodes Filesystem UUID: 72a6ad08-7023-4561-adcb-d434e00afed1 Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409 Allocating group tables: done Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done
Les options de cette commande sont :
[root@centos8 ~]# mkfs.ext4 --help mkfs.ext4: invalid option -- '-' Usage: mkfs.ext4 [-c|-l filename] [-b block-size] [-C cluster-size] [-i bytes-per-inode] [-I inode-size] [-J journal-options] [-G flex-group-size] [-N number-of-inodes] [-d root-directory] [-m reserved-blocks-percentage] [-o creator-os] [-g blocks-per-group] [-L volume-label] [-M last-mounted-directory] [-O feature[,...]] [-r fs-revision] [-E extended-option[,...]] [-t fs-type] [-T usage-type ] [-U UUID] [-e errors_behavior][-z undo_file] [-jnqvDFSV] device [blocks-count]
Consultez maintenant les caractéristiques du système de fichier :
[root@centos8 ~]# dumpe2fs /dev/sdb11 | more dumpe2fs 1.45.6 (20-Mar-2020) Filesystem volume name: <none> Last mounted on: <not available> Filesystem UUID: 72a6ad08-7023-4561-adcb-d434e00afed1 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype e xtent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize meta data_csum Filesystem flags: signed_directory_hash Default mount options: user_xattr acl Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 128016 Block count: 512000 Reserved block count: 25600 Free blocks: 485316 Free inodes: 128005 First block: 1 Block size: 1024 Fragment size: 1024 Group descriptor size: 64 Reserved GDT blocks: 256 --More--
LAB #16 - Ajouter une Etiquette au Système de Fichiers Ext4
Utilisez la commande e2label pour associer une étiquette au système de fichiers :
[root@centos8 ~]# e2label /dev/sdb11 my_ext4 [root@centos8 ~]# dumpe2fs /dev/sdb11 | more dumpe2fs 1.45.6 (20-Mar-2020) Filesystem volume name: my_ext4 Last mounted on: <not available> Filesystem UUID: 72a6ad08-7023-4561-adcb-d434e00afed1 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype e xtent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize meta data_csum Filesystem flags: signed_directory_hash Default mount options: user_xattr acl Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 128016 Block count: 512000 Reserved block count: 25600 Free blocks: 485316 Free inodes: 128005 First block: 1 Block size: 1024 Fragment size: 1024 Group descriptor size: 64 Reserved GDT blocks: 256 --More--
Important - Notez que l'étiquette doit être de 16 caractères maximum.
Créez un point de montage dans /mnt et essayez de monter /dev/sdb11 en tant qu'Ext3 :
[root@centos8 ~]# mkdir /mnt/sdb11 [root@centos8 ~]# mount -t ext3 /dev/sdb11 /mnt/sdb11 mount: /mnt/sdb11: wrong fs type, bad option, bad superblock on /dev/sdb11, missing codepage or helper program, or other error..
Important - Notez l'erreur qui est signalée.
Montez de nouveau la partition sans stipuler le type de système de fichiers :
[root@centos8 ~]# mount /dev/sdb11 /mnt/sdb11 [root@centos8 ~]# mount | grep sdb11 /dev/sdb11 on /mnt/sdb11 type ext4 (rw,relatime,seclabel)
Important - Constatez que la partition a été monté en tant qu'Ext4.
LAB #17 - Convertir un Système de Fichiers Ext3 en Ext4
Créez un système de fichiers ext3 sur /dev/sdb12 :
[root@centos8 ~]# mkfs.ext3 /dev/sdb12 mke2fs 1.45.6 (20-Mar-2020) /dev/sdb12 contains a ext3 file system created on Wed Jun 2 08:10:40 2021 Proceed anyway? (y,N) y Creating filesystem with 204800 1k blocks and 51200 inodes Filesystem UUID: b73322d4-f2e4-43bc-96ae-422d4584f3de Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729 Allocating group tables: done Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done
Montez maintenant /dev/sdb12 sur /mnt/sdb12 :
[root@centos8 ~]# mount /dev/sdb12 /mnt/sdb12 [root@centos8 ~]# ls -l /mnt/sdb12 total 12 drwx------. 2 root root 12288 Jun 2 08:42 lost+found
Créez le fichier /mnt/sdb12/check_file :
[root@centos8 ~]# touch /mnt/sdb12/check_file
Injectez la chaine check file dans le fichier /mnt/sdb12/check_file puis démontez /dev/sdb12 :
[root@centos8 ~]# echo "check file" > /mnt/sdb12/check_file [root@centos8 ~]# umount /dev/sdb12
Exécutez e2fsck sur /dev/sda12 :
[root@centos8 ~]# e2fsck /dev/sdb12 e2fsck 1.45.6 (20-Mar-2020) /dev/sdb12: clean, 12/51200 files, 12128/204800 blocks
Convertissez /dev/sdb12 en Ext4 :
[root@centos8 ~]# tune2fs -O extents,uninit_bg,dir_index /dev/sdb12 tune2fs 1.45.6 (20-Mar-2020)
Optimisez le système de fichiers :
[root@centos8 ~]# e2fsck -fDC0 /dev/sdb12 e2fsck 1.45.6 (20-Mar-2020) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 3A: Optimizing directories Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/sdb12: ***** FILE SYSTEM WAS MODIFIED ***** /dev/sdb12: 12/51200 files (0.0% non-contiguous), 12128/204800 blocks
Essayez de monter /dev/sdb12 en tant qu'Ext3 :
[root@centos8 ~]# mount -t ext3 /dev/sdb12 /mnt/sdb12 mount: /mnt/sdb12: wrong fs type, bad option, bad superblock on /dev/sdb12, missing codepage or helper program, or other error.
Montez /dev/sdb12 sans spécifier le type de fichiers Ext3 et vérifiez le contenu du fichier check_file :
[root@centos8 ~]# mount /dev/sdb12 /mnt/sdb12 [root@centos8 ~]# ls -l /mnt/sdb12 total 14 -rw-r--r--. 1 root root 11 Jun 2 08:45 check_file drwx------. 2 root root 12288 Jun 2 08:42 lost+found [root@centos8 ~]# cat /mnt/sdb12/check_file check file
Dernièrement, pour obtenir seul l'UUID du système de fichiers, utilisez les commandes dumpe2fs et grep :
[root@centos8 ~]# dumpe2fs /dev/sdb11 | grep UUID dumpe2fs 1.45.6 (20-Mar-2020) Filesystem UUID: 72a6ad08-7023-4561-adcb-d434e00afed1 [root@centos8 ~]# dumpe2fs /dev/sdb12 | grep UUID dumpe2fs 1.45.6 (20-Mar-2020) Filesystem UUID: b73322d4-f2e4-43bc-96ae-422d4584f3de
XFS
XFS est un système de fichiers 64-bit journalisé de haute performance crée par SGI pour son système d'exploitation IRIX. XFS est inclus par défaut avec les versions du noyau Linux 2.5.xx et 2.6.xx. XFS est le système de fichiers par défaut de RHEL/CentOS 8.
Important : Le système de fichiers XFS permet l'augmentation de sa taille à chaud. Par contre, la taille d'un système de fichiers XFS ne peut pas être réduite.
Pour plus d'informations concernant XFS, consultez cette page.
LAB #18 - Créer un Système de Fichiers XFS
Démontez /dev/sdb12 :
[root@centos8 ~]# umount /dev/sdb12
Créez un système de fichiers XFS sur la partition /dev/sdb12 :
[root@centos8 ~]# mkfs.xfs -f /dev/sdb12 meta-data=/dev/sdb12 isize=512 agcount=4, agsize=12800 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=51200, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=1368, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
Important - Notez l'utilisation de l'option -f afin d'écraser le système de fichiers Ext4 existant.
Les options de cette commande sont :
[root@centos8 ~]# mkfs.xfs --help mkfs.xfs: invalid option -- '-' unknown option -- Usage: mkfs.xfs /* blocksize */ [-b size=num] /* metadata */ [-m crc=0|1,finobt=0|1,uuid=xxx,rmapbt=0|1,reflink=0|1] /* data subvol */ [-d agcount=n,agsize=n,file,name=xxx,size=num, (sunit=value,swidth=value|su=num,sw=num|noalign), sectsize=num /* force overwrite */ [-f] /* inode size */ [-i log=n|perblock=n|size=num,maxpct=n,attr=0|1|2, projid32bit=0|1,sparse=0|1] /* no discard */ [-K] /* log subvol */ [-l agnum=n,internal,size=num,logdev=xxx,version=n sunit=value|su=num,sectsize=num,lazy-count=0|1] /* label */ [-L label (maximum 12 characters)] /* naming */ [-n size=num,version=2|ci,ftype=0|1] /* no-op info only */ [-N] /* prototype file */ [-p fname] /* quiet */ [-q] /* realtime subvol */ [-r extsize=num,size=num,rtdev=xxx] /* sectorsize */ [-s size=num] /* version */ [-V] devicename <devicename> is required unless -d name=xxx is given. <num> is xxx (bytes), xxxs (sectors), xxxb (fs blocks), xxxk (xxx KiB), xxxm (xxx MiB), xxxg (xxx GiB), xxxt (xxx TiB) or xxxp (xxx PiB). <value> is xxx (512 byte blocks).
Consultez maintenant les caractéristiques du système de fichier :
[root@centos8 ~]# xfs_info /dev/sdb12 meta-data=/dev/sdb12 isize=512 agcount=4, agsize=12800 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=51200, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=1368, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
Les options de cette commande sont :
[root@centos8 ~]# xfs_info --help /usr/sbin/xfs_info: illegal option -- - Usage: xfs_info [-V] [-t mtab] [mountpoint|device|file]
LAB #19 - Ajouter une Etiquette au Système de Fichiers XFS
Utilisez la commande xfs_admin pour associer une étiquette au système de fichiers :
[root@centos8 ~]# xfs_admin -L my_xfs /dev/sdb12 xfs_admin: /dev/sdb12 contains a mounted filesystem fatal error -- couldn't initialize XFS library [root@centos8 ~]# umount /dev/sdb12 [root@centos8 ~]# xfs_admin -L my_xfs /dev/sdb12 writing all SBs new label = "my_xfs"
Important - Notez que la partition XFS doit être démonté pour pouvoir utiliser la commande xfs_admin.
Pour voir l'étiquette, utilisez la commande suivante :
[root@centos8 ~]# xfs_admin -l /dev/sdb12 label = "my_xfs"
Important - Notez que l'étiquette doit être de 12 caractères maximum.
Les options de cette commande sont :
[root@centos8 ~]# xfs_admin --help /usr/sbin/xfs_admin: illegal option -- - Usage: xfs_admin [-efjlpuV] [-c 0|1] [-L label] [-U uuid] device
Dernièrement, pour obtenir seul l'UUID du système de fichiers, utilisez la commande xfs-admin et l'option -u :
[root@centos8 ~]# xfs_admin -u /dev/sdb12 UUID = 15db1b62-0866-4aa4-9ac1-3ac325a4e20f
Important - La commande xfs_metadump est utilisée pour sauvegarder les méta-données du système de fichiers, tandis que la commande xfs_mdrestore est utilisée pour restaurer les les méta-données du système de fichiers.
Autres Systèmes de Fichiers
Important - Veuillez noter que le support des systèmes de fichiers ReiserFS, JFS et Btrfs est absent du noyau des distributions de Red Hat.
ReiserFS
ReiserFS permet :
- de meilleurs temps d'accès à des sous-répertoires que Ext3, même ceux contenant des dizaines de milliers de fichiers,
- une plus grande efficacité pour ce qui concerne le stockage des fichiers moins de quelques ko. Le gain d'espace peut aller jusqu'à 10% par rapport à Ext2/Ext3.
Pour plus d'informations concernant ReiserFS, consultez cette page.
JFS
JFS Journaled File System est un système de fichiers journalisé mis au point par IBM et disponible sous licence GPL.
Pour plus d'informations concernant JFS, consultez cette page.
Btrfs
Btrfs, (B-tree file system, prononcé ButterFS) est un système de fichiers expérimental basé sur la copie sur écriture sous licence GNU GPL, développé principalement par Oracle, Red Hat, Fujitsu, Intel, SUSE et STRATO AG, qui s'inspire grandement du système de fichiers ZFS utilisé par Solaris.
A noter sont les points suivants :
- Btrfs utilise des extents,
- Btrfs stocke les données des très petits fichiers directement dans l'extent du fichier répertoire, et non dans un extent séparé,
- Btrfs gère une notion de « sous-volumes » permettant ainsi des snapshots,
- Btrfs possède ses techniques propres de protection des données,
- Btrfs permet de redimensionner à chaud la taille du système de fichiers,
- Btrfs gère le RAID 0 ainsi que le RAID 1 logiciel,
- Btrfs gère la comprssion du système de fichiers.
Comparaison des Commandes par Système de Fichiers
Description | Ext3 | Ext4 | XFS | ReiserFS | JFS | Btrfs |
---|---|---|---|---|---|---|
Build a Linux filesystem | mkfs.ext3 (mke2fs -j) | mkfs.ext4 (mke4fs) | mkfs.xfs | mkfs.reiserfs (mkreiserfs) | mkfs.jfs (jfs_mkfs) | mkfs.btrfs |
Check a Linux filesystem | e2fsck | e2fsck | xfs_check / xfs_repair | reiserfsck | jfs_fsck | btrfsck |
Adjust tunable filesystem parameters Linux filesystems | tune2fs | tune2fs | xfs_admin | reiserfstune | jfs_tune | btrfs-show-super, btrfs filesystem show, et btrfs filesystem df |
File system resizer | resize2fs | resize2fs | xfs_growfs | resize_reiserfs | S/O | btrfs filesystem resize |
Dump filesystem information | dumpe2fs | dumpe2fs | xfs_info / xfs_metadump | debugreiserfs | jfs_tune | btrfstune |
File system debugger | debugfs | debugfs | xfs_db | debugreiserfs | jfs_debugfs | btrfs-debug-tree |
Change the label on a filesystem | e2label | e2label | xfs_admin | reiserfstune | jfs_tune | btrfs filesystem label |
LAB #20 - Créer un Système de Fichiers ISO
La Commande mkisofs
Pour créer un fichier ISO à partir d'une arborescence de fichiers, il convient d'utiliser la commande mkisofs :
[root@centos8 ~]# cd /tmp [root@centos8 tmp]# mkisofs -r -T -o tmp.iso . I: -input-charset not specified, using utf-8 (detected in locale settings) Total translation table size: 1827 Total rockridge attributes bytes: 1976 Total directory bytes: 14336 Path table size(bytes): 122 Max brk space used 1c000 186 extents written (0 MB)
Le fichier ISO peut être monter en utilisant un périphérique de type loop :
[root@centos8 tmp]# mount tmp.iso /mnt -o loop mount: /mnt: WARNING: device write-protected, mounted read-only. [root@centos8 tmp]# ls /mnt systemd-private-192104a9224f499286f5adb5754e9e04-chronyd.service-FI2YXs TRANS.TBL vg0_backup [root@centos8 tmp]# ls systemd-private-192104a9224f499286f5adb5754e9e04-chronyd.service-FI2YXs tmp.iso vg0_backup
Démontez maintenant le fichier ISO :
[root@centos8 tmp]# cd ~ [root@centos8 ~]# umount /tmp/tmp.iso
Options de la Commande mkisofs
Les options de cette commande sont :
[root@centos8 ~]# mkisofs --help Usage: genisoimage [options] file... Options: -nobak Do not include backup files -no-bak Do not include backup files -abstract FILE Set Abstract filename -A ID, -appid ID Set Application ID -biblio FILE Set Bibliographic filename -cache-inodes Cache inodes (needed to detect hard links) -no-cache-inodes Do not cache inodes (if filesystem has no unique unides) -check-oldnames Check all imported ISO9660 names from old session -check-session FILE Check all ISO9660 names from previous session -copyright FILE Set Copyright filename -debug Set debug flag -b FILE, -eltorito-boot FILE Set El Torito boot image name -e FILE, -efi-boot FILE Set EFI boot image name -eltorito-alt-boot Start specifying alternative El Torito boot parameters -B FILES, -sparc-boot FILES Set sparc boot image names -sunx86-boot FILES Set sunx86 boot image names -G FILE, -generic-boot FILE Set generic boot image name -sparc-label label text Set sparc boot disk label -sunx86-label label text Set sunx86 boot disk label -c FILE, -eltorito-catalog FILE Set El Torito boot catalog name -C PARAMS, -cdrecord-params PARAMS Magic paramters from cdrecord -d, -omit-period Omit trailing periods from filenames (violates ISO9660) -dir-mode mode Make the mode of all directories this mode. -D, -disable-deep-relocation Disable deep directory relocation (violates ISO9660) -file-mode mode Make the mode of all plain files this mode. -f, -follow-links Follow symbolic links -gid gid Make the group owner of all files this gid. -graft-points Allow to use graft points for filenames -root DIR Set root directory for all new files and directories -old-root DIR Set root directory in previous session that is searched for files -help Print option help -hide GLOBFILE Hide ISO9660/RR file -hide-list FILE File with list of ISO9660/RR files to hide -hidden GLOBFILE Set hidden attribute on ISO9660 file -hidden-list FILE File with list of ISO9660 files with hidden attribute -hide-joliet GLOBFILE Hide Joliet file -hide-joliet-list FILE File with list of Joliet files to hide -hide-joliet-trans-tbl Hide TRANS.TBL from Joliet tree -hide-rr-moved Rename RR_MOVED to .rr_moved in Rock Ridge tree -gui Switch behaviour for GUI -i ADD_FILES No longer supported -input-charset CHARSET Local input charset for file name conversion -output-charset CHARSET Output charset for file name conversion -iso-level LEVEL Set ISO9660 conformance level (1..3) or 4 for ISO9660 version 2 -J, -joliet Generate Joliet directory information -joliet-long Allow Joliet file names to be 103 Unicode characters -jcharset CHARSET Local charset for Joliet directory information -l, -full-iso9660-filenames Allow full 31 character filenames for ISO9660 names -max-iso9660-filenames Allow 37 character filenames for ISO9660 names (violates ISO9660) -allow-limited-size Allow different file sizes in ISO9660/UDF on large files -allow-leading-dots Allow ISO9660 filenames to start with '.' (violates ISO9660) -ldots Allow ISO9660 filenames to start with '.' (violates ISO9660) -L, -allow-leading-dots Allow ISO9660 filenames to start with '.' (violates ISO9660) -log-file LOG_FILE Re-direct messages to LOG_FILE -m GLOBFILE, -exclude GLOBFILE Exclude file name -exclude-list FILE File with list of file names to exclude -pad Pad output to a multiple of 32k (default) -no-pad Do not pad output to a multiple of 32k -M FILE, -prev-session FILE Set path to previous session to merge -dev SCSIdev Set path to previous session to merge -N, -omit-version-number Omit version number from ISO9660 filename (violates ISO9660) -new-dir-mode mode Mode used when creating new directories. -force-rr Inhibit automatic Rock Ridge detection for previous session -no-rr Inhibit reading of Rock Ridge attributes from previous session -no-split-symlink-components Inhibit splitting symlink components -no-split-symlink-fields Inhibit splitting symlink fields -o FILE, -output FILE Set output file name -path-list FILE File with list of pathnames to process -p PREP, -preparer PREP Set Volume preparer -print-size Print estimated filesystem size and exit -publisher PUB Set Volume publisher -P PUB, -publisher PUB Set Volume publisher -quiet Run quietly -r, -rational-rock Generate rationalized Rock Ridge directory information -R, -rock Generate Rock Ridge directory information -s TYPE, -sectype TYPE Set output sector type to e.g. data/xa1/raw -alpha-boot FILE Set alpha boot image name (relative to image root) -hppa-cmdline CMDLINE Set hppa boot command line (relative to image root) -hppa-kernel-32 FILE Set hppa 32-bit image name (relative to image root) -hppa-kernel-64 FILE Set hppa 64-bit image name (relative to image root) -hppa-bootloader FILE Set hppa boot loader file name (relative to image root) -hppa-ramdisk FILE Set hppa ramdisk file name (relative to image root) -mips-boot FILE Set mips boot image name (relative to image root) -mipsel-boot FILE Set mipsel boot image name (relative to image root) -jigdo-jigdo FILE Produce a jigdo .jigdo file as well as the .iso -jigdo-template FILE Produce a jigdo .template file as well as the .iso -jigdo-min-file-size SIZE Minimum size for a file to be listed in the jigdo file -jigdo-force-md5 PATTERN Pattern(s) where files MUST match an externally-supplied MD5sum -jigdo-exclude PATTERN Pattern(s) to exclude from the jigdo file -jigdo-map PATTERN1=PATTERN2 Pattern(s) to map paths (e.g. Debian=/mirror/debian) -md5-list FILE File containing MD5 sums of the files that should be checked -jigdo-template-compress ALGORITHM Choose to use gzip or bzip2 compression for template data; default is gzip -checksum_algorithm_iso alg1,alg2,... Specify the checksum types desired for the output image -checksum_algorithm_template alg1,alg2,... Specify the checksum types desired for the output jigdo template -sort FILE Sort file content locations according to rules in FILE -split-output Split output into files of approx. 1GB size -stream-file-name FILE_NAME Set the stream file ISO9660 name (incl. version) -stream-media-size # Set the size of your CD media in sectors -sysid ID Set System ID -T, -translation-table Generate translation tables for systems that don't understand long filenames -table-name TABLE_NAME Translation table file name -ucs-level LEVEL Set Joliet UCS level (1..3) -udf Generate UDF file system -dvd-video Generate DVD-Video compliant UDF file system -uid uid Make the owner of all files this uid. -U, -untranslated-filenames Allow Untranslated filenames (for HPUX & AIX - violates ISO9660). Forces -l, -d, -N, -allow-leading-dots, -relaxed-filenames, -allow-lowercase, -allow-multidot -relaxed-filenames Allow 7 bit ASCII except lower case characters (violates ISO9660) -no-iso-translate Do not translate illegal ISO characters '~', '-' and '#' (violates ISO9660) -allow-lowercase Allow lower case characters in addition to the current character set (violates ISO9660) -allow-multidot Allow more than one dot in filenames (e.g. .tar.gz) (violates ISO9660) -use-fileversion LEVEL Use file version # from filesystem -v, -verbose Verbose -version Print the current version -V ID, -volid ID Set Volume ID -volset ID Set Volume set ID -volset-size # Set Volume set size -volset-seqno # Set Volume set sequence number -x FILE, -old-exclude FILE Exclude file name(depreciated) -hard-disk-boot Boot image is a hard disk image -no-emul-boot Boot image is 'no emulation' image -no-boot Boot image is not bootable -boot-load-seg # Set load segment for boot image -boot-load-size # Set numbers of load sectors -boot-info-table Patch boot image with info table -XA Generate XA directory attruibutes -xa Generate rationalized XA directory attruibutes -z, -transparent-compression Enable transparent compression of files -hfs-type TYPE Set HFS default TYPE -hfs-creator CREATOR Set HFS default CREATOR -g, -apple Add Apple ISO9660 extensions -h, -hfs Create ISO9660/HFS hybrid -map MAPPING_FILE Map file extensions to HFS TYPE/CREATOR -H MAPPING_FILE, -map MAPPING_FILE Map file extensions to HFS TYPE/CREATOR -magic FILE Magic file for HFS TYPE/CREATOR -probe Probe all files for Apple/Unix file types -mac-name Use Macintosh name for ISO9660/Joliet/RockRidge file name -no-mac-files Do not look for Unix/Mac files (depreciated) -boot-hfs-file FILE Set HFS boot image name -part Generate HFS partition table -cluster-size SIZE Cluster size for PC Exchange Macintosh files -auto FILE Set HFS AutoStart file name -no-desktop Do not create the HFS (empty) Desktop files -hide-hfs GLOBFILE Hide HFS file -hide-hfs-list FILE List of HFS files to hide -hfs-volid HFS_VOLID Volume name for the HFS partition -icon-position Keep HFS icon position -root-info FILE finderinfo for root folder -input-hfs-charset CHARSET Local input charset for HFS file name conversion -output-hfs-charset CHARSET Output charset for HFS file name conversion -hfs-unlock Leave HFS Volume unlocked -hfs-bless FOLDER_NAME Name of Folder to be blessed -hfs-parms PARAMETERS Comma separated list of HFS parameters -prep-boot FILE PReP boot image file -- up to 4 are allowed -chrp-boot Add CHRP boot header --cap Look for AUFS CAP Macintosh files --netatalk Look for NETATALK Macintosh files --double Look for AppleDouble Macintosh files --ethershare Look for Helios EtherShare Macintosh files --exchange Look for PC Exchange Macintosh files --sgi Look for SGI Macintosh files --macbin Look for MacBinary Macintosh files --single Look for AppleSingle Macintosh files --ushare Look for IPT UShare Macintosh files --xinet Look for XINET Macintosh files --dave Look for DAVE Macintosh files --sfm Look for SFM Macintosh files --osx-double Look for MacOS X AppleDouble Macintosh files --osx-hfs Look for MacOS X HFS Macintosh files Report problems to debburn-devel@lists.alioth.debian.org.
Systèmes de Fichiers Chiffrés sous RHEL/CentOS 6
LAB #21 - Créer un Système de Fichiers Chiffré avec LUKS sous RHEL/CentOS 8
Présentation
LUKS ( Linux Unified Key Setup ) permet de chiffrer l'intégralité d'un disque de telle sorte que celui-ci soit utilisable sur d'autres plates-formes et distributions de Linux (voire d'autres systèmes d'exploitation). Il supporte jusqu'à 8 mots de passe, afin que plusieurs utilisateurs soient en mesure de déchiffrer le même volume sans partager leur mot de passe.
Mise en Place
Remplissez la partition /dev/sdb12 avec des données aléatoires :
[root@centos8 ~]# shred -v --iterations=1 /dev/sdb12 shred: /dev/sdb12: pass 1/1 (random)...
Important : L'étape ci-dessus est très importante parce que elle permet de s'assurer qu'aucune donnée ne reste sur la partition.
Initialisez la partition avec LUKS :
[root@centos8 ~]# cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb12 WARNING! ======== This will overwrite data on /dev/sdb12 irrevocably. Are you sure? (Type 'yes' in capital letters): YES Enter passphrase for /dev/sdb12: fenestros123456789 Verify passphrase: fenestros123456789 Key slot 0 created. Command successful.
Important : La passphrase ne sera pas en claire. Elle l'est ici pour vous montrer un mot de passe acceptable pour LUKS.
Ouvrez la partition LUKS en lui donnant le nom sdb12 :
[root@centos8 ~]# cryptsetup luksOpen /dev/sdb12 sdb12 Enter passphrase for /dev/sdb12: fenestros123456789
Vérifiez que le système voit la partition :
[root@centos8 ~]# ls -l /dev/mapper | grep sdb12 lrwxrwxrwx. 1 root root 7 Jun 2 10:03 sdb12 -> ../dm-2
Créez maintenant un système de fichiers sur /dev/mapper/sdb12 :
[root@centos8 ~]# mkfs.xfs /dev/mapper/sdb12 meta-data=/dev/mapper/sdb12 isize=512 agcount=4, agsize=11776 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=47104, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=1368, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
Montez la partition LUKS :
[root@centos8 ~]# mount /dev/mapper/sdb12 /mnt/sdb12
Vérifiez la présence du montage :
[root@centos8 ~]# df -h | grep sdb12 /dev/mapper/sdb12 179M 11M 168M 6% /mnt/sdb12
Editez le fichier /etc/crypttab/ :
[root@centos8 ~]# vi /etc/crypttab [root@centos8 ~]# cat /etc/crypttab sdb12 /dev/sdb12 none
Modifiez le fichier /etc/fstab :
[root@centos8 ~]# vi /etc/fstab [root@centos8 ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Fri May 8 07:35:23 2020 # # Accessible filesystems, by reference, are maintained under '/dev/disk/'. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info. # # After editing this file, run 'systemctl daemon-reload' to update systemd # units generated from this file. # UUID=4c0cc28c-0d59-45be-bd73-d292b80be33c / xfs defaults 0 0 UUID=2ae4c035-9244-458c-82c5-a49ae169cdb6 /boot ext4 defaults 1 2 UUID=c8bb3f47-d67f-4b21-b781-766899dc83d4 swap swap defaults 0 0 /dev/mapper/sdb12 /mnt/sdb12 xfs defaults 0 0
Restaurer les SC par défaut de SELinux :
[root@centos8 ~]# /sbin/restorecon -v -R /mnt/sdb12 Relabeled /mnt/sdb12 from system_u:object_r:unlabeled_t:s0 to system_u:object_r:mnt_t:s0
Redémarrez votre machine virtuelle :
[root@centos8 ~]# shutdown -r now
Important : Lors du démarrage de la machine virtuelle, le système devrait vous demander d'entrer la passphrase fenestros123456789 pour permettre le montage de /dev/sda12.
Ajouter une deuxième Passphrase
Pour ajouter une deuxième passphrase, utilisez la commande cryptsetup avec la sous-commande luksAddKey :
[trainee@centos8 ~]$ su - Password: fenestros [root@centos8 ~]# cryptsetup luksAddKey /dev/sdb12 Enter any existing passphrase: fenestros123456789 Enter new passphrase for key slot: redhat123456789 Verify passphrase: redhat123456789
Important : Les passphrases ne seront pas en claire. Elle le sont ici pour vous montrer des mots de passe acceptables pour LUKS.
Supprimer une Passphrase
Pour supprimer une passphrase, utilisez la commande cryptsetup avec la sous-commande luksRemoveKey :
[root@centos8 ~]# cryptsetup luksRemoveKey /dev/sdb12 Enter passphrase to be deleted: redhat123456789
Avant de poursuivre, éditez les fichiers /etc/fstab et /etc/crypttab :
[root@centos8 ~]# vi /etc/fstab [root@centos8 ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Fri May 8 07:35:23 2020 # # Accessible filesystems, by reference, are maintained under '/dev/disk/'. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info. # # After editing this file, run 'systemctl daemon-reload' to update systemd # units generated from this file. # UUID=4c0cc28c-0d59-45be-bd73-d292b80be33c / xfs defaults 0 0 UUID=2ae4c035-9244-458c-82c5-a49ae169cdb6 /boot ext4 defaults 1 2 UUID=c8bb3f47-d67f-4b21-b781-766899dc83d4 swap swap defaults 0 0 [root@centos8 ~]# vi /etc/crypttab [root@centos8 ~]# cat /etc/crypttab [root@centos8 ~]#
Le Swap
Taille du swap
Le tableau suivant résume la taille du swap recommandée en fonction de la mémoire de la machine :
Mémoire | Taille du swap |
---|---|
4 Go ou moins | 2 Go |
4 Go à 16 Go | 4 Go |
16 Go à 64 Go | 8 Go |
64 Go à 256 Go | 16 Go |
Partitions de swap
Une partition de swap peut être créée sur :
- une partition du disque dur
- un RAID logiciel
- un Volume Logique
La Commande swapon
Pour préparer un espace de swap, il convient d'utiliser la commande mkswap. Pour activer une partition de swap, il convient d'utiliser la commande swapon. Pour consulter la liste des partitions swap, il convient d'utiliser la commande swapon avec l'option -s.
[root@centos8 ~]# swapon -s Filename Type Size Used Priority /dev/sda2 partition 2047996 0 -2
Important : Vous noterez que dans l'exemple ci-dessus, le swap n'est pas utilisé. Notez aussi qu'il existe une notion de priorité pour les partions de swap.
Options de la Commande
Les options de la commande swapon sont :
[root@centos8 ~]# swapon --help Usage: swapon [options] [<spec>] Enable devices and files for paging and swapping. Options: -a, --all enable all swaps from /etc/fstab -d, --discard[=<policy>] enable swap discards, if supported by device -e, --ifexists silently skip devices that do not exist -f, --fixpgsz reinitialize the swap space if necessary -o, --options <list> comma-separated list of swap options -p, --priority <prio> specify the priority of the swap device -s, --summary display summary about used swap devices (DEPRECATED) --show[=<columns>] display summary in definable table --noheadings don't print table heading (with --show) --raw use the raw output format (with --show) --bytes display swap size in bytes in --show output -v, --verbose verbose mode -h, --help display this help -V, --version display version The <spec> parameter: -L <label> synonym for LABEL=<label> -U <uuid> synonym for UUID=<uuid> LABEL=<label> specifies device by swap area label UUID=<uuid> specifies device by swap area UUID PARTLABEL=<label> specifies device by partition label PARTUUID=<uuid> specifies device by partition UUID <device> name of device to be used <file> name of file to be used Available discard policy types (for --discard): once : only single-time area discards are issued pages : freed pages are discarded before they are reused If no policy is selected, both discard types are enabled (default). Available output columns: NAME device file or partition path TYPE type of the device SIZE size of the swap area USED bytes in use PRIO swap priority UUID swap uuid LABEL swap label For more details see swapon(8).
Important : L'option -p de la commande swapon permet de régler la priorité.
La Commande swapoff
Dans le cas de notre exemple, la partition de swap se trouve sur /dev/sda2. Pour la désactiver, il convient de saisir la commande suivante :
[root@centos8 ~]# swapoff /dev/sda2 [root@centos8 ~]# swapon -s [root@centos8 ~]#
Options de la Commande
[root@centos8 ~]# swapoff --help Usage: swapoff [options] [<spec>] Disable devices and files for paging and swapping. Options: -a, --all disable all swaps from /proc/swaps -v, --verbose verbose mode -h, --help display this help -V, --version display version The <spec> parameter: -L <label> LABEL of device to be used -U <uuid> UUID of device to be used LABEL=<label> LABEL of device to be used UUID=<uuid> UUID of device to be used <device> name of device to be used <file> name of file to be used For more details see swapoff(8).
LAB #22 - Créer un Fichier de Swap
Sous Linux, vous pouvez aussi bien utiliser un fichier de swap qu'une partition. La mise en place de ce fichier est faite en utilisant la commande dd.
La commande dd copie le fichier passé en entrée dans le fichier de sortie en limitant le nombre d'octets copiés par l'utilisation de deux options :
- count
- le nombre
- bs
- la taille du bloc à copier
Dans le cas du fichier swap il convient d'utiliser le fichier spécial /dev/zero en tant que fichier d'entrée. Le fichier /dev/zero contient une valeur null.
Pour créer votre fichier de swap de 268Mo, appelé swap, saisissez la commande suivante :
[root@centos8 ~]# dd if=/dev/zero of=/swap bs=1024k count=256 256+0 records in 256+0 records out 268435456 bytes (268 MB, 256 MiB) copied, 0.103048 s, 2.6 GB/s
Pour préparer le fichier en tant qu'espace de swap, saisissez la commande suivante :
[root@centos8 ~]# mkswap /swap mkswap: /swap: insecure permissions 0644, 0600 suggested. Setting up swapspace version 1, size = 256 MiB (268431360 bytes) no label, UUID=ee6c9e3f-0712-47b1-8f97-17ba215959d7
Pour activer le fichier avec une priorité de 3, saisissez la commande suivante :
[root@centos8 ~]# swapon -p1 /swap swapon: /swap: insecure permissions 0644, 0600 suggested. [root@centos8 ~]# swapon /dev/sda2
Pour visualiser les éspaces swap, saisissez la commande suivante :
[root@centos8 ~]# swapon -s Filename Type Size Used Priority /swap file 262140 0 1 /dev/sda2 partition 2047996 0 -2
Important : Le fichier de swap ayant une priorité de 1 sera utilisé avant la partition de swap ayant une priorité de -2.
Important : Pour activer le fichier swap d'une manière permanente, il convient d'ajouter une ligne au fichier /etc/fstab. Ne modifiez pas votre fichier /etc/fstab car vous allez supprimer le fichier de swap.
Désactivez maintenant le fichier swap :
[root@centos8 ~]# swapoff /swap [root@centos8 ~]# swapon -s Filename Type Size Used Priority /dev/sda2 partition 2047996 0 -2
Supprimez maintenant le fichier de swap :
[root@centos8 ~]# rm /swap rm: remove regular file '/swap'? y
<html> <div align=“center”> Copyright © 2021 Hugh Norris. </html>