Ceci est une ancienne révision du document !
Table des matières
Version : 2023.01
Dernière mise-à-jour : 2023/06/09 12:27
Topic 4 : Devices, Linux FileSystems, Filesystem Hierarchy Standard
Contenu du Module
- Topic 4 : Devices, Linux FileSystems, Filesystem Hierarchy Standard
- Contenu du Module
- Linux File Hierarchy System
- RHEL/CentOS 6
- RHEL/CentOS 7
- Types de Fichiers
- La Commande mount
- Options de la commande
- Le Fichier /etc/fstab
- Comprendre le fichier /etc/fstab
- Options de Montage
- La Commande umount
- Options de la commande
- Système de Fichiers Unix
- Superbloc
- Inodes
- Blocs de données
- Liens Physiques
- Liens Symboliques
- Périphériques de stockage
- Partitions
- Partitionnement
- LAB #1 - Partitionnement de votre Disque sous RHEL/CentOS 7 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
- Systèmes de Fichiers Journalisés
- Présentation
- Ext3
- Gestion d'Ext3
- LAB #7 - Convertir un Système de Fichiers Ext3 en Ext2
- LAB #8 - Convertir un Système de Fichiers Ext2 en Ext3
- LAB #9 - Placer le Journal sur un autre Partition
- LAB #10 - Modifier la Fréquence de Vérification du Système de Fichiers Ext3
- Ext4
- LAB #11 - Créer un Système de Fichiers Ext4
- LAB #12 - Ajouter une Étiquette au Système de Fichiers Ext4
- LAB #13 - Convertir un Système de Fichiers Ext3 en Ext4
- XFS
- LAB #14 - Créer un Système de Fichiers XFS
- LAB #15 - 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
- Le Swap
- Taille du swap
- Partitions de swap
- La Commande swapon
- La Commande swapoff
- LAB #16 - Créer un Fichier de Swap
- Gestion des Droits
- Préparation
- Les Droits Unix Simples
- La Modification des Droits
- La Commande chmod
- Mode Symbolique
- Mode Octal
- La Commande umask
- Modifier le propriétaire ou le groupe
- La Commande chown
- La Commande chgrp
- Les Droits Unix Étendus
- SUID/SGID bit
- Inheritance Flag
- Sticky bit
- Les Droits Unix Avancés
- Les ACL
- Les Attributs Étendus
- Rôle du noyau
- Gestion des modules
- Gestion des Quotas
- La Commande quotacheck
- La Commande edquota
- La Commande quotaon
- La Commande repquota
- La Commande quota
- La Commande warnquota
Linux File Hierarchy System
Le système de fichiers de Linux est organisé autour d'une arborescence unique ayant un point de départ appelé la racine, représenté par le caractère /. En dessous de cette racine se trouvent des répertoires contenant fichiers et sous-répertoires. L'organisation des répertoires est conforme à un standard, appelé le Linux File Hierarchy System.
RHEL/CentOS 6
[trainee@centos6 /]$ ls -l total 98 dr-xr-xr-x. 2 root root 4096 9 août 12:52 bin dr-xr-xr-x. 5 root root 1024 7 déc. 2014 boot drwxr-xr-x. 19 root root 3820 25 août 11:29 dev drwxr-xr-x. 119 root root 12288 25 août 11:28 etc drwxr-xr-x. 3 root root 4096 3 mai 2013 home dr-xr-xr-x. 20 root root 12288 9 août 12:52 lib drwx------. 2 root root 16384 3 mai 2013 lost+found drwxr-xr-x. 2 root root 4096 7 déc. 2014 media drwxr-xr-x. 2 root root 0 25 août 11:28 misc drwxr-xr-x. 3 root root 4096 5 juil. 12:22 mnt drwxr-xr-x. 2 root root 0 25 août 11:28 net drwxr-xr-x. 6 root root 4096 7 déc. 2014 opt dr-xr-xr-x. 154 root root 0 25 août 11:27 proc dr-xr-x---. 10 root root 4096 9 août 12:58 root dr-xr-xr-x. 2 root root 12288 9 août 12:52 sbin drwxr-xr-x. 7 root root 0 25 août 11:27 selinux drwxr-xr-x. 2 root root 4096 23 sept. 2011 srv drwxr-xr-x. 13 root root 0 25 août 11:27 sys drwxrwxrwt. 16 root root 4096 25 août 11:30 tmp drwxr-xr-x. 13 root root 4096 3 mai 2013 usr drwxr-xr-x. 22 root root 4096 9 août 12:50 var
- /bin : est une abréviation de binary ou binaires. Il contient des programmes tels ls.
- /boot : contient les fichiers nécessaires au démarrage du système.
- /cgroup : utilisé par le nouveau système de Control Groups.
- /dev : contient les nœuds utilisés pour accéder à tout type de matériel tel /dev/fd0 pour le lecteur de disquette. C'est le binaire udev qui se charge de créer et supprimer d'une manière dynamique les nœuds.
- /etc : contient des fichiers de configuration tels passwd pour les mots de passe et fstab qui est la liste des systèmes de fichiers à monter lors du démarrage du système.
- /home : contient les répertoires de chaque utilisateur sauf l’utilisateur root.
- /lib : contient les bibliothèques 32 bits communes utilisées par les programmes ainsi que les modules.
- /lib64 : contient les bibliothèques 64 bits communes utilisées par les programmes ainsi que les modules.
- /lost+found : contient des fragments de fichiers endommagés et retrouvés par la commande fsck.
- /media : contient des répertoires pour chaque système de fichiers monté ( accessible au système linux ) tels floppy, cdrom etc.
- /misc : contient des points de montage pour chaque répertoire local monté par l'automounter.
- /mnt : contient des répertoires pour chaque système de fichiers monté temporairement par root.
- /net : contient des points de montage pour chaque répertoire réseau monté par l'automounter.
- /opt : contient des applications optionnelles.
- /proc : contient un système de fichiers virtuel qui extrait de la mémoire les informations en cours de traitement. Le contenu des fichiers est créé dynamiquement lors de la consultation. Seul root peut consulter la totalité des informations dans le répertoire /proc.
- /root : le home de root, l’administrateur système
- /sbin : contient des binaires, donc programmes, pour l’administration du système local.
- /selinux : contient des fichiers propres à l'implémentation de SELINUX.
- /srv : contient des données pour les services hébergés par le système tels ftp, bases de données, web etc.
- /sys : contient un système de fichiers virtuel dont le rôle est de décrire le matériel pour udev.
- /tmp : stocke des fichiers temporaires créés par des programmes.
- /usr : contient des commandes des utilisateurs dans /usr/bin, les HOWTO dans /usr/share/doc, les manuels dans /usr/share/man ainsi que d'autres entrées majeures.
- /var : contient des fichiers de taille variable.
RHEL/CentOS 7
[trainee@centos7 /]$ ls -l total 32 lrwxrwxrwx. 1 root root 7 Mar 8 13:41 bin -> usr/bin dr-xr-xr-x. 4 root root 4096 Jun 4 15:00 boot drwxr-xr-x. 19 root root 3280 Jul 7 15:55 dev drwxr-xr-x. 131 root root 8192 Jul 23 17:05 etc drwxr-xr-x. 4 root root 47 Jul 5 14:11 home lrwxrwxrwx. 1 root root 7 Mar 8 13:41 lib -> usr/lib lrwxrwxrwx. 1 root root 9 Mar 8 13:41 lib64 -> usr/lib64 drwxr-xr-x. 2 root root 6 Jun 10 2014 media drwxr-xr-x. 3 root root 18 Jul 5 13:57 mnt drwxr-xr-x. 4 root root 47 Jun 4 09:36 opt dr-xr-xr-x. 177 root root 0 Jul 7 15:53 proc dr-xr-x---. 5 root root 4096 Aug 25 11:31 root drwxr-xr-x. 35 root root 1100 Jul 23 15:40 run lrwxrwxrwx. 1 root root 8 Mar 8 13:41 sbin -> usr/sbin drwxr-xr-x. 2 root root 6 Jun 10 2014 srv dr-xr-xr-x. 13 root root 0 Jul 7 15:53 sys drwxrwxrwt. 25 root root 4096 Jul 23 15:40 tmp drwxr-xr-x. 13 root root 4096 Mar 8 13:41 usr drwxr-xr-x. 22 root root 4096 Jul 7 15:53 var
- /bin : est une abréviation de binary ou binaires. Il contient des programmes tels ls. Sous RHEL/CentOS 7 il s'agit d'un lien symbolique qui pointe vers /usr/bin.
- /boot : contient les fichiers nécessaires au démarrage du système.
- /dev : contient les nœuds utilisés pour accéder à tout type de matériel tel /dev/fd0 pour le lecteur de disquette. C'est le binaire udev qui se charge de créer et supprimer d'une manière dynamique les nœuds.
- /etc : contient des fichiers de configuration tels passwd pour les mots de passe et fstab qui est la liste des systèmes de fichiers à monter lors du démarrage du système.
- /home : contient les répertoires de chaque utilisateur sauf l’utilisateur root.
- /lib : contient les bibliothèques 32 bits communes utilisées par les programmes ainsi que les modules. Sous RHEL/CentOS 7 il s'agit d'un lien symbolique qui pointe vers /usr/lib.
- /lib64 : contient les bibliothèques 64 bits communes utilisées par les programmes ainsi que les modules. Sous RHEL/CentOS 7 il s'agit d'un lien symbolique qui pointe vers /usr/lib64.
- /lost+found : contient des fragments de fichiers endommagés et retrouvés par la commande fsck.
- /media : contient des répertoires pour chaque système de fichiers monté ( accessible au système linux ) tels floppy, cdrom etc.
- /mnt : contient des répertoires pour chaque système de fichiers monté temporairement par root.
- /opt : contient des applications optionnelles.
- /proc : contient un système de fichiers virtuel qui extrait de la mémoire les informations en cours de traitement. Le contenu des fichiers est créé dynamiquement lors de la consultation. Seul root peut consulter la totalité des informations dans le répertoire /proc.
- /root : le home de root, l’administrateur système.
- /run : remplace le répertoire /var/run. Sous RHEL/CentOS 7 /var/run est un lien symbolique qui pointe vers /run.
- /sbin : contient des binaires, donc programmes, pour l’administration du système local. Sous RHEL/CentOS 7 il s'agit d'un lien symbolique qui pointe vers /usr/sbin.
- /srv : contient des données pour les services hébergés par le système tels ftp, bases de données, web etc.
- /sys : contient un système de fichiers virtuel dont le rôle est de décrire le matériel pour udev.
- /tmp : stocke des fichiers temporaires créés par des programmes.
- /usr : contient des commandes des utilisateurs dans /usr/bin, les HOWTO dans /usr/share/doc, les manuels dans /usr/share/man ainsi que d'autres entrées majeures.
- /var : contient des fichiers de taille variable.
Types de Fichiers
Il existe trois types majeurs de fichier sous le système Linux :
- les fichiers normaux ( ordinary files )
- les répertoires ( directories )
- les fichiers spéciaux ( special files ou Devices)
Le fichiers normaux sont des fichiers textes, des tableaux ou des exécutables.
La longueur du nom de fichier est limité à 255 caractères.
Il y a une distinction entres les majuscules et le minuscules.
Si le nom d'un fichier commence par un ., le fichier devient caché.
La Commande mount
Pour que Linux soit informé de la présence d’un système de fichiers, ce système doit être monté. Pour monter un système de fichiers, on utilise la commande mount :
# mount /dev/<fichier_spécial> /mnt/<répertoire_cible>
ou /dev/<fichier_spécial> est le périphérique à monter et /mnt/<répertoire_cible> est le répertoire qui servira comme «fenêtre» pour visionner le contenu du système de fichiers. Ce répertoire doit impérativement exister avant d’essayer de monter le système de fichiers.
Dans le cas où la commande mount est utilisée sans options, le système retourne une liste de tous les systèmes de fichiers actuellement montés :
[trainee@centos6 /]$ su - Password: fenestros [root@centos6 /]# mount /dev/sda2 on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/sda1 on /boot type ext3 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
[trainee@centos7 /]$ su - Password: fenestros [root@centos7 ~]# mount proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel) devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=1449668k,nr_inodes=362417,mode=755) securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000) tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755) tmpfs on /sys/fs/cgroup type tmpfs (rw,nosuid,nodev,noexec,seclabel,mode=755) cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd) pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime) cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset) cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu) cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory) cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices) cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer) cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls) cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio) cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event) cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb) configfs on /sys/kernel/config type configfs (rw,relatime) /dev/sda2 on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota) selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime) systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=32,pgrp=1,timeout=300,minproto=5,maxproto=5,direct) debugfs on /sys/kernel/debug type debugfs (rw,relatime) hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel) mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime) nfsd on /proc/fs/nfsd type nfsd (rw,relatime) /dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota) fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime) gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)
Important : Notez que le système de fichiers par défaut est différent selon la version de RHEL. Sous RHEL 6 c'est l'ext4 et sous RHEL 7 c'est le xfs. La comparaison des systèmes de fichiers Linux sera abordée dans le module LCF204 - Gestion des Disques, des Systèmes de Fichiers et du Swap de la formation LCF200 - CentOS 7 Linux (RHEL 7) - Technician..
Options de la commande
Les options de la commande mount sont :
[trainee@centos ~]$ mount --help Utilisation : mount -V : afficher la version mount -h : afficher cette aide mount : lister les systèmes de fichiers montés mount -l : idem, incluant les étiquettes de volumes Cela pour la partie informative. Suit ce qui porte sur le montage. La commande est « mount [-t type-sys-fichier] quoi où ». Les détails se trouvant dans /etc/fstab peuvent être omis. mount -a [-t|-O] ... : monter tout ce qui est listé dans /etc/fstab mount périphérique : monter le périphérique à l'endroit connu mount répertoire : monter le périphérique connu ici mount -t type périph rép : commande de montage ordinaire Noter que celle-ci ne monte pas réellement un périphérique, elle monte un système de fichiers (de type donné) trouvé sur le périphérique. Elle peut aussi monter une arborescence de rép. déjà visible ailleurs : mount --bind ancien-rép nouveau-rép ou déplacer une sous-arborescence: mount --move ancien-rép nouveau-rép Elle peut changer le type de montage d'un rép. : mount --make-shared rép. mount --make-slave rép. mount --make-private rép. mount --make-unbindable rép. Elle peut changer le type de tous les points de montage d'une sous-arborecence contenue dans le rép.: mount --make-rshared rép. mount --make-rslave rép. mount --make-rprivate rép. mount --make-runbindable rép. Un périph. peut être nommé, comme /dev/hda1 ou /dev/cdrom, ou repéré par l'étiquette, avec -L étiqu. ou par UUID, avec -U uuid . Autres options: [-nfFrsvw] [-o options] [-p descr_fic_mots_passe]. Pour plus de détails, tapez "man 8 mount".
Le Fichier /etc/fstab
Dans le cas où la commande mount est utilisée avec l’option –a, tous les systèmes de fichiers mentionnés dans un fichier spécial dénommé /etc/fstab seront montés en même temps :
[root@centos6 ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Fri May 3 13:33:42 2013 # # 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 # UUID=b9f29672-c84e-4d3b-b132-189758a084eb / ext4 defaults 1 1 UUID=01baf03d-df0d-479b-b3e4-81ce63b8dec3 /boot ext4 defaults 1 2 UUID=2646a33a-65f3-4501-9ced-9459435fd774 swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0
[root@centos7 ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Sun Mar 8 12:38:10 2015 # # 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 # UUID=b35de665-5ec8-4226-a533-58a1b567ac91 / xfs defaults 1 1 UUID=e8d3bd48-1386-411c-9675-41c3f8f1a309 /boot xfs defaults 1 2 UUID=11a4d11d-81e4-46a7-82e0-7796cd597dc9 swap swap defaults 0 0
Comprendre le fichier /etc/fstab
Chaque ligne dans ce fichier contient 6 champs :
Champ 1 | Champ 2 | Champ 3 | Champ 4 | Champ 5 | Champ 6 |
---|---|---|---|---|---|
Fichier de bloc spécial ou UUID ou système de fichiers virtuel | Point de montage | Type de système de fichiers | Options séparées par des virgules | Utilisé par dump ( 1 = à dumper, 0 ou vide = à ignorer ) | L'ordre de vérification par fsck des systèmes de fichiers au moment du démarrage |
L'UUID ( Universally Unique Identifier ) est une chaîne d'une longueur de 128 bits. Les UUID sont créés automatiquement et d'une manière aléatoire lors de la création du filesystem sur la partition. Ils peuvent être modifiés par l'administrateur.
Options de Montage
Les options de montage les plus importants sont :
Option | Systèmes de Fichier | Description | Valeur par Défaut |
---|---|---|---|
defaults | Tous | Egal à rw, suid, dev, exec, auto, nouser, async | S/O |
auto/noauto | Tous | Montage automatique/pas de montage automatique lors de l'utilisation de la commande mount -a | auto |
rw/ro | Tous | Montage en lecture-écriture/lecture seule | rw |
suid/nosuid | Tous | Les bits SUID et SGID sont/ne sont pas pris en compte | suid |
dev/nodev | Tous | Interprète/n'interprète pas les fichiers spéciaux de périphériques | dev |
exec/noexec | Tous | Autorise:n'autorise pas l'exécution des programmes | exec |
sync/async | Tous | Montage synchrone/asynchrone | async |
user/nouser | Tous | Autorise/n'autorise pas un utilisateur à monter/démonter le système de fichier. Le point de montage est celui spécifié dans le fichier /etc/fstab. Seul l'utilisateur qui a monté le système de fichiers peut le démonter | S/O |
users | Tous | Autorise tous les utilisateurs à monter/démonter le système de fichier | S/O |
owner | Tous | Autorise le propriétaire du périphérique de le monter | S/O |
atime/noatime | Norme POSIX | Inscrit/n'inscrit pas la date d'accès | atime |
uid=valeur | Formats non-Linux | Spécifie le n° du propriétaire des fichiers pour les systèmes de fichiers non-Linux | root |
gid=valeur | Formats non-Linux | Spécifie le n° du groupe propriétaire | S/O |
umask=valeur | Formats non-Linux | Spécifie les permissions (droits d'accès/lecture/écriture) | S/O |
dmask=valeur | Formats non-Linux | Spécifie les droits d'usage des dossiers (Obsolète, préférer dir_mode) | umask actuel |
dir_mode=valeur | Formats non-Linux | Spécifie les droits d'usage des dossiers | umask actuel |
fmask=valeur | Formats non-Linux | Spécifie les droits d'usage des fichiers (Obsolète, préférer file_mode) | umask actuel |
file_mode=valeur | Formats non-Linux | Spécifie les droits d'usage des fichiers | umask actuel |
La Commande umount
Pour démonter un système de fichiers, on utilise la commande umount :
# umount /mnt/<répertoire_cible>
ou
# umount /dev/cdrom
Options de la commande
Les options de la commande umount sont :
[trainee@centos ~]$ umount --help Utilisation : umount -h | -V umount -a [-d] [-f] [-r] [-n] [-v] [-t typevfs] [-O opts] umount [-d] [-f] [-r] [-n] [-v] spécial | noeud...
Système de Fichiers Unix
Chaque partition sous un système Unix peut héberger une des structures suivantes :
- superbloc
- inode
- bloc de données
- blocs d'indirection
Superbloc
Le superbloc contient :
- la taille des blocs
- la taille du système de fichiers
- le nombre de montages effectués pour ce système de fichiers
- un pointeur vers la racine du système de fichiers
- les pointeurs vers la liste des inodes libres
- les pointeurs vers la liste des blocs de données libres
Le Superbloc est dupliqué tous les 8 ou 16Mo sous ext3 et ext4. Pour réparer un système de fichiers en restaurant un Superbloc, utilisez la commande suivante :
# e2fsck -f -b 8193 /dev/sda1 [Enter]
Pour visualiser l'emplacement du Superbloc primaire et ses sauvegardes, utilisez la commande suivante :
[root@centos6 ~]# dumpe2fs /dev/sda1 | grep -i superbloc dumpe2fs 1.41.12 (17-May-2010) superbloc Primaire à 1, Descripteurs de groupes à 2-2 superbloc Secours à 8193, Descripteurs de groupes à 8194-8194 superbloc Secours à 24577, Descripteurs de groupes à 24578-24578 superbloc Secours à 40961, Descripteurs de groupes à 40962-40962 superbloc Secours à 57345, Descripteurs de groupes à 57346-57346 superbloc Secours à 73729, Descripteurs de groupes à 73730-73730
Inodes
Chaque fichier est représenté par un inode. L'inode contient :
- le type de fichier, soit -, d, l, b, c, p, s
- les droits d'accès, par exemple rwx rw- r–
- le nombre de liens physiques soit le nombre de noms
- l'UID du créateur ou l'UID affecté par la commande chown s'il y a eu une modification
- le GID du processus créateur ou le GID affecté par la commande chgrp
- la taille du fichier en octets
- la date de dernière modification de l'inode, soit le ctime
- la date de dernière modification du fichier, soit le mtime
- la date du dernier accès, soit le atime
- les adresses qui pointent vers les blocs de données du fichier
Graphiquement, on peut schématiser cette organisation de la façon suivante :
Pour mieux comprendre, tapez la commande suivante :
[root@centos6 ~]# ls -ld /dev/console /dev/ram0 /etc /etc/passwd crw------- 1 root root 5, 1 20 oct. 15:52 /dev/console brw-rw---- 1 root disk 1, 0 20 oct. 15:52 /dev/ram0 drwxr-xr-x 117 root root 12288 20 oct. 15:53 /etc -rw-r--r-- 1 root root 1890 3 oct. 18:09 /etc/passwd
[root@centos7 ~]# ls -ld /dev/console /dev/ram0 /etc /etc/passwd ls: cannot access /dev/ram0: No such file or directory crw-------. 1 root root 5, 1 Jul 7 15:54 /dev/console drwxr-xr-x. 131 root root 8192 Aug 25 14:27 /etc -rw-r--r--. 1 root root 2103 Jul 5 14:11 /etc/passwd
Le premier caractère de chaque ligne peut être un des suivants :
- - - un fichier
- d - un répertoire
- l - un lien symbolique
- b - un périphérique du type bloc
- c - un périphérique du type caractère
- p - un tube nommé pour la communication entre processus
- s - un socket dans un contexte réseau
Pour visualiser le numéro d'inode, utilisez l'option -i :
[root@centos6 ~]# ls -ldi /dev/console /dev/ram0 /etc /etc/passwd 5153 crw------- 1 root root 5, 1 20 oct. 15:52 /dev/console 7377 brw-rw---- 1 root disk 1, 0 20 oct. 15:52 /dev/ram0 15 drwxr-xr-x 117 root root 12288 20 oct. 15:53 /etc 13564 -rw-r--r-- 1 root root 1890 3 oct. 18:09 /etc/passwd
root@centos7 ~]# ls -ldi /dev/console /dev/ram0 /etc /etc/passwd ls: cannot access /dev/ram0: No such file or directory 1043 crw-------. 1 root root 5, 1 Jul 7 15:54 /dev/console 8388737 drwxr-xr-x. 131 root root 8192 Aug 25 14:27 /etc 11114576 -rw-r--r--. 1 root root 2103 Jul 5 14:11 /etc/passwd
Blocs de données
Les données sont stockées dans des blocs de données. Dans le cas d'un répertoire, le bloc de données contient une table qui référence les inodes et les noms des fichiers dans le répertoire. Cette table s'appelle une table catalogue.
Le nom d'un fichier n'est pas stocké dans l'inode mais dans une table catalogue. Cette particularité nous permet de donner deux noms différents au même fichier. Pour ajouter un nouveau nom à un fichier, il convient de créer un lien physique.
Liens Physiques
Un lien physique se crée en utilisant la commande suivante :
- ln nom_du_fichier nom_supplémentaire
Pour illustrer ce point, tapez la ligne de commande suivante :
[root@centos7 ~]# cd /tmp; mkdir inode; cd inode; touch fichier1; ls -ali total 4 27689296 drwxr-xr-x. 2 root root 21 Oct 15 15:23 . 25165953 drwxrwxrwt. 23 root root 4096 Oct 15 15:23 .. 27689297 -rw-r--r--. 1 root root 0 Oct 15 15:23 fichier1
Notez bien le numéro de l'inode du fichier fichier1. Notez aussi que le numéro dans le troisième champs de la ligne de fichier1 a la valeur 1 :
27689297 -rw-r–r–. 1 root root 0 Oct 15 15:23 fichier1
Créez maintenant un lien physique :
[root@centos7 inode]# ln fichier1 fichier2 [root@centos7 inode]# ls -ali total 4 27689296 drwxr-xr-x. 2 root root 36 Oct 15 15:24 . 25165953 drwxrwxrwt. 23 root root 4096 Oct 15 15:23 .. 27689297 -rw-r--r--. 2 root root 0 Oct 15 15:23 fichier1 27689297 -rw-r--r--. 2 root root 0 Oct 15 15:23 fichier2
Notez les deux lignes suivantes :
27689297 -rw-r–r–. 2 root root 0 Oct 15 15:23 fichier1
27689297 -rw-r–r–. 2 root root 0 Oct 15 15:23 fichier2
Les deux fichiers, fichier1 et fichier2, sont référencés par le même inode. Le nombre de liens est donc augmenté de 1 (le numéro dans le troisième champs).
Important : Un lien physique ne peut être créé que dans le cas où les deux fichiers se trouvent dans le même filesystem et que le fichier source existe.
Liens Symboliques
Un lien symbolique est un raccourci vers un autre fichier ou répertoire. Un lien symbolique se crée en utilisant la commande suivante :
- ln -s nom_du_fichier nom_raccourci
Pour illustrer ce point, tapez la ligne de commande suivante :
# ln -s fichier1 fichier3 [Entrée]
Vous obtiendrez un résultat similaire à celui-ci :
[root@centos7 inode]# ln -s fichier1 fichier3 [root@centos7 inode]# ls -ali total 4 27689296 drwxr-xr-x. 2 root root 51 Oct 15 15:25 . 25165953 drwxrwxrwt. 23 root root 4096 Oct 15 15:23 .. 27689297 -rw-r--r--. 2 root root 0 Oct 15 15:23 fichier1 27689297 -rw-r--r--. 2 root root 0 Oct 15 15:23 fichier2 27689298 lrwxrwxrwx. 1 root root 8 Oct 15 15:25 fichier3 -> fichier1
Notez que le lien symbolique est référencé par un autre inode. Le lien symbolique pointe vers le fichier1.
Important : Un lien symbolique peut être créé même dans le cas où les deux fichiers se trouvent dans deux filesystems différents et même dans le cas où le fichier source n'existe pas.
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 7 avec fdisk
Pour procéder au partitionnement de votre disque ou de vos disques, RHEL/CentOS 7 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@centos7 ~]# fdisk /dev/sda Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help):
Tapez ensuite la lettre m puis ↵ Entrée pour obtenir le menu :
Command (m for help): m Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition g create a new empty GPT partition table G create an IRIX (SGI) partition table l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) 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/sda4 | Extended | Du premier cylindre disponible au dernier cylindre du disque |
/dev/sda5 | Logique | 500 Mo |
/dev/sda6 | Logique | 200 Mo |
/dev/sda7 | Logique | 300 Mo |
/dev/sda8 | Logique | 500 Mo |
/dev/sda9 | Logique | 400 Mo |
/dev/sda10 | Logique | 500 Mo |
/dev/sda11 | Logique | 500 Mo |
/dev/sda12 | Logique | 200 Mo |
Créez d'abord la partition étendue :
Command (m for help): n Partition type: p primary (3 primary, 0 extended, 1 free) e extended Select (default e): e Selected partition 4 First sector (20891648-41943039, default 20891648): Using default value 20891648 Last sector, +sectors or +size{K,M,G} (20891648-41943039, default 41943039): Using default value 41943039 Partition 4 of type Extended and of size 10 GiB is set Command (m for help):
Créez ensuite 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 (20893696-41943039, default 20893696): Using default value 20893696 Last sector, +sectors or +size{K,M,G} (20893696-41943039, default 41943039): +500M Partition 5 of type Linux and of size 500 MiB is set Command (m for help): n All primary partitions are in use Adding logical partition 6 First sector (21919744-41943039, default 21919744): Using default value 21919744 Last sector, +sectors or +size{K,M,G} (21919744-41943039, default 41943039): +200M Partition 6 of type Linux and of size 200 MiB is set Command (m for help): n All primary partitions are in use Adding logical partition 7 First sector (22331392-41943039, default 22331392): Using default value 22331392 Last sector, +sectors or +size{K,M,G} (22331392-41943039, default 41943039): +300M Partition 7 of type Linux and of size 300 MiB is set Command (m for help): n All primary partitions are in use Adding logical partition 8 First sector (22947840-41943039, default 22947840): Using default value 22947840 Last sector, +sectors or +size{K,M,G} (22947840-41943039, default 41943039): +500M Partition 8 of type Linux and of size 500 MiB is set Command (m for help): n All primary partitions are in use Adding logical partition 9 First sector (23973888-41943039, default 23973888): Using default value 23973888 Last sector, +sectors or +size{K,M,G} (23973888-41943039, default 41943039): +400M Partition 9 of type Linux and of size 400 MiB is set Command (m for help): n All primary partitions are in use Adding logical partition 10 First sector (24795136-41943039, default 24795136): Using default value 24795136 Last sector, +sectors or +size{K,M,G} (24795136-41943039, default 41943039): +500M Partition 10 of type Linux and of size 500 MiB is set Command (m for help): n All primary partitions are in use Adding logical partition 11 First sector (25821184-41943039, default 25821184): Using default value 25821184 Last sector, +sectors or +size{K,M,G} (25821184-41943039, default 41943039): +500M Partition 11 of type Linux and of size 500 MiB is set Command (m for help): n All primary partitions are in use Adding logical partition 12 First sector (26847232-41943039, default 26847232): Using default value 26847232 Last sector, +sectors or +size{K,M,G} (26847232-41943039, default 41943039): +200M Partition 12 of type Linux and of size 200 MiB is set 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/sda: 21.5 GB, 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 Disk label type: dos Disk identifier: 0x000f2006 Device Boot Start End Blocks Id System /dev/sda1 * 2048 411647 204800 83 Linux /dev/sda2 411648 14747647 7168000 83 Linux /dev/sda3 14747648 20891647 3072000 82 Linux swap / Solaris /dev/sda4 20891648 41943039 10525696 5 Extended /dev/sda5 20893696 21917695 512000 83 Linux /dev/sda6 21919744 22329343 204800 83 Linux /dev/sda7 22331392 22945791 307200 83 Linux /dev/sda8 22947840 23971839 512000 83 Linux /dev/sda9 23973888 24793087 409600 83 Linux /dev/sda10 24795136 25819135 512000 83 Linux /dev/sda11 25821184 26845183 512000 83 Linux /dev/sda12 26847232 27256831 204800 83 Linux
Important : Chaque bloc fait 1 024 octets. Chaque secteur fait 512 octets. Quand la partition contient un nombre impair de secteurs, celle-ci est marquée avec un +. Ceci implique que le dernier secteur de 512 octets est effectivement perdu.
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. 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@centos7 ~]# partprobe
Lancez fdisk puis tapez ensuite la lettre p puis ↵ Entrée pour visualiser la table des partitions actuelle :
[root@centos7 ~]# fdisk /dev/sda Welcome to fdisk (util-linux 2.23.2). 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/sda: 21.5 GB, 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 Disk label type: dos Disk identifier: 0x000f2006 Device Boot Start End Blocks Id System /dev/sda1 * 2048 411647 204800 83 Linux /dev/sda2 411648 14747647 7168000 83 Linux /dev/sda3 14747648 20891647 3072000 82 Linux swap / Solaris /dev/sda4 20891648 41943039 10525696 5 Extended /dev/sda5 20893696 21917695 512000 83 Linux /dev/sda6 21919744 22329343 204800 83 Linux /dev/sda7 22331392 22945791 307200 83 Linux /dev/sda8 22947840 23971839 512000 83 Linux /dev/sda9 23973888 24793087 409600 83 Linux /dev/sda10 24795136 25819135 512000 83 Linux /dev/sda11 25821184 26845183 512000 83 Linux /dev/sda12 26847232 27256831 204800 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 is deleted Command (m for help): p Disk /dev/sda: 21.5 GB, 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 Disk label type: dos Disk identifier: 0x000f2006 Device Boot Start End Blocks Id System /dev/sda1 * 2048 411647 204800 83 Linux /dev/sda2 411648 14747647 7168000 83 Linux /dev/sda3 14747648 20891647 3072000 82 Linux swap / Solaris /dev/sda4 20891648 41943039 10525696 5 Extended /dev/sda5 20893696 21917695 512000 83 Linux /dev/sda6 21919744 22329343 204800 83 Linux /dev/sda7 22331392 22945791 307200 83 Linux /dev/sda8 22947840 23971839 512000 83 Linux /dev/sda9 23973888 24793087 409600 83 Linux /dev/sda10 24795136 25819135 512000 83 Linux /dev/sda11 25821184 26845183 512000 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@centos7 ~]# fdisk /dev/sda Welcome to fdisk (util-linux 2.23.2). 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/sda: 21.5 GB, 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 Disk label type: dos Disk identifier: 0x000f2006 Device Boot Start End Blocks Id System /dev/sda1 * 2048 411647 204800 83 Linux /dev/sda2 411648 14747647 7168000 83 Linux /dev/sda3 14747648 20891647 3072000 82 Linux swap / Solaris /dev/sda4 20891648 41943039 10525696 5 Extended /dev/sda5 20893696 21917695 512000 83 Linux /dev/sda6 21919744 22329343 204800 83 Linux /dev/sda7 22331392 22945791 307200 83 Linux /dev/sda8 22947840 23971839 512000 83 Linux /dev/sda9 23973888 24793087 409600 83 Linux /dev/sda10 24795136 25819135 512000 83 Linux /dev/sda11 25821184 26845183 512000 83 Linux /dev/sda12 26847232 27256831 204800 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 | 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 :
[root@centos7 ~]# fdisk /dev/sda Welcome to fdisk (util-linux 2.23.2). 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/sda: 21.5 GB, 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 Disk label type: dos Disk identifier: 0x000f2006 Device Boot Start End Blocks Id System /dev/sda1 * 2048 411647 204800 83 Linux /dev/sda2 411648 14747647 7168000 83 Linux /dev/sda3 14747648 20891647 3072000 82 Linux swap / Solaris /dev/sda4 20891648 41943039 10525696 5 Extended /dev/sda5 20893696 21917695 512000 83 Linux /dev/sda6 21919744 22329343 204800 83 Linux /dev/sda7 22331392 22945791 307200 83 Linux /dev/sda8 22947840 23971839 512000 83 Linux /dev/sda9 23973888 24793087 409600 83 Linux /dev/sda10 24795136 25819135 512000 83 Linux /dev/sda11 25821184 26845183 512000 83 Linux /dev/sda12 26847232 27256831 204800 83 Linux 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' Command (m for help):
A l'issu des modifications, vous obtiendrez un résultat similaire à celui-ci :
Command (m for help): p Disk /dev/sda: 21.5 GB, 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 Disk label type: dos Disk identifier: 0x000f2006 Device Boot Start End Blocks Id System /dev/sda1 * 2048 411647 204800 83 Linux /dev/sda2 411648 14747647 7168000 83 Linux /dev/sda3 14747648 20891647 3072000 82 Linux swap / Solaris /dev/sda4 20891648 41943039 10525696 5 Extended /dev/sda5 20893696 21917695 512000 fd Linux raid autodetect /dev/sda6 21919744 22329343 204800 8e Linux LVM /dev/sda7 22331392 22945791 307200 8e Linux LVM /dev/sda8 22947840 23971839 512000 fd Linux raid autodetect /dev/sda9 23973888 24793087 409600 8e Linux LVM /dev/sda10 24795136 25819135 512000 fd Linux raid autodetect /dev/sda11 25821184 26845183 512000 fd Linux raid autodetect /dev/sda12 26847232 27256831 204800 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@centos7 ~]# partprobe
Options de la Commande fdisk
Les options de cette commande sont :
[root@centos7 ~]# fdisk --help fdisk: invalid option -- '-' Usage: fdisk [options] <disk> change partition table fdisk [options] -l <disk> list partition table(s) fdisk -s <partition> give partition size(s) in blocks Options: -b <size> sector size (512, 1024, 2048 or 4096) -c[=<mode>] compatible mode: 'dos' or 'nondos' (default) -h print this help text -u[=<unit>] display units: 'cylinders' or 'sectors' (default) -v print program version -C <number> specify the number of cylinders -H <number> specify the number of heads -S <number> specify the number of sectors per track
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 7 avec les partitions suivantes :
/dev/sda6 21919744 22329343 204800 8e Linux LVM /dev/sda7 22331392 22945791 307200 8e Linux LVM /dev/sda9 23973888 24793087 409600 8e Linux LVM
Pour initialiser le LVM saississez la commande suivante :
[root@centos7 ~]# vgscan Reading all physical volumes. This may take a while...
Les options de la commande vgscan sont :
[root@centos7 ~]# vgscan --help vgscan: Search for all volume groups vgscan [--cache] [--commandprofile ProfileName] [-d|--debug] [-h|--help] [--ignorelockingfailure] [--mknodes] [-P|--partial] [-v|--verbose] [--version]
Physical Volume (PV)
Pour créer le PV il convient d'utiliser la commande pvcreate :
[root@centos7 ~]# pvcreate /dev/sda6 /dev/sda7 /dev/sda9 Physical volume "/dev/sda6" successfully created Physical volume "/dev/sda7" successfully created Physical volume "/dev/sda9" successfully created
Les options de la commande pvcreate sont :
[root@centos7 ~]# pvcreate --help pvcreate: Initialize physical volume(s) for use by LVM pvcreate [--norestorefile] [--restorefile file] [--commandprofile ProfileName] [-d|--debug] [-f[f]|--force [--force]] [-h|-?|--help] [--labelsector sector] [-M|--metadatatype 1|2] [--pvmetadatacopies #copies] [--bootloaderareasize BootLoaderAreaSize[bBsSkKmMgGtTpPeE]] [--metadatasize MetadataSize[bBsSkKmMgGtTpPeE]] [--dataalignment Alignment[bBsSkKmMgGtTpPeE]] [--dataalignmentoffset AlignmentOffset[bBsSkKmMgGtTpPeE]] [--setphysicalvolumesize PhysicalVolumeSize[bBsSkKmMgGtTpPeE] [-t|--test] [-u|--uuid uuid] [-v|--verbose] [-y|--yes] [-Z|--zero {y|n}] [--version] PhysicalVolume [PhysicalVolume...]
Pour visualiser le PV il convient d'utiliser la commande pvdisplay :
[root@centos7 ~]# pvdisplay /dev/sda6 /dev/sda7 /dev/sda9 "/dev/sda6" is a new physical volume of "200.00 MiB" --- NEW Physical volume --- PV Name /dev/sda6 VG Name PV Size 200.00 MiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID 9o7SOM-NU2B-dKzi-crvR-rJej-kw2O-QtY0t5 "/dev/sda9" is a new physical volume of "400.00 MiB" --- NEW Physical volume --- PV Name /dev/sda9 VG Name PV Size 400.00 MiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID vu7nY2-ac3k-Hp19-gFVQ-ny0I-sZoY-Sykbcw "/dev/sda7" is a new physical volume of "300.00 MiB" --- NEW Physical volume --- PV Name /dev/sda7 VG Name PV Size 300.00 MiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID HpElCF-L3x7-pjnl-IgmA-CeNc-ZBCu-5sk3AZ
Les options de la commande pvdisplay sont :
[root@centos7 ~]# pvdisplay --help pvdisplay: Display various attributes of physical volume(s) pvdisplay [-c|--colon] [--commandprofile ProfileName] [-d|--debug] [-h|--help] [--ignorelockingfailure] [--ignoreskippedcluster] [-m|--maps] [--nosuffix] [--readonly] [-s|--short] [--units hHbBsSkKmMgGtTpPeE] [-v|--verbose] [--version] [PhysicalVolumePath [PhysicalVolumePath...]] pvdisplay --columns|-C [--aligned] [-a|--all] [--binary] [--commandprofile ProfileName] [-d|--debug] [-h|--help] [--ignorelockingfailure] [--ignoreskippedcluster] [--noheadings] [--nosuffix] [-o|--options [+]Field[,Field]] [-O|--sort [+|-]key1[,[+|-]key2[,...]]] [-S|--select Selection] [--readonly] [--separator Separator] [--unbuffered] [--units hHbBsSkKmMgGtTpPeE] [-v|--verbose] [--version] [PhysicalVolumePath [PhysicalVolumePath...]]
Volume Group (VG) et Physical Extent (PE)
Pour créer un Volume Group dénommé vg0, il convient d'utiliser la commande vgcreate :
[root@centos7 ~]# vgcreate -s 8M vg0 /dev/sda6 /dev/sda7 /dev/sda9 Volume group "vg0" successfully created
Les options de la commande vgcreate sont :
[root@centos7 ~]# vgcreate --help vgcreate: Create a volume group vgcreate [-A|--autobackup {y|n}] [--addtag Tag] [--alloc AllocationPolicy] [-c|--clustered {y|n}] [--commandprofile ProfileName] [-d|--debug] [-h|--help] [-l|--maxlogicalvolumes MaxLogicalVolumes] [--metadataprofile ProfileName] [-M|--metadatatype 1|2] [--[vg]metadatacopies #copies] [-p|--maxphysicalvolumes MaxPhysicalVolumes] [-s|--physicalextentsize PhysicalExtentSize[bBsSkKmMgGtTpPeE]] [-t|--test] [-v|--verbose] [--version] [-y|--yes] [ PHYSICAL DEVICE OPTIONS ] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
Pour afficher les informations concernant vg0, il convient d'utiliser la commande vgdisplay :
[root@centos7 ~]# 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 OQ3Moh-KXD8-Ca2H-B3ry-imT8-e4SG-NYSHwi
Les options de la commande vgdisplay sont :
[root@centos7 ~]# vgdisplay --help vgdisplay: Display volume group information vgdisplay [-A|--activevolumegroups] [-c|--colon | -s|--short | -v|--verbose] [--commandprofile ProfileName] [-d|--debug] [-h|--help] [--ignorelockingfailure] [--ignoreskippedcluster] [--nosuffix] [-P|--partial] [--readonly] [--units hHbBsSkKmMgGtTpPeE] [--version] [VolumeGroupName [VolumeGroupName...]] vgdisplay --columns|-C [--aligned] [--binary] [--commandprofile ProfileName] [-d|--debug] [-h|--help] [--ignorelockingfailure] [--ignoreskippedcluster] [--noheadings] [--nosuffix] [-o|--options [+]Field[,Field]] [-O|--sort [+|-]key1[,[+|-]key2[,...]]] [-P|--partial] [-S|--select Selection] [--readonly] [--separator Separator] [--unbuffered] [--units hHbBsSkKmMgGtTpPeE] [--verbose] [--version] [VolumeGroupName [VolumeGroupName...]]
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@centos7 ~]# lvcreate -L 350 -n lv0 vg0 Rounding up size to full physical extent 352.00 MiB Logical volume "lv0" created.
Notez que la taille du LV est un multiple du PE.
Les options de la commande lvcreate sont :
[root@centos7 ~]# lvcreate --help lvcreate: Create a logical volume lvcreate [-A|--autobackup {y|n}] [-a|--activate [a|e|l]{y|n}] [--addtag Tag] [--alloc AllocationPolicy] [-H|--cache [--cachemode {writeback|writethrough}] [--cachepool CachePoolLogicalVolume{Name|Path}] [-c|--chunksize ChunkSize] [-C|--contiguous {y|n}] [--commandprofile ProfileName] [-d|--debug] [-h|-?|--help] [--errorwhenfull {y|n}] [--ignoremonitoring] [--monitor {y|n}] [-i|--stripes Stripes [-I|--stripesize StripeSize]] [-k|--setactivationskip {y|n}] [-K|--ignoreactivationskip] {-l|--extents LogicalExtentsNumber[%{VG|PVS|FREE}] | -L|--size LogicalVolumeSize[bBsSkKmMgGtTpPeE]} [-M|--persistent {y|n}] [-j|--major major] [--minor minor] [--metadataprofile ProfileName] [-m|--mirrors Mirrors [--nosync] [{--mirrorlog {disk|core|mirrored}|--corelog}]] [-n|--name LogicalVolumeName] [--noudevsync] [-p|--permission {r|rw}] [--poolmetadatasize MetadataSize[bBsSkKmMgG]] [--poolmetadataspare {y|n}]] [--[raid]minrecoveryrate Rate] [--[raid]maxrecoveryrate Rate] [-r|--readahead {ReadAheadSectors|auto|none}] [-R|--regionsize MirrorLogRegionSize] [-T|--thin [--discards {ignore|nopassdown|passdown}] [--thinpool ThinPoolLogicalVolume{Name|Path}] [-t|--test] [--type VolumeType] [-v|--verbose] [-W|--wipesignatures {y|n}] [-Z|--zero {y|n}] [--version] VolumeGroupName [PhysicalVolumePath...] lvcreate { {-s|--snapshot} OriginalLogicalVolume[Path] | [-s|--snapshot] VolumeGroupName[Path] -V|--virtualsize VirtualSize} {-H|--cache} VolumeGroupName[Path][/OriginalLogicalVolume] {-T|--thin} VolumeGroupName[Path][/PoolLogicalVolume] -V|--virtualsize VirtualSize} [-A|--autobackup {y|n}] [--addtag Tag] [--alloc AllocationPolicy] [--cachepolicy Policy] [--cachesettings Key=Value] [-c|--chunksize] [-C|--contiguous {y|n}] [--commandprofile ProfileName] [-d|--debug] [--discards {ignore|nopassdown|passdown}] [-h|-?|--help] [--ignoremonitoring] [--monitor {y|n}] [-i|--stripes Stripes [-I|--stripesize StripeSize]] [-k|--setactivationskip {y|n}] [-K|--ignoreactivationskip] {-l|--extents LogicalExtentsNumber[%{VG|FREE|ORIGIN}] | -L|--size LogicalVolumeSize[bBsSkKmMgGtTpPeE]} [--poolmetadatasize MetadataVolumeSize[bBsSkKmMgG]] [-M|--persistent {y|n}] [-j|--major major] [--minor minor] [--metadataprofile ProfileName] [-n|--name LogicalVolumeName] [--noudevsync] [-p|--permission {r|rw}] [-r|--readahead ReadAheadSectors|auto|none] [-t|--test] [{--thinpool ThinPoolLogicalVolume[Path] | --cachepool CachePoolLogicalVolume[Path]}] [-v|--verbose] [--version] [PhysicalVolumePath...]
Créez maintenant un répertoire dans /mnt pour monter lv0 :
[root@centos7 ~]# mkdir /mnt/lvm
Créez un système de fichiers en ext3 sur /dev/vg0/lv0 :
[root@centos7 ~]# mke2fs -j /dev/vg0/lv0 mke2fs 1.42.9 (28-Dec-2013) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 90112 inodes, 360448 blocks 18022 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=67633152 44 block groups 8192 blocks per group, 8192 fragments per group 2048 inodes per group 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@centos7 ~]# 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@centos7 ~]# cp -a /home /mnt/lvm
Constatez ensuite le contenu de /mnt/lvm :
[root@centos7 ~]# ls -l /mnt/lvm total 14 drwxr-xr-x. 5 root root 1024 Oct 15 18:27 home drwx------. 2 root root 12288 Oct 20 18:24 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@centos7 ~]# df -h /mnt/lvm Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg0-lv0 333M 50M 266M 16% /mnt/lvm
Dans la cas de notre exemple, la taille est de 333 Mo avec 50 Mo occupé.
LAB #4 - Etendre un Volume Logique à Chaud
Pour agrandir un volume logique, le paquet lvm2 contient les commandes lvextend et resize2fs :
[root@centos7 ~]# 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 lv0 successfully resized
Notez que l'agrandissement du volume est un multiple du PE.
Les options de la commande lvextend sont :
[root@centos7 ~]# lvextend --help lvextend: Add space to a logical volume lvextend [-A|--autobackup y|n] [--alloc AllocationPolicy] [--commandprofile ProfileName] [-d|--debug] [-f|--force] [-h|--help] [-i|--stripes Stripes [-I|--stripesize StripeSize]] {-l|--extents [+]LogicalExtentsNumber[%{VG|LV|PVS|FREE|ORIGIN}] | -L|--size [+]LogicalVolumeSize[bBsSkKmMgGtTpPeE]} --poolmetadatasize [+]MetadataVolumeSize[bBsSkKmMgG]} [-m|--mirrors Mirrors] [--nosync] [--use-policies] [-n|--nofsck] [--noudevsync] [-r|--resizefs] [-t|--test] [--type VolumeType] [-v|--verbose] [--version] LogicalVolume[Path] [ PhysicalVolumePath... ]
Le volume ayant été agrandi, il est necessaire maintenant d'agrandir le filesystem qui s'y trouve :
[root@centos7 ~]# resize2fs /dev/vg0/lv0 resize2fs 1.42.9 (28-Dec-2013) 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 blocks long.
Constatez maintenant la modification de la taille du volume :
[root@centos7 ~]# df -h /mnt/lvm Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg0-lv0 434M 51M 362M 13% /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@centos7 ~]# dd if=/dev/zero of=/mnt/lvm/10M bs=1048576 count=10 10+0 records in 10+0 records out 10485760 bytes (10 MB) copied, 0.044034 s, 238 MB/s
Créez maintenant un snapshot :
[root@centos7 ~]# lvcreate -s -L 65M -n testsnap /dev/vg0/lv0 Rounding up size to full physical extent 72.00 MiB Logical volume "testsnap" created.
Pour avoir une confirmation de la création du snapshot, utilisez la commande lvs :
[root@centos7 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv0 vg0 owi-aos--- 456.00m testsnap vg0 swi-a-s--- 72.00m lv0 0.02
Notez que le snapshot est créé dans le même VG que le LV d'origine.
Les options de la commande lvs sont :
[root@centos7 ~]# lvs --help lvs: Display information about logical volumes lvs [-a|--all] [--aligned] [--binary] [--commandprofile ProfileName] [-d|--debug] [-h|--help] [--ignorelockingfailure] [--ignoreskippedcluster] [--nameprefixes] [--noheadings] [--nosuffix] [-o|--options [+]Field[,Field]] [-O|--sort [+|-]key1[,[+|-]key2[,...]]] [-P|--partial] [--readonly] [--rows] [--segments] [-S|--select Selection] [--separator Separator] [--trustcache] [--unbuffered] [--units hHbBsSkKmMgGtTpPeE] [--unquoted] [-v|--verbose] [--version] [LogicalVolume[Path] [LogicalVolume[Path]...]]
Créez maintenant un répertoire pour monter le snapshot :
[root@centos7 ~]# mkdir /mnt/testsnap
Montez le snapshot :
[root@centos7 ~]# mount /dev/vg0/testsnap /mnt/testsnap
Comparez le volume d'origine et le snapshot :
[root@centos7 ~]# ls -l /mnt/lvm total 10296 -rw-r--r--. 1 root root 10485760 Oct 20 18:53 10M drwxr-xr-x. 5 root root 1024 Oct 15 18:27 home drwx------. 2 root root 12288 Oct 20 18:24 lost+found [root@centos7 ~]# ls -l /mnt/testsnap total 10296 -rw-r--r--. 1 root root 10485760 Oct 20 18:53 10M drwxr-xr-x. 5 root root 1024 Oct 15 18:27 home drwx------. 2 root root 12288 Oct 20 18:24 lost+found
Supprimez maintenant le fichier 10M de votre volume d'origine :
[root@centos7 ~]# rm /mnt/lvm/10M rm: remove regular file ‘/mnt/lvm/10M’? y
Constatez le résultat de cette suppression :
[root@centos7 ~]# df -Ph /mnt/lvm Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg0-lv0 434M 51M 362M 12% /mnt/lvm [root@centos7 ~]# df -Ph /mnt/testsnap Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg0-testsnap 434M 61M 352M 15% /mnt/testsnap [root@centos7 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv0 vg0 owi-aos--- 456.00m testsnap vg0 swi-aos--- 72.00m lv0 0.04
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@centos7 ~]# umount /mnt/testsnap/ [root@centos7 ~]# lvremove /dev/vg0/testsnap Do you really want to remove active logical volume testsnap? [y/n]: y Logical volume "testsnap" successfully removed [root@centos7 ~]# umount /mnt/lvm [root@centos7 ~]# lvremove /dev/vg0/lv0 Do you really want to remove active logical volume lv0? [y/n]: y Logical volume "lv0" successfully removed
Notez que cette opération necéssite à ce que le volume logique soit démonté.
Les options de la commande lvremove sont :
[root@centos7 ~]# lvremove --help lvremove: Remove logical volume(s) from the system lvremove [-A|--autobackup y|n] [--commandprofile ProfileName] [-d|--debug] [-f|--force] [-h|--help] [--noudevsync] [-t|--test] [-v|--verbose] [--version] LogicalVolume[Path] [LogicalVolume[Path]...]
Le Volume Group peut aussi être supprimé :
[root@centos7 ~]# vgremove vg0 Volume group "vg0" successfully removed
Les options de la commande vgremove sont :
[root@centos7 ~]# vgremove --help vgremove: Remove volume group(s) vgremove [--commandprofile ProfileName] [-d|--debug] [-f|--force] [-h|--help] [--noudevsync] [-t|--test] [-v|--verbose] [--version] VolumeGroupName [VolumeGroupName...]
Ainsi que le volume physique :
[root@centos7 ~]# pvremove /dev/sda6 /dev/sda7 /dev/sda9 Labels on physical volume "/dev/sda6" successfully wiped Labels on physical volume "/dev/sda7" successfully wiped Labels on physical volume "/dev/sda9" successfully wiped
Les options de la commande pvremove sont :
[root@centos7 ~]# pvremove --help pvremove: Remove LVM label(s) from physical volume(s) pvremove [--commandprofile ProfileName] [-d|--debug] [-f[f]|--force [--force]] [-h|-?|--help] [-t|--test] [-v|--verbose] [--version] [-y|--yes] PhysicalVolume [PhysicalVolume...]
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@centos7 ~]# fdisk -l Disk /dev/sda: 21.5 GB, 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 Disk label type: dos Disk identifier: 0x000f2006 Device Boot Start End Blocks Id System /dev/sda1 * 2048 411647 204800 83 Linux /dev/sda2 411648 14747647 7168000 83 Linux /dev/sda3 14747648 20891647 3072000 82 Linux swap / Solaris /dev/sda4 20891648 41943039 10525696 5 Extended /dev/sda5 20893696 21917695 512000 fd Linux raid autodetect /dev/sda6 21919744 22329343 204800 8e Linux LVM /dev/sda7 22331392 22945791 307200 8e Linux LVM /dev/sda8 22947840 23971839 512000 fd Linux raid autodetect /dev/sda9 23973888 24793087 409600 8e Linux LVM /dev/sda10 24795136 25819135 512000 fd Linux raid autodetect /dev/sda11 25821184 26845183 512000 fd Linux raid autodetect /dev/sda12 26847232 27256831 204800 83 Linux Disk /dev/mapper/vg0-lv1: 109 MB, 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: 117 MB, 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
Dans le cas de RHEL/CentOS 7, il s'agit de /dev/sda12.
Sous RHEL/CentOS créez un filesystem Ext3 sur /dev/sda12 en utilisant la commande mke2fs -j :
[root@centos7 ~]# mke2fs -j /dev/sda12 mke2fs 1.42.9 (28-Dec-2013) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 51200 inodes, 204800 blocks 10240 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=67371008 25 block groups 8192 blocks per group, 8192 fragments per group 2048 inodes per group 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@centos7 ~]# 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] [-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] [-jnqvDFKSV] 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 #7 - 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@centos7 ~]# dumpe2fs -h /dev/sda12 dumpe2fs 1.42.9 (28-Dec-2013) Filesystem volume name: <none> Last mounted on: <not available> Filesystem UUID: ee905f90-e7cd-41a0-aa75-a3eb9e94b183 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype sparse_super 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: Thu Oct 22 11:40:33 2015 Last mount time: n/a Last write time: Thu Oct 22 11:40:33 2015 Mount count: 0 Maximum mount count: -1 Last checked: Thu Oct 22 11:40:33 2015 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: 454137e5-3ce9-40c9-911b-d4274808d86f Journal backup: inode blocks Journal features: (none) Journal size: 4113k 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@centos7 ~]# dumpe2fs --help dumpe2fs 1.42.9 (28-Dec-2013) dumpe2fs: invalid option -- '-' Usage: dumpe2fs [-bfhixV] [-o superblock=<num>] [-o blocksize=<num>] device
Pour supprimer Ext3 sur cette partition, il convient d'utiliser la commande tune2fs
[root@centos7 ~]# tune2fs -O ^has_journal /dev/sda12 tune2fs 1.42.9 (28-Dec-2013)
Les options de cette commande sont :
[root@centos7 ~]# tune2fs --help tune2fs 1.42.9 (28-Dec-2013) tune2fs: invalid option -- '-' Usage: tune2fs [-c max_mounts_count] [-e errors_behavior] [-g group] [-i interval[d|m|w]] [-j] [-J journal_options] [-l] [-m reserved_blocks_percent] [-o [^]mount_options[,...]] [-p mmp_update_interval] [-r reserved_blocks_count] [-u user] [-C mount_count] [-L volume_label] [-M last_mounted_dir] [-O [^]feature[,...]] [-E extended-option[,...]] [-T last_check_time] [-U UUID] [ -I new_inode_size ] device
Constatez le résultat de cette commande :
[root@centos7 ~]# dumpe2fs -h /dev/sda12 dumpe2fs 1.42.9 (28-Dec-2013) Filesystem volume name: <none> Last mounted on: <not available> Filesystem UUID: ee905f90-e7cd-41a0-aa75-a3eb9e94b183 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: ext_attr resize_inode dir_index filetype sparse_super 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: Thu Oct 22 11:40:33 2015 Last mount time: n/a Last write time: Thu Oct 22 11:43:18 2015 Mount count: 0 Maximum mount count: -1 Last checked: Thu Oct 22 11:40:33 2015 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: 454137e5-3ce9-40c9-911b-d4274808d86f Journal backup: inode blocks
Important : Notez que le drapeau Filesystem features: has_journal … a été supprimé.
Supprimez maintenant l'inode du journal :
[root@centos7 ~]# fsck /dev/sda12 fsck from util-linux 2.23.2 e2fsck 1.42.9 (28-Dec-2013) /dev/sda12: clean, 11/51200 files, 8013/204800 blocks
Sous RHEL/CentOS, créez un point de montage pour /dev/sda12 :
[root@centos7 ~]# mkdir /mnt/sda12
Sous RHEL/CentOS, essayez de monter /dev/sda12 en tant que système de fichiers Ext3. Vous obtiendrez un résultat similaire à celui-ci :
[root@centos7 ~]# mount -t ext3 /dev/sda12 /mnt/sda12 mount: wrong fs type, bad option, bad superblock on /dev/sda12, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so.
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@centos7 ~]# mount -t ext2 /dev/sda12 /mnt/sda12 [root@centos7 ~]#
LAB #8 - Convertir un Système de Fichiers Ext2 en Ext3
Sous RHEL/CentOS, pour replacer le journal sur /dev/sda12, il convient d'utiliser la commande tune2fs :
[root@centos7 ~]# umount /mnt/sda12 [root@centos7 ~]# tune2fs -j /dev/sda12 tune2fs 1.42.9 (28-Dec-2013) Creating journal inode: done
Important : Notez que vous avez du démonter la partition avant d'exécuter la commande tune2fs.
LAB #9 - 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.
Dans votre VM RHEL/CentOS, créez un système de fichiers sur /dev/sda11 :
[root@centos7 ~]# mke2fs -O journal_dev /dev/sda11 mke2fs 1.42.9 (28-Dec-2013) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 0 inodes, 512000 blocks 0 blocks (0.00%) reserved for the super user First data block=1 0 block group 8192 blocks per group, 8192 fragments per group 0 inodes per group Superblock backups stored on blocks: Zeroing journal device: [root@centos7 ~]#
Important : Notez l'utilisation de l'option -O.
Sous RHEL/CentOS, créez maintenant un système de fichiers Ext3 sur /dev/sda12 en plaçant le journal sur /dev/sda11 :
[root@centos7 ~]# mke2fs -j -J device=/dev/sda11 /dev/sda12 mke2fs 1.42.9 (28-Dec-2013) Using journal device's blocksize: 1024 Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 51200 inodes, 204800 blocks 10240 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=67371008 25 block groups 8192 blocks per group, 8192 fragments per group 2048 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729 Allocating group tables: done Writing inode tables: done Adding journal to device /dev/sda11: done Writing superblocks and filesystem accounting information: done
Important : Notez que le journal a été placé sur /dev/sda11 graĉe à l'utilisation de l'option -J.
LAB #10 - Modifier la Fréquence de Vérification du Système de Fichiers Ext3
Sous RHEL/CentOS, pour modifiez la fréquence de vérification du système de fichiers sur /dev/sda12, il convient d'utiliser soit l'option -c, soit l'option -i :
[root@centos7 ~]# tune2fs -i 100d /dev/sda12 tune2fs 1.42.9 (28-Dec-2013) 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@centos7 ~]# dumpe2fs /dev/sda12 | grep UUID dumpe2fs 1.42.9 (28-Dec-2013) Filesystem UUID: 80e060ac-f2d1-4e6d-8c56-0ac0baf5bcfc Journal UUID: 58cd37e9-b8d6-40c6-b14d-743f5c0020de
Ext4
Le système de fichiers Ext4 fut 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 #11 - Créer un Système de Fichiers Ext4
Sous RHEL/CentOS, créez un système de fichiers Ext4 sur /dev/sda11 :
[root@centos7 ~]# mkfs.ext4 /dev/sda11 mke2fs 1.42.9 (28-Dec-2013) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 128016 inodes, 512000 blocks 25600 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=34078720 63 block groups 8192 blocks per group, 8192 fragments per group 2032 inodes per group 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@centos7 ~]# 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] [-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] [-jnqvDFKSV] device [blocks-count]
Consultez maintenant les caractéristiques du système de fichier :
[root@centos7 ~]# dumpe2fs /dev/sda11 | more dumpe2fs 1.42.9 (28-Dec-2013) Filesystem volume name: <none> Last mounted on: <not available> Filesystem UUID: 6300bd45-458a-40bd-a994-20c8fb202d93 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super huge_file uninit_bg dir_nlink extra_i size 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 Blocks per group: 8192 Fragments per group: 8192 Inodes per group: 2032 Inode blocks per group: 254 Flex block group size: 16 Filesystem created: Thu Oct 22 11:51:48 2015 --More--
LAB #12 - Ajouter une Etiquette au Système de Fichiers Ext4
Utilisez la commande e2label pour associer une étiquette au système de fichiers :
[root@centos7 ~]# e2label /dev/sda11 my_ext4 [root@centos7 ~]# dumpe2fs /dev/sda11 | more dumpe2fs 1.42.9 (28-Dec-2013) Filesystem volume name: my_ext4 Last mounted on: <not available> Filesystem UUID: 6300bd45-458a-40bd-a994-20c8fb202d93 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super huge_file uninit_bg dir_nlink extra_i size 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 Blocks per group: 8192 Fragments per group: 8192 Inodes per group: 2032 Inode blocks per group: 254 Flex block group size: 16 Filesystem created: Thu Oct 22 11:51:48 2015 --More--
Important - Notez que l'étiquette doit être de 16 caractères maximum.
Sous RHEL/CentOS, créez un point de montage dans /mnt et essayez de monter /dev/sda11 en tant qu'Ext3 :
[root@centos7 ~]# mkdir /mnt/sda11 [root@centos7 ~]# mount -t ext3 /dev/sda11 /mnt/sda11 mount: wrong fs type, bad option, bad superblock on /dev/sda11, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so.
Important - Notez l'erreur qui est signalée.
Montez de nouveau la partition sans stipuler le type de système de fichiers :
[root@centos7 ~]# mount /dev/sda11 /mnt/sda11 [root@centos7 ~]# mount | grep sda11 /dev/sda11 on /mnt/sda11 type ext4 (rw,relatime,seclabel,data=ordered)
Important - Constatez que la partition a été monté en tant qu'Ext4.
LAB #13 - Convertir un Système de Fichiers Ext3 en Ext4
Créez un système de fichiers ext3 sur /dev/sda12 :
[root@centos7 ~]# mkfs.ext3 /dev/sda12 mke2fs 1.42.9 (28-Dec-2013) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 51200 inodes, 204800 blocks 10240 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=67371008 25 block groups 8192 blocks per group, 8192 fragments per group 2048 inodes per group 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/sda12 sur /mnt/sda12 :
[root@centos7 ~]# mount /dev/sda12 /mnt/sda12 [root@centos7 ~]# ls -l /mnt/sda12 total 12 drwx------. 2 root root 12288 Oct 22 11:57 lost+found
Créez le fichier /mnt/sda12/check_file :
[root@centos7 ~]# touch /mnt/sda12/check_file
Injectez la chaine check file dans le fichier /mnt/sda12/check_file puis démontez /dev/sda12 :
[root@centos7 ~]# echo "check file" > /mnt/sda12/check_file [root@centos7 ~]# umount /dev/sda12
Exécutez e2fsck sur /dev/sda12 :
[root@centos7 ~]# e2fsck /dev/sda12 e2fsck 1.42.9 (28-Dec-2013) /dev/sda12: clean, 12/51200 files, 12128/204800 blocks
Convertissez /dev/sda12 en Ext4 :
[root@centos7 ~]# tune2fs -O extents,uninit_bg,dir_index /dev/sda12 tune2fs 1.42.9 (28-Dec-2013)
Optimisez le système de fichiers :
[root@centos7 ~]# e2fsck -fDC0 /dev/sda12 e2fsck 1.42.9 (28-Dec-2013) 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/sda12: ***** FILE SYSTEM WAS MODIFIED ***** /dev/sda12: 12/51200 files (0.0% non-contiguous), 12128/204800 blocks
Essayez de monter /dev/sda12 en tant qu'Ext3 :
[root@centos7 ~]# mount -t ext3 /dev/sda12 /mnt/sda12 mount: wrong fs type, bad option, bad superblock on /dev/sda12, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so.
Montez /dev/sda12 sans spécifier le type de fichiers Ext3 et vérifiez le contenu du fichier check_file :
[root@centos7 ~]# mount /dev/sda12 /mnt/sda12 [root@centos7 ~]# ls -l /mnt/sda12 total 14 -rw-r--r--. 1 root root 11 Oct 22 11:59 check_file drwx------. 2 root root 12288 Oct 22 11:57 lost+found [root@centos7 ~]# cat /mnt/sda12/check_file check file
Dernièrement, pour obtenir seul l'UUID du système de fichiers, utilisez les commandes dumpe2fs et grep :
[root@centos7 ~]# dumpe2fs /dev/sda11 | grep UUID dumpe2fs 1.42.9 (28-Dec-2013) Filesystem UUID: 6300bd45-458a-40bd-a994-20c8fb202d93 [root@centos7 ~]# dumpe2fs /dev/sda12 | grep UUID dumpe2fs 1.42.9 (28-Dec-2013) Filesystem UUID: 090106dc-6331-41fe-aab6-0e9138af8f9e
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 7.
Debian propose aussi une version 32 bits du système de fichiers XFS.
Pour plus d'informations concernant XFS, consultez cette page.
LAB #14 - Créer un Système de Fichiers XFS
Démontez /dev/sda12 :
SUSE12SP1:~ # umount /dev/sda12
Créez un système de fichiers XFS sur la partition /dev/sda12 :
[root@centos7 ~]# mkfs.xfs /dev/sda12 mkfs.xfs: /dev/sda12 appears to contain an existing filesystem (ext4). mkfs.xfs: Use the -f option to force overwrite. [root@centos7 ~]# mkfs.xfs -f /dev/sda12 meta-data=/dev/sda12 isize=256 agcount=4, agsize=12800 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0 data = bsize=4096 blocks=51200, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal log bsize=4096 blocks=853, 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@centos7 ~]# mkfs.xfs --help mkfs.xfs: invalid option -- '-' unknown option -- Usage: mkfs.xfs /* blocksize */ [-b log=n|size=num] /* metadata */ [-m crc=0|1,finobt=0|1] /* data subvol */ [-d agcount=n,agsize=n,file,name=xxx,size=num, (sunit=value,swidth=value|su=num,sw=num|noalign), sectlog=n|sectsize=num /* force overwrite */ [-f] /* inode size */ [-i log=n|perblock=n|size=num,maxpct=n,attr=0|1|2, projid32bit=0|1] /* no discard */ [-K] /* log subvol */ [-l agnum=n,internal,size=num,logdev=xxx,version=n sunit=value|su=num,sectlog=n|sectsize=num, lazy-count=0|1] /* label */ [-L label (maximum 12 characters)] /* naming */ [-n log=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 log=n|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@centos7 ~]# xfs_info /dev/sda12 xfs_info: /dev/sda12 is not a mounted XFS filesystem [root@centos7 ~]# mkdir /mnt/sda12 [root@centos7 ~]# mount -t xfs /dev/sda12 /mnt/sda12 [root@centos7 ~]# xfs_info /dev/sda12 meta-data=/dev/sda12 isize=256 agcount=4, agsize=12800 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0 data = bsize=4096 blocks=51200, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal bsize=4096 blocks=853, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
Notez que la partition XFS doit être monté pour pouvoir utiliser la commande xfs_info.
Les options de cette commande sont :
[root@centos7 ~]# xfs_info --help /sbin/xfs_info: illegal option -- - Usage: xfs_info [-V] [-t mtab] mountpoint
LAB #15 - Ajouter une Etiquette au Système de Fichiers XFS
Utilisez la commande xfs_admin pour associer une étiquette au système de fichiers :
[root@centos7 ~]# xfs_admin -L my_xfs /dev/sda12 xfs_admin: /dev/sda12 contains a mounted filesystem fatal error -- couldn't initialize XFS library [root@centos7 ~]# umount /dev/sda12 [root@centos7 ~]# xfs_admin -L my_xfs /dev/sda12 writing all SBs new label = "my_xfs"
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@centos7 ~]# xfs_admin -l /dev/sda12 label = "my_xfs"
Notez que l'étiquette doit être de 12 caractères maximum.
Les options de cette commande sont :
[root@centos7 ~]# xfs_admin --help /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@centos7 ~]# xfs_admin -u /dev/sda12 UUID = 15db1b62-0866-4aa4-9ac1-3ac325a4e20f
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 |
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@centos7 ~]# swapon -s Filename Type Size Used Priority /dev/sda3 partition 3071996 0 -1
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@centos7 ~]# swapon --help Usage: swapon [options] [<spec>] 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 -p, --priority <prio> specify the priority of the swap device -s, --summary display summary about used swap devices --show[=<columns>] display summary in definable table --noheadings don't print headings, use with --show --raw use the raw output format, use with --show --bytes display swap size in bytes in --show output -v, --verbose verbose mode -h, --help display this help and exit -V, --version output version information and exit 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. (swapon) pages : discard freed pages before they are reused. * if no policy is selected both discard types are enabled. (default) Available columns (for --show): NAME device file or partition path TYPE type of the device SIZE size of the swap area USED bytes in use PRIO swap priority 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/sda3. Pour la désactiver, il convient de saisir la commande suivante :
[root@centos7 ~]# swapoff /dev/sda3 [root@centos7 ~]# swapon -s [root@centos7 ~]#
Options de la Commande
[root@centos7 ~]# swapoff --help Usage: swapoff [options] [<spec>] Options: -a, --all disable all swaps from /proc/swaps -v, --verbose verbose mode -h, --help display this help and exit -V, --version output version information and exit 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 #16 - 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@centos7 ~]# dd if=/dev/zero of=/swap bs=1024k count=256 256+0 records in 256+0 records out 268435456 bytes (268 MB) copied, 0.263327 s, 1.0 GB/s
Pour préparer le fichier en tant qu'espace de swap, saisissez la commande suivante :
[root@centos7 ~]# mkswap /swap Setting up swapspace version 1, size = 262140 KiB no label, UUID=30b30bab-19b2-42f5-bec7-8a6f9eca1b3c
Pour activer le fichier avec une priorité de 3, saisissez la commande suivante :
[root@centos7 ~]# swapon -p3 /swap swapon: /swap: insecure permissions 0644, 0600 suggested. [root@centos7 ~]# swapon /dev/sda3
Pour visualiser les éspaces swap, saisissez la commande suivante :
[root@centos7 ~]# swapon -s Filename Type Size Used Priority /swap file 262140 0 3 /dev/sda3 partition 3071996 0 -1
Important : Le fichier de swap ayant une priorité de 3 sera utilisé avant la partition de swap ayant une priorité de -1.
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@centos7 ~]# swapoff /swap [root@centos7 ~]# swapon -s Filename Type Size Used Priority /dev/sda3 partition 3071996 0 -1
Supprimez maintenant le fichier de swap :
[root@centos7 ~]# rm /swap rm: remove regular file ‘/swap’? o
Gestion des Droits
Dans sa conception de base, Linux utilise une approche sécurité de type DAC. Cette approche est maintenue dans la mise en place et l'utilisation des ACL et les Attributs Etendus Ext2/Ext3/Ext4, JFS, ReiserFS, XFS et Btrfs :
Type de Sécurité | Nom | Description |
---|---|---|
DAC | Discretional Access Control | L'accès aux objets est en fonction de l'identité (utilisateur,groupe). Un utilisateur peut rendre accessible aux autres ses propres objets. |
Préparation
Dans votre répertoire personnel, créez un fichier tux.jpg grâce à la commande touch:
$ touch tux.jpg [Entrée]
[trainee@centos7 ~]$ pwd /home/trainee [trainee@centos7 ~]$ touch tux.jpg [trainee@centos7 ~]$ ls -l | grep tux.jpg -rw-rw-r--. 1 trainee trainee 0 Oct 20 07:21 tux.jpg
Important : Notez que le fichier créé est un fichier texte. En effet, Linux ne tient pas compte de l'extension .jpg
Les Droits Unix Simples
Les autorisations ou droits d’accès en Linux sont communiqués comme suit :
ou r = lecture, w = écriture et x = exécutable
Dans chaque inode est stocké le numéro de l’utilisateur à qui appartient le fichier concerné ainsi que le numéro du groupe. Quand le fichier est ouvert le système compare le numéro de l’utilisateur (UID) avec le numéro de l’utilisateur stocké dans l’inode ( Utilisateur de Référence ). Si ces deux numéros sont identiques, l’utilisateur obtient les droits du propriétaire du fichier. Si les numéros diffèrent, le système vérifie si l’utilisateur est dans le groupe référencé dans l’inode. Si oui, l’utilisateur aura les droits spécifiés pour le groupe. Si aucune condition n’est remplie, l’utilisateur se voit attribuer les droits des «autres».
Les droits pour les répertoires sont légèrement différents :
r | Les éléments du répertoire sont accessible en lecture ( lister ) |
---|---|
w | Les éléments du répertoire sont modifiables ( création et suppression ). |
x | Le nom du répertoire peut apparaître dans un chemin d'accès. |
La Modification des Droits
La Commande chmod
Mode Symbolique
Afin de modifier les droits d’accès aux fichiers, on utilise la commande chmod dont le syntaxe est le suivant :
chmod [ -R ] catégorie opérateur permissions nom_du_fichier
ou
chmod [ -R ] ugoa +-= rwxXst nom_du_fichier
où
u | user |
---|---|
g | group |
o | other |
a | all |
+ | autorise un accès |
- | interdit un accès |
= | autorise exclusivement l’accès indiqué |
r | read |
w | write |
x | execute |
X | exécution si la cible est un répertoire ou si c'est un fichier est déjà exécutable pour une des catégories (ugo) |
s | SUID/SGID bit |
t | sticky bit |
par exemple :
$ chmod o+w tux.jpg [Entrée]
donnera aux autres l’accès en écriture sur le fichier tux.jpg :
[trainee@centos7 ~]$ chmod o+w tux.jpg [trainee@centos7 ~]$ ls -l | grep tux.jpg -rw-rw-rw-. 1 trainee trainee 0 Oct 20 07:21 tux.jpg
Tandis que :
$ chmod ug-w tux.jpg [Entrée]
ôtera les droit d’accès en écriture pour l’utilisateur et le groupe :
[trainee@centos7 ~]$ chmod ug-w tux.jpg [trainee@centos7 ~]$ ls -l | grep tux.jpg -r--r--rw-. 1 trainee trainee 0 Oct 20 07:21 tux.jpg
Important : Seul le propriétaire du fichier ou root peuvent modifier les permissions.
Mode Octal
La commande chmod peut également être utilisée avec une représentation octale ( base de 8 ). Les valeurs octales des droits d’accès sont :
Important : Ainsi les droits rwx rwx rwx correspondent à un chiffre de 777.
La commande chmod prend donc la forme suivante:
chmod [ -R ] mode_octal nom_fichier
La commande suivante :
$ chmod 644 tux.jpg [Entrée]
Correspond donc à l’attribution des droits : rw- r– r–
[trainee@centos7 ~]$ chmod 644 tux.jpg [trainee@centos7 ~]$ ls -l | grep tux.jpg -rw-r--r--. 1 trainee trainee 0 Oct 20 07:21 tux.jpg
Important : Les droits d’accès par défaut lors de la création d’un objet sont :
Répertoires | rwx rwx rwx | 777 |
---|---|---|
Fichier normal | rw– rw– rw- | 666 |
Les options de cette commande sont :
[trainee@centos7 ~]$ chmod --help Usage: chmod [OPTION]... MODE[,MODE]... FILE... or: chmod [OPTION]... OCTAL-MODE FILE... or: chmod [OPTION]... --reference=RFILE FILE... Change the mode of each FILE to MODE. With --reference, change the mode of each FILE to that of RFILE. -c, --changes like verbose but report only when a change is made -f, --silent, --quiet suppress most error messages -v, --verbose output a diagnostic for every file processed --no-preserve-root do not treat '/' specially (the default) --preserve-root fail to operate recursively on '/' --reference=RFILE use RFILE's mode instead of MODE values -R, --recursive change files and directories recursively --help display this help and exit --version output version information and exit Each MODE is of the form '[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+'. GNU coreutils online help: <http://www.gnu.org/software/coreutils/> For complete documentation, run: info coreutils 'chmod invocation'
La Commande umask
L’utilisateur peut changer sa masque de permissions défaut lors de la création d’objets en utilisant la commande umask.
La valeur par défaut de l'umask sous RHEL/CentOS est différente pour un utilisateur normal et pour root :
[trainee@centos7 ~]$ umask 0002 [trainee@centos7 ~]$ su - Password: fenestros Last login: Tue Oct 20 05:47:19 CEST 2015 on pts/0 [root@centos7 ~]# umask 0022 [root@centos7 ~]# exit logout
Par exemple dans le cas où l’utilisateur souhaite que les fichiers créés dans le futur comportent des droits d’écriture et de lecture pour l’utilisateur mais uniquement des droits de lecture pour le groupe et pour les autres, il utiliserait la commande :
$ umask 022 [Entrée]
avant de créer son fichier.
umask sert à enlever des droits des droits maximaux :
Masque maximum lors de la création d’un fichier | rw- rw- rw- | 666 |
---|---|---|
Droits à retirer | — -w- -w- | 022 |
Résultat | rw- r– r– | 644 |
Dans l'exemple qui suit, on utilise la commande touch pour créer un fichier vide ayant les nouveaux droits par défaut :
[trainee@centos7 ~]$ umask 044 [trainee@centos7 ~]$ touch tux1.jpg [trainee@centos7 ~]$ ls -l | grep tux1.jpg -rw--w--w-. 1 trainee trainee 0 Oct 20 07:38 tux1.jpg [trainee@centos7 ~]$ umask 002 [trainee@centos7 ~]$ umask 0002
Les options de cette commande sont :
[trainee@centos7 ~]$ help umask umask: umask [-p] [-S] [mode] Display or set file mode mask. Sets the user file-creation mask to MODE. If MODE is omitted, prints the current value of the mask. If MODE begins with a digit, it is interpreted as an octal number; otherwise it is a symbolic mode string like that accepted by chmod(1). Options: -p if MODE is omitted, output in a form that may be reused as input -S makes the output symbolic; otherwise an octal number is output Exit Status: Returns success unless MODE is invalid or an invalid option is given.
Modifier le propriétaire ou le groupe
Important - Le changement de propriétaire d’un fichier se fait uniquement par l'administrateur système - root.
La Commande chown
Dans le cas du fichier tux.jpg appartenant à trainee, root peut changer le propriétaire de trainee à root avec la commande suivante :
# chown root tux.jpg [Entrée]
[trainee@centos7 ~]$ su - Password: fenestros Last login: Tue Oct 20 07:35:01 CEST 2015 on pts/0 [root@centos7 ~]# cd /home/trainee [root@centos7 trainee]# chown root tux.jpg [root@centos7 trainee]# ls -l | grep tux.jpg -rw-r--r--. 1 root trainee 0 Oct 20 07:21 tux.jpg
Les options de cette commande sont :
[root@centos7 trainee]# chown --help Usage: chown [OPTION]... [OWNER][:[GROUP]] FILE... or: chown [OPTION]... --reference=RFILE FILE... Change the owner and/or group of each FILE to OWNER and/or GROUP. With --reference, change the owner and group of each FILE to those of RFILE. -c, --changes like verbose but report only when a change is made -f, --silent, --quiet suppress most error messages -v, --verbose output a diagnostic for every file processed --dereference affect the referent of each symbolic link (this is the default), rather than the symbolic link itself -h, --no-dereference affect symbolic links instead of any referenced file (useful only on systems that can change the ownership of a symlink) --from=CURRENT_OWNER:CURRENT_GROUP change the owner and/or group of each file only if its current owner and/or group match those specified here. Either may be omitted, in which case a match is not required for the omitted attribute --no-preserve-root do not treat '/' specially (the default) --preserve-root fail to operate recursively on '/' --reference=RFILE use RFILE's owner and group rather than specifying OWNER:GROUP values -R, --recursive operate on files and directories recursively The following options modify how a hierarchy is traversed when the -R option is also specified. If more than one is specified, only the final one takes effect. -H if a command line argument is a symbolic link to a directory, traverse it -L traverse every symbolic link to a directory encountered -P do not traverse any symbolic links (default) --help display this help and exit --version output version information and exit Owner is unchanged if missing. Group is unchanged if missing, but changed to login group if implied by a ':' following a symbolic OWNER. OWNER and GROUP may be numeric as well as symbolic. Examples: chown root /u Change the owner of /u to "root". chown root:staff /u Likewise, but also change its group to "staff". chown -hR root /u Change the owner of /u and subfiles to "root". GNU coreutils online help: <http://www.gnu.org/software/coreutils/> For complete documentation, run: info coreutils 'chown invocation'
La Commande chgrp
Le même cas de figure s’applique au groupe :
# chgrp root tux.jpg [Entrée]
affectera le fichier au groupe root :
[root@centos7 trainee]# chgrp root tux.jpg [root@centos7 trainee]# ls -l | grep tux.jpg -rw-r--r--. 1 root root 0 Oct 20 07:21 tux.jpg
Rappel : Seul root peut changer le propriétaire d'un fichier.
Important : Le droit de supprimer un fichier dépend des droits sur le répertoire dans lequel le fichier est stocké et non des droits du fichier lui-même.
Les options de cette commande sont :
[root@centos7 trainee]# chgrp --help Usage: chgrp [OPTION]... GROUP FILE... or: chgrp [OPTION]... --reference=RFILE FILE... Change the group of each FILE to GROUP. With --reference, change the group of each FILE to that of RFILE. -c, --changes like verbose but report only when a change is made -f, --silent, --quiet suppress most error messages -v, --verbose output a diagnostic for every file processed --dereference affect the referent of each symbolic link (this is the default), rather than the symbolic link itself -h, --no-dereference affect symbolic links instead of any referenced file (useful only on systems that can change the ownership of a symlink) --no-preserve-root do not treat '/' specially (the default) --preserve-root fail to operate recursively on '/' --reference=RFILE use RFILE's group rather than specifying a GROUP value -R, --recursive operate on files and directories recursively The following options modify how a hierarchy is traversed when the -R option is also specified. If more than one is specified, only the final one takes effect. -H if a command line argument is a symbolic link to a directory, traverse it -L traverse every symbolic link to a directory encountered -P do not traverse any symbolic links (default) --help display this help and exit --version output version information and exit Examples: chgrp staff /u Change the group of /u to "staff". chgrp -hR staff /u Change the group of /u and subfiles to "staff". GNU coreutils online help: <http://www.gnu.org/software/coreutils/> For complete documentation, run: info coreutils 'chgrp invocation'
Les Droits Unix Etendus
SUID/SGID bit
Malgré ce que vous venez de voir, dans la première des deux fenêtres ci-dessous, vous noterez que le fichier passwd se trouvant dans le répertoire /etc possède les permissions rw- r– r– et qu'il appartient à root. Autrement dit seul root peut écrire dans ce fichier. Or, quand un utilisateur normal change son mot de passe, il écrit dans ce fichier. Ceci semble donc être une contradiction.
[root@centos7 trainee]# ls -l /etc/passwd /usr/bin/passwd -rw-r--r--. 1 root root 2062 Oct 19 15:38 /etc/passwd -rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
Pour remédier à cette apparente contradiction, Linux dispose de deux droits d’accès étendus :
- Set UserID bit ( SUID bit )
- Set GroupID bit ( SGID bit )
Quand le SUID bit est placé sur un programme, l’utilisateur qui lance ce programme se voit affecté le numéro d’utilisateur du propriétaire de ce programme et ce pour la durée de son exécution.
Dans le cas du changement de mot de passe, chaque utilisateur qui lance le programme /usr/bin/passwd se trouve temporairement avec le numéro d’utilisateur du propriétaire du programme /usr/bin/passwd, c’est à dire root. De cette façon, l’utilisateur peut intervenir sur le fichier /etc/passwd. Ce droit est indiqué par la lettre s à la place de la lettre x.
La même fonction existe pour le groupe à l’aide du SGID bit.
Pour assigner les droits, vous utiliserez la commande chmod :
- chmod u+s nom_du_fichier
- chmod g+s nom_du_fichier
En base huit les valeurs sont les suivants :
- SUID = 4000
- SGID = 2000
Important : Afin d'identifier les exécutables ayant le SGID ou SUID bit, utilisez la commande suivante :
# find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls {} \; [Entrée]
Inheritance Flag
Le SGID bit peut également être affecté à un répertoire. De cette façon, les fichiers et répertoires créés à l'intérieur auront comme groupe le groupe du répertoire parent. Ce droit s'appelle donc l'Inheritance Flag ou le Drapeau d'Héritage.
Par exemple :
[root@centos7 trainee]# cd /tmp [root@centos7 tmp]# mkdir inherit [root@centos7 tmp]# chown root:trainee inherit [root@centos7 tmp]# chmod g+s inherit [root@centos7 tmp]# touch inherit/test.txt [root@centos7 tmp]# mkdir inherit/testrep [root@centos7 tmp]# cd inherit; ls -l total 0 drwxr-sr-x. 2 root trainee 6 Oct 20 07:58 testrep -rw-r--r--. 1 root trainee 0 Oct 20 07:58 test.txt
Important : Notez que malgré le fait que root a créé les deux objets, ceux-ci ne sont pas associés avec le groupe root mais avec le groupe trainee, le groupe du répertoire parent (inherit). Notez aussi que le système a posé le drapeau d'héritage sur le sous-répertoire testrep.
Sticky bit
Il existe un dernier cas qui s’appelle le sticky bit. Le sticky bit est utilisé pour des répertoires ou tout le monde a tous les droits. Dans ce cas, tout le monde peut supprimer des fichiers dans le répertoire. En ajoutant le sticky bit, uniquement le propriétaire du fichier peut le supprimer.
# chmod o+t /répertoire
ou
# chmod 1777 /répertoire
Par exemple la ligne de commande:
# mkdir /tmp/repertoire_public; cd /tmp; chmod o+t repertoire_public [Entrée]
ou
# mkdir /tmp/repertoire_public; cd /tmp; chmod 1777 repertoire_public [Entrée]
créera un répertoire repertoire_public dans /tmp avec les droits suivants :
[root@centos7 inherit]# mkdir /tmp/repertoire_public; cd /tmp; chmod o+t repertoire_public [root@centos7 tmp]# ls -l | grep repertoire_public drwxr-xr-t. 2 root root 6 Oct 20 07:59 repertoire_public
Les Droits Unix Avancés
Les ACL
Au delà des droits étendus d'Unix, Linux utilise un système d'ACL pour permettre une meilleure gestion des droits sur des fichiers.
Pour connaître les ACL positionnés sur un fichier, il convient d'utiliser la commande getfacl :
# getfacl /home/trainee/tux.jpg [Entrée]
En utilisant cette commande, vous obtiendrez un résultat similaire à celui-ci :
[root@centos7 tmp]# getfacl /home/trainee/tux.jpg getfacl: Removing leading '/' from absolute path names # file: home/trainee/tux.jpg # owner: root # group: root user::rw- group::r-- other::r--
Pour positionner des ACL sur un fichier, il convient d'utiliser la commande setfacl :
# setfacl --set u::rwx,g::rx,o::-,u:trainee:rw /home/trainee/tux.jpg [Entrée]
Utilisez la commande getfacl pour visualiser le résultat :
# getfacl /home/trainee/tux.jpg [Entrée]
Vous obtiendrez un résultat similaire à celui-ci :
[root@centos7 tmp]# setfacl --set u::rwx,g::rx,o::-,u:trainee:rw /home/trainee/tux.jpg [root@centos7 tmp]# getfacl /home/trainee/tux.jpg getfacl: Removing leading '/' from absolute path names # file: home/trainee/tux.jpg # owner: root # group: root user::rwx user:trainee:rw- group::r-x mask::rwx other::---
Important - Veuillez noter l'apparition de la ligne mask. Le mask indique les permissions maximales qui peuvent être acccordées à un utilisateur ou un groupe tiers.
Regardez maintenant l'effet des ACL sur un répertoire. Créez le répertoire /home/trainee/rep1 :
# mkdir /home/trainee/rep1 [Entrée]
Positionnez des ACL le répertoire avec la commande setfacl :
# setfacl --set d:u::r,d:g::-,d:o::- /home/trainee/rep1 [Entrée]
Notez l'utilisation de la lettre d pour indiquer une permission par défaut.
Créez maintenant un fichier appelé fichier1 dans /home/trainee/rep1 :
# touch /home/trainee/rep1/fichier1 [Entrée]
Utilisez la commande getfacl pour visualiser le résultat :
# getfacl /home/trainee/rep1 [Entrée]
# getfacl home/trainee/rep1/fichier1 [Entrée]
Vous obtiendrez un résultat similaire à celui-ci :
[root@centos7 tmp]# mkdir /home/trainee/rep1 [root@centos7 tmp]# setfacl --set d:u::r,d:g::-,d:o::- /home/trainee/rep1 [root@centos7 tmp]# touch /home/trainee/rep1/fichier1 [root@centos7 tmp]# getfacl /home/trainee/rep1 getfacl: Removing leading '/' from absolute path names # file: home/trainee/rep1 # owner: root # group: root user::rwx group::r-x other::r-x default:user::r-- default:group::--- default:other::--- [root@centos7 tmp]# getfacl /home/trainee/rep1/fichier1 getfacl: Removing leading '/' from absolute path names # file: home/trainee/rep1/fichier1 # owner: root # group: root user::r-- group::--- other::---
Notez que le fichier créé possède les ACL positionnés sur le répertoire rep1.
Dernièrement, les systèmes de sauvegarde classiques sous Linux ne peuvent pas sauvegarder les ACL, sauf l'outil star. Si vous n'utilisez pas star, il convient donc de sauvegarder les ACL dans un fichier grâce à la commande suivante :
# getfacl -R --skip-base . > backup.acl [Entrée]
La restauration des ACL se fait avec la commande setfacl :
# setfacl --restore=backup.acl [Entrée]
Les options de la commande getfacl sont :
[root@centos7 tmp]# getfacl --help getfacl 2.2.51 -- get file access control lists Usage: getfacl [-aceEsRLPtpndvh] file ... -a, --access display the file access control list only -d, --default display the default access control list only -c, --omit-header do not display the comment header -e, --all-effective print all effective rights -E, --no-effective print no effective rights -s, --skip-base skip files that only have the base entries -R, --recursive recurse into subdirectories -L, --logical logical walk, follow symbolic links -P, --physical physical walk, do not follow symbolic links -t, --tabular use tabular output format -n, --numeric print numeric user/group identifiers -p, --absolute-names don't strip leading '/' in pathnames -v, --version print version and exit -h, --help this help text
Les options de la commande setfacl sont :
[root@centos7 tmp]# setfacl --help setfacl 2.2.51 -- set file access control lists Usage: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ... -m, --modify=acl modify the current ACL(s) of file(s) -M, --modify-file=file read ACL entries to modify from file -x, --remove=acl remove entries from the ACL(s) of file(s) -X, --remove-file=file read ACL entries to remove from file -b, --remove-all remove all extended ACL entries -k, --remove-default remove the default ACL --set=acl set the ACL of file(s), replacing the current ACL --set-file=file read ACL entries to set from file --mask do recalculate the effective rights mask -n, --no-mask don't recalculate the effective rights mask -d, --default operations apply to the default ACL -R, --recursive recurse into subdirectories -L, --logical logical walk, follow symbolic links -P, --physical physical walk, do not follow symbolic links --restore=file restore ACLs (inverse of `getfacl -R') --test test mode (ACLs are not modified) -v, --version print version and exit -h, --help this help text
Les Attributs Etendus
Les attributs s'ajoutent aux caractéristiques classiques d'un fichier dans un système de fichiers Ext2/Ext3/Ext4, JFS, ReiserFS, XFS et Btrfs.
Les principaux attributs sont :
Attribut | Description |
---|---|
a | Fichier journal - uniquement l'ajout de données au fichier est permis. Le fichier ne peut pas détruit |
i | Le fichier ne peut ni être modifié, ni être détruit, ni être déplacé. Le placement d'un lien sur le fichier n'est pas permis |
s | Le fichier sera physiquement détruit lors de sa suppression |
D | Répertoire synchrone |
S | Fichier synchrone |
A | La date et l'heure de dernier accès ne seront pas mises à jour |
Important - Un fichier synchrone et un répertoire synchrone impliquent que les modifications seront immédiatement inscrites sur disque.
Les commandes associées avec les attributs sont :
Commande | description |
---|---|
chattr | Modifie les attributs |
lsattr | Visualise les attributs |
Pour mieux comprendre, créez le répertoire /root/attributs/rep :
[root@centos7 tmp]# cd /root [root@centos7 ~]# mkdir -p attributs/rep
Créez ensuite les fichier fichier et rep/fichier1 :
[root@centos7 ~]# touch attributs/fichier [root@centos7 ~]# touch attributs/rep/fichier1
Modifiez les attributs d'une manière récursive sur le répertoire attributs :
[root@centos7 ~]# chattr +i -R attributs/
Visualisez les attributs de l'arborescence attributs :
[root@centos7 ~]# lsattr -R attributs ----i----------- attributs/rep attributs/rep: ----i----------- attributs/rep/fichier1 ----i----------- attributs/fichier
Important - Notez que l'attribut e sous Ext4 indique l'utilisation des Extents. Cet attribut ne peut pas être enlever avec la commande chattr. Les Extents seront couverts dans le cours Gestion des Disques, des Systèmes de Fichiers et le Swap.
Essayez maintenant de déplacer le fichier fichier. Vous obtiendrez un résultat similaire à celui-ci :
[root@centos7 ~]# cd attributs; mv /root/attributs/fichier /root/attributs/rep/fichier mv: cannot move ‘/root/attributs/fichier’ to ‘/root/attributs/rep/fichier’: Permission denied
Les options de la commande chattr sont :
[root@centos7 ~]# chattr --help Usage: chattr [-RVf] [-+=aAcCdDeijsStTu] [-v version] files...
Les options de la commande lsattr sont :
[root@centos7 ~]# lsattr --help lsattr: invalid option -- '-' Usage: lsattr [-RVadlv] [files...]
Rôle du noyau
Le noyau ou kernel est la partie du système d'exploitation qui gère les entrées/sorties avec des périphériques. Dans certains cas il est préférable de recompiler le noyau de Linux. La motivation de cette recompilation peut être :
- la diminution de la taille du noyau,
- la prise en charge de nouveau matériel,
- l'ajout de fonctionnalités,
- l'optimisation du code,
- la correction de bogues,
- le besoin d'une fonctionnalité expérimentale.
Commencez par identifier le noyau utilisé par votre machine :
[root@centos7 ~]# uname -r 3.10.0-327.13.1.el7.x86_64
Dans le cas d'une utilisation courante de Linux, il est cependant préférable de faire appel aux modules. Les modules se trouvent dans le répertoire /lib/modules/<version-du-noyau> :
[root@centos7 ~]# ls /lib/modules/`uname -r`/ build modules.alias modules.builtin modules.dep.bin modules.modesetting modules.softdep source weak-updates extra modules.alias.bin modules.builtin.bin modules.devname modules.networking modules.symbols updates kernel modules.block modules.dep modules.drm modules.order modules.symbols.bin vdso
Les commandes pour manipuler les modules sont :
- insmod
- rmmod
- lsmod
- modprobe
Par exemple :
[root@centos7 ~]# lsmod Module Size Used by ip6t_rpfilter 12546 1 ip6t_REJECT 12939 2 ipt_REJECT 12541 2 xt_conntrack 12760 9 ebtable_nat 12807 0 ebtable_broute 12731 0 bridge 119562 1 ebtable_broute stp 12976 1 bridge llc 14552 2 stp,bridge ebtable_filter 12827 0 ebtables 30913 3 ebtable_broute,ebtable_nat,ebtable_filter ip6table_nat 12864 1 nf_conntrack_ipv6 18738 6 nf_defrag_ipv6 34768 1 nf_conntrack_ipv6 nf_nat_ipv6 14131 1 ip6table_nat ip6table_mangle 12700 1 ip6table_security 12710 1 ip6table_raw 12683 1 ip6table_filter 12815 1 ip6_tables 27025 5 ip6table_filter,ip6table_mangle,ip6table_security,ip6table_nat,ip6table_raw iptable_nat 12875 1 nf_conntrack_ipv4 14862 5 nf_defrag_ipv4 12729 1 nf_conntrack_ipv4 nf_nat_ipv4 14115 1 iptable_nat nf_nat 26146 2 nf_nat_ipv4,nf_nat_ipv6 nf_conntrack 105745 6 nf_nat,nf_nat_ipv4,nf_nat_ipv6,xt_conntrack,nf_conntrack_ipv4,nf_conntrack_ipv6 iptable_mangle 12695 1 iptable_security 12705 1 iptable_raw 12678 1 iptable_filter 12810 1 dm_mirror 22135 0 dm_region_hash 20862 1 dm_mirror dm_log 18411 2 dm_region_hash,dm_mirror dm_mod 113292 2 dm_log,dm_mirror crc32_pclmul 13113 0 ghash_clmulni_intel 13259 0 aesni_intel 69884 0 lrw 13286 1 aesni_intel gf128mul 14951 1 lrw glue_helper 13990 1 aesni_intel snd_intel8x0 38274 1 ablk_helper 13597 1 aesni_intel cryptd 20359 3 ghash_clmulni_intel,aesni_intel,ablk_helper snd_ac97_codec 130605 1 snd_intel8x0 ac97_bus 12730 1 snd_ac97_codec ppdev 17671 0 snd_seq 66691 0 snd_seq_device 14356 1 snd_seq snd_pcm 105835 2 snd_ac97_codec,snd_intel8x0 pcspkr 12718 0 sg 40721 0 parport_pc 28165 0 parport 42348 2 ppdev,parport_pc snd_timer 29639 2 snd_pcm,snd_seq snd 83425 8 snd_ac97_codec,snd_intel8x0,snd_timer,snd_pcm,snd_seq,snd_seq_device soundcore 15047 1 snd i2c_piix4 22106 0 video 24400 0 i2c_core 40582 1 i2c_piix4 nfsd 302418 1 auth_rpcgss 59343 1 nfsd nfs_acl 12837 1 nfsd lockd 93600 1 nfsd grace 13295 2 nfsd,lockd sunrpc 300464 7 nfsd,auth_rpcgss,lockd,nfs_acl ip_tables 27240 5 iptable_security,iptable_filter,iptable_mangle,iptable_nat,iptable_raw xfs 939662 2 libcrc32c 12644 1 xfs sd_mod 45497 4 crc_t10dif 12714 1 sd_mod crct10dif_generic 12647 0 sr_mod 22416 0 cdrom 42556 1 sr_mod ata_generic 12910 0 pata_acpi 13038 0 ahci 29907 3 libahci 32031 1 ahci ata_piix 35038 0 crct10dif_pclmul 14289 1 crct10dif_common 12595 3 crct10dif_pclmul,crct10dif_generic,crc_t10dif crc32c_intel 22079 1 serio_raw 13462 0 libata 218730 5 ahci,pata_acpi,libahci,ata_generic,ata_piix e1000 149323 0
Pour ajouter un module, on peut utiliser la commande insmod ou modprobe. Cette dernière ajoute non seulement le module passé en argument mais également ses dépendances :
[root@centos7 ~]# modprobe bonding [root@centos7 ~]# lsmod | more Module Size Used by bonding 136705 0 ip6t_rpfilter 12546 1 ip6t_REJECT 12939 2 ipt_REJECT 12541 2 xt_conntrack 12760 9 ebtable_nat 12807 0 ebtable_broute 12731 0 bridge 119562 1 ebtable_broute stp 12976 1 bridge llc 14552 2 stp,bridge ebtable_filter 12827 0 ebtables 30913 3 ebtable_broute,ebtable_nat,ebtable_filter ip6table_nat 12864 1 nf_conntrack_ipv6 18738 6 nf_defrag_ipv6 34768 1 nf_conntrack_ipv6 nf_nat_ipv6 14131 1 ip6table_nat ip6table_mangle 12700 1 ip6table_security 12710 1 ip6table_raw 12683 1 ip6table_filter 12815 1 ip6_tables 27025 5 ip6table_filter,ip6table_mangle,ip6table_securit y,ip6table_nat,ip6table_raw --More--
Pour supprimer un module, on peut utiliser la commande rmmod ou modprobe -r. Cette dernière essaie de supprimer les dépendances non-utilisées :
[root@centos7 ~]# modprobe -r bonding [root@centos7 ~]# lsmod | more Module Size Used by ip6t_rpfilter 12546 1 ip6t_REJECT 12939 2 ipt_REJECT 12541 2 xt_conntrack 12760 9 ebtable_nat 12807 0 ebtable_broute 12731 0 bridge 119562 1 ebtable_broute stp 12976 1 bridge llc 14552 2 stp,bridge ebtable_filter 12827 0 ebtables 30913 3 ebtable_broute,ebtable_nat,ebtable_filter ip6table_nat 12864 1 nf_conntrack_ipv6 18738 6 nf_defrag_ipv6 34768 1 nf_conntrack_ipv6 nf_nat_ipv6 14131 1 ip6table_nat ip6table_mangle 12700 1 ip6table_security 12710 1 ip6table_raw 12683 1 ip6table_filter 12815 1 ip6_tables 27025 5 ip6table_filter,ip6table_mangle,ip6table_securit y,ip6table_nat,ip6table_raw iptable_nat 12875 1 --More--
Les dépendances des modules sont résolues par la commande modprobe grâce aux fichier /lib/modules/<version-du-noyau>/modules.dep. Ce dernier peut être créé manuellement grâce à la commande depmod :
[root@centos7 ~]# more /lib/modules/`uname -r`/modules.dep kernel/arch/x86/kernel/cpu/mcheck/mce-inject.ko: kernel/arch/x86/kernel/test_nx.ko: kernel/arch/x86/crypto/ablk_helper.ko: kernel/crypto/cryptd.ko kernel/arch/x86/crypto/glue_helper.ko: kernel/arch/x86/crypto/camellia-x86_64.ko: kernel/crypto/xts.ko kernel/crypto/lrw.ko kernel/crypto/gf128mul.ko kernel/arch/x86/crypto/glue_helper.ko kernel/arch/x86/crypto/blowfish-x86_64.ko: kernel/crypto/blowfish_common.ko kernel/arch/x86/crypto/twofish-x86_64.ko: kernel/crypto/twofish_common.ko kernel/arch/x86/crypto/twofish-x86_64-3way.ko: kernel/arch/x86/crypto/twofish-x86_64.ko kernel/crypto/twofish_common.ko kernel/crypto/xts.ko kernel/cryp to/lrw.ko kernel/crypto/gf128mul.ko kernel/arch/x86/crypto/glue_helper.ko kernel/arch/x86/crypto/salsa20-x86_64.ko: kernel/arch/x86/crypto/serpent-sse2-x86_64.ko: kernel/crypto/xts.ko kernel/crypto/serpent_generic.ko kernel/crypto/lrw.ko kernel/crypto/gf128mul.ko kern el/arch/x86/crypto/glue_helper.ko kernel/arch/x86/crypto/ablk_helper.ko kernel/crypto/cryptd.ko kernel/arch/x86/crypto/aesni-intel.ko: kernel/crypto/lrw.ko kernel/crypto/gf128mul.ko kernel/arch/x86/crypto/glue_helper.ko kernel/arch/x86/crypto/ablk_ helper.ko kernel/crypto/cryptd.ko kernel/arch/x86/crypto/ghash-clmulni-intel.ko: kernel/crypto/cryptd.ko kernel/arch/x86/crypto/crc32c-intel.ko: kernel/arch/x86/crypto/sha-mb/sha1-mb.ko: kernel/crypto/mcryptd.ko kernel/arch/x86/crypto/crc32-pclmul.ko: kernel/arch/x86/crypto/sha512-ssse3.ko: kernel/crypto/sha512_generic.ko kernel/arch/x86/crypto/crct10dif-pclmul.ko: kernel/crypto/crct10dif_common.ko kernel/arch/x86/crypto/camellia-aesni-avx-x86_64.ko: kernel/arch/x86/crypto/camellia-x86_64.ko kernel/crypto/xts.ko kernel/crypto/lrw.ko kernel/crypto/g f128mul.ko kernel/arch/x86/crypto/glue_helper.ko kernel/arch/x86/crypto/ablk_helper.ko kernel/crypto/cryptd.ko kernel/arch/x86/crypto/cast5-avx-x86_64.ko: kernel/crypto/cast5_generic.ko kernel/crypto/cast_common.ko kernel/arch/x86/crypto/ablk_helper.ko kernel/cry --More--(0%)
Il est possible d'obtenir des informations sur un module grâce à la commande modinfo :
[root@centos7 ~]# modinfo bonding filename: /lib/modules/3.10.0-327.13.1.el7.x86_64/kernel/drivers/net/bonding/bonding.ko author: Thomas Davis, tadavis@lbl.gov and many others description: Ethernet Channel Bonding Driver, v3.7.1 version: 3.7.1 license: GPL alias: rtnl-link-bond rhelversion: 7.2 srcversion: 49765A3F5CDFF2C3DCFD8E6 depends: intree: Y vermagic: 3.10.0-327.13.1.el7.x86_64 SMP mod_unload modversions signer: CentOS Linux kernel signing key sig_key: 6F:33:78:18:7D:83:CD:18:A4:3B:2E:0A:C4:9A:ED:8A:EF:FC:3A:C7 sig_hashalgo: sha256 parm: max_bonds:Max number of bonded devices (int) parm: tx_queues:Max number of transmit queues (default = 16) (int) parm: num_grat_arp:Number of peer notifications to send on failover event (alias of num_unsol_na) (int) parm: num_unsol_na:Number of peer notifications to send on failover event (alias of num_grat_arp) (int) parm: miimon:Link check interval in milliseconds (int) parm: updelay:Delay before considering link up, in milliseconds (int) parm: downdelay:Delay before considering link down, in milliseconds (int) parm: use_carrier:Use netif_carrier_ok (vs MII ioctls) in miimon; 0 for off, 1 for on (default) (int) parm: mode:Mode of operation; 0 for balance-rr, 1 for active-backup, 2 for balance-xor, 3 for broadcast, 4 for 802.3ad, 5 for balance-tlb, 6 for balance-alb (charp) parm: primary:Primary network device to use (charp) parm: primary_reselect:Reselect primary slave once it comes up; 0 for always (default), 1 for only if speed of primary is better, 2 for only on active slave failure (charp) parm: lacp_rate:LACPDU tx rate to request from 802.3ad partner; 0 for slow, 1 for fast (charp) parm: ad_select:803.ad aggregation selection logic; 0 for stable (default), 1 for bandwidth, 2 for count (charp) parm: min_links:Minimum number of available links before turning on carrier (int) parm: xmit_hash_policy:balance-xor and 802.3ad hashing method; 0 for layer 2 (default), 1 for layer 3+4, 2 for layer 2+3, 3 for encap layer 2+3, 4 for encap layer 3+4 (charp) parm: arp_interval:arp interval in milliseconds (int) parm: arp_ip_target:arp targets in n.n.n.n form (array of charp) parm: arp_validate:validate src/dst of ARP probes; 0 for none (default), 1 for active, 2 for backup, 3 for all (charp) parm: arp_all_targets:fail on any/all arp targets timeout; 0 for any (default), 1 for all (charp) parm: fail_over_mac:For active-backup, do not set all slaves to the same MAC; 0 for none (default), 1 for active, 2 for follow (charp) parm: all_slaves_active:Keep all frames received on an interface by setting active flag for all slaves; 0 for never (default), 1 for always. (int) parm: resend_igmp:Number of IGMP membership reports to send on link failure (int) parm: packets_per_slave:Packets to send per slave in balance-rr mode; 0 for a random slave, 1 packet per slave (default), >1 packets per slave. (int) parm: lp_interval:The number of seconds between instances where the bonding driver sends learning packets to each slaves peer switch. The default is 1. (uint)
Dernièrement, les fichiers dans le repertoire /etc/modprobe.d sont utilisés pour spécifier les options éventuelles à passer aux modules lors de leur chargement ainsi que les alias utilisés pour leur faire référence :
[root@centos7 ~]# ls /etc/modprobe.d mlx4.conf [root@centos7 ~]# cat /etc/modprobe.d/mlx4.conf # This file is intended for users to select the various module options # they need for the mlx4 driver. On upgrade of the rdma package, # any user made changes to this file are preserved. Any changes made # to the libmlx4.conf file in this directory are overwritten on # pacakge upgrade. # # Some sample options and what they would do # Enable debugging output, device managed flow control, and disable SRIOV #options mlx4_core debug_level=1 log_num_mgm_entry_size=-1 probe_vf=0 num_vfs=0 # # Enable debugging output and create SRIOV devices, but don't attach any of # the child devices to the host, only the parent device #options mlx4_core debug_level=1 probe_vf=0 num_vfs=7 # # Enable debugging output, SRIOV, and attach one of the SRIOV child devices # in addition to the parent device to the host #options mlx4_core debug_level=1 probe_vf=1 num_vfs=7 # # Enable per priority flow control for send and receive, setting both priority # 1 and 2 as no drop priorities #options mlx4_en pfctx=3 pfcrx=3
Gestion des Quotas
Sous Linux il est possible de mettre en place des quotas par utilisateur et par groupe. Ceci étant, Linux ne sait pas gérer des quotas par répertoire, uniquement des quotas par partition. L'administrateur met souvent des quotas en place sur l'arborescence de /home pour limiter l'espace de stockage occupé par les utilisateurs.
Déconnectez-vous et reconnectez-vous en tant que root.
Avant de mettre en place des quotas, configurer SELINUX en mode permissive afin de ne pas avoir d'erreurs de ce dernier :
[root@centos7 ~]# getenforce Enforcing [root@centos7 ~]# setenforce permissive [root@centos7 ~]# getenforce Permissive
Editez ensuite le fichier /etc/sysconfig/selinux ainsi :
[root@centos7 ~]# vi /etc/sysconfig/selinux [root@centos7 ~]# cat /etc/sysconfig/selinux # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=permissive # SELINUXTYPE= can take one of three two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted
Commencez par vérifiez que le paquet quota est bien installé :
[root@centos7 ~]# rpm -qa | grep quota quota-4.01-11.el7_2.1.x86_64 quota-nls-4.01-11.el7_2.1.noarch
Editez le fichier /etc/fstab en ajoutant les options usrquota et grpquota à la ligne /home :
[root@centos7 ~]# vi /etc/fstab [root@centos7 ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Sat Apr 30 11:27:02 2016 # # 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 # UUID=e65fe7da-cda8-4f5a-a827-1b5cabe94bed / xfs defaults 0 0 UUID=2d947276-66e8-41f4-8475-b64b67d7a249 /boot xfs defaults 0 0 UUID=3181601a-7295-4ef0-a92c-f21f76b18e64 swap swap defaults 0 0 UUID=a080ac6a-d15c-48e2-8461-a7b1aa3ebf1a /home ext4 defaults,usrquota,grpquota 1 2
Démontez puis remontez /home :
[root@centos7 ~]# umount /home [root@centos7 ~]# mount -a
Déconnectez-vous et reconnectez-vous en tant que trainee. Vérifiez ensuite que les options soient prises en compte :
[root@centos7 ~]# cat /etc/mtab rootfs / rootfs rw 0 0 sysfs /sys sysfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0 proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0 devtmpfs /dev devtmpfs rw,seclabel,nosuid,size=236036k,nr_inodes=59009,mode=755 0 0 securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0 tmpfs /dev/shm tmpfs rw,seclabel,nosuid,nodev 0 0 devpts /dev/pts devpts rw,seclabel,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0 tmpfs /run tmpfs rw,seclabel,nosuid,nodev,mode=755 0 0 tmpfs /sys/fs/cgroup tmpfs ro,seclabel,nosuid,nodev,noexec,mode=755 0 0 cgroup /sys/fs/cgroup/systemd cgroup rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd 0 0 pstore /sys/fs/pstore pstore rw,nosuid,nodev,noexec,relatime 0 0 cgroup /sys/fs/cgroup/net_cls cgroup rw,nosuid,nodev,noexec,relatime,net_cls 0 0 cgroup /sys/fs/cgroup/memory cgroup rw,nosuid,nodev,noexec,relatime,memory 0 0 cgroup /sys/fs/cgroup/devices cgroup rw,nosuid,nodev,noexec,relatime,devices 0 0 cgroup /sys/fs/cgroup/hugetlb cgroup rw,nosuid,nodev,noexec,relatime,hugetlb 0 0 cgroup /sys/fs/cgroup/freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer 0 0 cgroup /sys/fs/cgroup/blkio cgroup rw,nosuid,nodev,noexec,relatime,blkio 0 0 cgroup /sys/fs/cgroup/cpu,cpuacct cgroup rw,nosuid,nodev,noexec,relatime,cpuacct,cpu 0 0 cgroup /sys/fs/cgroup/perf_event cgroup rw,nosuid,nodev,noexec,relatime,perf_event 0 0 cgroup /sys/fs/cgroup/cpuset cgroup rw,nosuid,nodev,noexec,relatime,cpuset 0 0 configfs /sys/kernel/config configfs rw,relatime 0 0 /dev/sda2 / xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0 selinuxfs /sys/fs/selinux selinuxfs rw,relatime 0 0 systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=23,pgrp=1,timeout=300,minproto=5,maxproto=5,direct 0 0 debugfs /sys/kernel/debug debugfs rw,relatime 0 0 hugetlbfs /dev/hugepages hugetlbfs rw,seclabel,relatime 0 0 tmpfs /tmp tmpfs rw,seclabel 0 0 mqueue /dev/mqueue mqueue rw,seclabel,relatime 0 0 sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0 nfsd /proc/fs/nfsd nfsd rw,relatime 0 0 /dev/sda1 /boot xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0 tmpfs /run/user/0 tmpfs rw,seclabel,nosuid,nodev,relatime,size=50080k,mode=700 0 0 /dev/sdb1 /home ext4 rw,seclabel,relatime,quota,usrquota,grpquota,data=ordered 0 0
La Commande quotacheck
Pour activer les quotas sur /home, il convient d'utiliser la commande quotacheck :
[root@centos7 ~]# quotacheck -cugvm -f /dev/sdb1 quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown. quotacheck: Parcours de /dev/sdb1 [/home] terminé quotacheck: Cannot stat old user quota file /home/aquota.user: Aucun fichier ou dossier de ce type. Usage will not be subtracted. quotacheck: Cannot stat old group quota file /home/aquota.group: Aucun fichier ou dossier de ce type. Usage will not be subtracted. quotacheck: Cannot stat old user quota file /home/aquota.user: Aucun fichier ou dossier de ce type. Usage will not be subtracted. quotacheck: Cannot stat old group quota file /home/aquota.group: Aucun fichier ou dossier de ce type. Usage will not be subtracted. quotacheck: Vérifié 100 répertoires et 230 fichiers quotacheck: Ancien fichier non trouvé. quotacheck: Ancien fichier non trouvé.
Les options de la commande quotacheck sont :
[root@centos7 ~]# quotacheck --help Utility for checking and repairing quota files. quotacheck [-gucbfinvdmMR] [-F <quota-format>] filesystem|-a -u, --user check user files -g, --group check group files -c, --create-files create new quota files -b, --backup create backups of old quota files -f, --force force check even if quotas are enabled -i, --interactive interactive mode -n, --use-first-dquot use the first copy of duplicated structure -v, --verbose print more information -d, --debug print even more messages -m, --no-remount do not remount filesystem read-only -M, --try-remount try remounting filesystem read-only, continue even if it fails -R, --exclude-root exclude root when checking all filesystems -F, --format=formatname check quota files of specific format -a, --all check all filesystems -h, --help display this message and exit -V, --version display version information and exit Rapports de bugs à jack@suse.cz
Les quotas ont été activés et les fichier aquota.user et aquota.group ont été créés dans le répertoire /home :
[root@centos7 ~]# ls -la /home total 44 drwxr-xr-x. 4 root root 4096 11 août 13:39 . dr-xr-xr-x. 18 root root 4096 11 août 13:27 .. -rw-------. 1 root root 7168 11 août 13:39 aquota.group -rw-------. 1 root root 7168 11 août 13:39 aquota.user drwx------. 2 root root 16384 11 août 13:26 lost+found drwx------. 14 trainee trainee 4096 30 avril 15:29 trainee
Créez maintenant un utilisateur fenestros avec le mot de passe fenestros :
[root@centos7 ~]# groupadd fenestros && useradd fenestros -c FenestrOs -d /home/fenestros -g fenestros -s /bin/bash [root@centos7 ~]# passwd fenestros Changement de mot de passe pour l'utilisateur fenestros. Nouveau mot de passe : fenestros MOT DE PASSE INCORRECT : Le mot de passe contient le nom d'utilisateur sous une forme Retapez le nouveau mot de passe : fenestros passwd : mise à jour réussie de tous les jetons d'authentification. [root@centos7 ~]#
La Commande edquota
Mettez en place maintenant un quota de 10Mo pour l'utilisateur fenestros :
[root@centos ~]# edquota -u fenestros -f /home
L'éditeur vi se lance et vous obtiendrez un résultat similaire à celui-ci :
Quotas disque pour user fenestros (uid 1001) : Système de fichiers blocs souple stricte inodes souple stricte /dev/sdb1 0 0 0 0 0 0
Modifiez ce fichier ainsi :
Quotas disque pour user fenestros (uid 1001) : Système de fichiers blocs souple stricte inodes souple stricte /dev/sdb1 0 8000 10000 0 0 0
Les options de la commande edquota sont :
[root@centos7 ~]# edquota --help edquota: Usage: edquota [-rm] [-u] [-F formatname] [-p username] [-f filesystem] username ... edquota [-rm] -g [-F formatname] [-p groupname] [-f filesystem] groupname ... edquota [-u|g] [-F formatname] [-f filesystem] -t edquota [-u|g] [-F formatname] [-f filesystem] -T username|groupname ... -u, --user edit user data -g, --group edit group data -r, --remote edit remote quota (via RPC) -m, --no-mixed-pathnames trim leading slashes from NFSv4 mountpoints -F, --format=formatname edit quotas of a specific format -p, --prototype=name copy data from a prototype user/group --always-resolve always try to resolve name, even if it is composed only of digits -f, --filesystem=filesystem edit data only on a specific filesystem -t, --edit-period edit grace period -T, --edit-times edit grace time of a user/group -h, --help display this help text and exit -V, --version display version information and exit Rapports de bugs à : jack@suse.cz
Pour mettre en place un quota par group, la procédure est similaire. Il suffit d'utiliser l'option -g de la commande edquota.
La Commande quotaon
Appliquez maintenant les quotas :
[root@centos7 ~]# quotaon -a
Les options de la commande quotaon sont :
[root@centos7 ~]# quotaon --help quotaon: Usage: quotaon [-guvp] [-F quotaformat] [-x state] -a quotaon [-guvp] [-F quotaformat] [-x state] filesys ... -a, --all turn quotas on for all filesystems -f, --off turn quotas off -u, --user operate on user quotas -g, --group operate on group quotas -p, --print-state print whether quotas are on or off -x, --xfs-command=cmd perform XFS quota command -F, --format=formatname operate on specific quota format -v, --verbose print more messages -h, --help display this help text and exit -V, --version display version information and exit
De cette manière vous avez mis en place un quota souple pour fenestros de 8 000 Ko et un quota stricte de 10 000 Ko.
Quand l'utilisateur fenestros aura dépassé le quota souple, il recevra un message d'avertissement. Quand il dépasse le quota stricte, il ne pourra plus enregistrer dans /home, sauf dans le cas où il supprime des fichiers pour retomber en dessous de la limite stricte.
Il est à noter que vous pouvez soit mettre en place un quota en taille, soit mettre en place un quota basé sur le nombre d'inodes utilisés par l'utilisateur.
La commande pour désactivez les quotas est quotaoff.
La Commande repquota
Pour visualiser les quotas utilisez la commande repquota :
[root@centos7 ~]# repquota /home *** Rapport pour les quotas user sur le périphérique /dev/sdb1 Période de sursis bloc : 7days ; période de sursis inode : 7days Block limits File limits Utilisateur utilisé souple stricte sursis utilisé souple stricte sursis ---------------------------------------------------------------------- root -- 20 0 0 2 0 0 trainee -- 20484 0 0 328 0 0
Notez que l'utilisateur fenestros ne figure pas dans la liste. Sous CentOS, le quota n'est pas visible tant que l'utilisateur ne s'est pas connecté pour la première fois. Notez aussi les période de grâce de 7 jours.
Les options de la commande repquota sont :
[root@centos7 ~]# repquota --help repquota: Utility for reporting quotas. Usage: repquota [-vugsi] [-c|C] [-t|n] [-F quotaformat] (-a | mntpoint) -v, --verbose display also users/groups without any usage -u, --user display information about users -g, --group display information about groups -s, --human-readable show numbers in human friendly units (MB, GB, ...) -t, --truncate-names truncate names to 9 characters -p, --raw-grace print grace time in seconds since epoch -n, --no-names do not translate uid/gid to name -i, --no-autofs avoid autofs mountpoints -c, --cache translate big number of ids at once -C, --no-cache translate ids one by one -F, --format=formatname report information for specific format -a, --all report information for all mount points with quotas -h, --help display this help message and exit -V, --version display version information and exit Rapports de bugs à jack@suse.cz
La Commande quota
Pour visualiser les quotas d'un utilisateur spécifique, il convient d'utiliser la commande quota :
[root@centos7 ~]# quota fenestros Disk quotas for user fenestros (uid 1001): aucun [root@centos7 ~]# su - fenestros [fenestros@centos7 ~]$ touch test [fenestros@centos7 ~]$ exit logout [root@centos7 ~]# quota fenestros Disk quotas for user fenestros (uid 1001): Système fichiers blocs quota limite sursisfichiers quota limite sursis /dev/sdb1 24 8000 10000 7 0 0
Les options de la commande quota sont :
[root@centos7 ~]# quota --help quota: Usage: quota [-guqvswim] [-l | [-Q | -A]] [-F quotaformat] quota [-qvswim] [-l | [-Q | -A]] [-F quotaformat] -u username ... quota [-qvswim] [-l | [-Q | -A]] [-F quotaformat] -g groupname ... quota [-qvswugQm] [-F quotaformat] -f filesystem ... -u, --user display quota for user -g, --group display quota for group -q, --quiet print more terse message -v, --verbose print more verbose message -s, --human-readable display numbers in human friendly units (MB, GB...) --always-resolve always try to translate name to id, even if it is composed of only digits -w, --no-wrap do not wrap long lines -p, --raw-grace print grace time in seconds since epoch -l, --local-only do not query NFS filesystems -Q, --quiet-refuse do not print error message when NFS server does not respond -i, --no-autofs do not query autofs mountpoints -F, --format=formatname display quota of a specific format -f, --filesystem-list display quota information only for given filesystems -A, --all-nfs display quota for all NFS mountpoints -m, --no-mixed-pathnames trim leading slashes from NFSv4 mountpoints --show-mntpoint show mount point of the file system in output --hide-device do not show file system device in output -h, --help display this help message and exit -V, --version display version information and exit Rapports de bugs à : jack@suse.cz
La Commande warnquota
La commande warnquota vérifie le ou les disques et envoie un message par mail à tout utilisateur qui a dépassé la limite soft. Elle est enrègle générale appelée par un job cron. Cependant elle peut aussi est appelée d'une manière intéractive.
Sous RHEL/CentOS 7, warnquota n'est pas installé par défaut :
[root@centos7 ~]# yum install quota-warnquota Modules complémentaires chargés : fastestmirror, langpacks base | 3.6 kB 00:00:00 extras | 3.4 kB 00:00:00 updates | 3.4 kB 00:00:00 Loading mirror speeds from cached hostfile * base: centos.quelquesmots.fr * extras: miroir.univ-paris13.fr * updates: miroir.univ-paris13.fr Résolution des dépendances --> Lancement de la transaction de test ---> Le paquet quota-warnquota.x86_64 1:4.01-11.el7_2.1 sera installé --> Résolution des dépendances terminée Dépendances résolues ======================================================================================================================================================================== Package Architecture Version Dépôt Taille ======================================================================================================================================================================== Installation : quota-warnquota x86_64 1:4.01-11.el7_2.1 updates 76 k Résumé de la transaction ======================================================================================================================================================================== Installation 1 Paquet Taille totale des téléchargements : 76 k Taille d'installation : 137 k Is this ok [y/d/N]: y
Les options de la commande warnquota sont :
[root@centos7 ~]# warnquota --help warnquota: Usage: warnquota [-ugsid] [-F quotaformat] [-c configfile] [-q quotatabfile] [-a adminsfile] [filesystem...] -u, --user warn users -g, --group warn groups -s, --human-readable send information in more human friendly units -i, --no-autofs avoid autofs mountpoints -d, --no-details do not send quota information itself -F, --format=formatname use quotafiles of specific format -c, --config=config-file non-default config file -q, --quota-tab=quotatab-file non-default quotatab -a, --admins-file=admins-file non-default admins file -h, --help display this help message and exit -v, --version display version information and exit Rapports de bugs à jack@suse.cz
Copyright © 2023 Hugh Norris.