Jean-Francois Bouchaudy Gilles Goubet
Transcription
Jean-Francois Bouchaudy Gilles Goubet
,).58 !DMINISTRATION Jean-Francois Bouchaudy Gilles Goubet © Tsoft et Groupe Eyrolles, 2000, 2004, ISBN : 2-212-11505-9 faux-titre.indd 1 17/05/04 20:15:11 • « File System » • mount, umount • inode • ext2, iso9660 • mkfs,mke2fs,e2fsck • /etc/fstab Module 4 : Gestion de l’espace disque Objectifs Après l’étude du chapitre, le lecteur connaît la structure des systèmes de fichiers, leur gestion. Il est capable de créer, monter, démonter un système de fichiers. Il peut en automatiser le montage. Contenu Les disques Le partitionnement Arborescence et systèmes de fichiers La gestion de l’espace disque, la commande df Montage et démontage des systèmes de fichiers Les différents types de systèmes de fichiers Panorama des commandes de gestion des systèmes de fichiers L’automatisation du montage des systèmes de fichiers Références HOWTO : filesystems-HOWTO Le manuel : mke2fs(8), mount(8), fstab(5), debugfs(8), e2fsck(8) © TSOFT – Linux Administration 4-1 Module 4 : Gestion de l’espace disque Les disques Les disques de Linux Le MBR Le disque physique : /dev/hda Une partition primaire /dev/hda1 Une partition primaire /dev/hda2 Utilisation Utilisation:: ••FS FS ••swap swap ••Disque Disquedédié dédié Une partition logique /dev/hda5 Une partition logique /dev/hda6 Une partition étendue /dev/hda3 Module 4 : Les systèmes de fichiers - 4.2 TSOFT - Linux Administration Introduction Dans Linux, comme dans tous les systèmes UNIX, il faut distinguer le fond et la forme. Un disque Linux est un périphérique qui possède un nom dans le répertoire /dev et qui est vu comme une suite logiquement contiguë de secteurs. Sa forme est diverse : une partition d’un disque dur, un disque en RAM, un fichier, une disquette, un CD-ROM, une clé USB ou encore un volume logique (cf. Module 5 :L’espace disque, aspects avancés). Le chapitre s’attache à décrire les partitions d’un disque IDE d’un système Linux installé sur un PC. Les noms des disques physiques de Linux Les noms des disques SCSI sont de la forme /dev/sdx, où x est une lettre identifiant le lecteur de disque. Ainsi, /dev/sda désigne le premier lecteur de disque SCSI, /dev/sdb le second et ainsi de suite. Les noms des disques IDE sont de la forme /dev/hdx, où x est une lettre identifiant le lecteur de disque. Les disques vont par paires, /dev/hda désigne le disque maître et /dev/hdb le disque esclave associés au premier contrôleur, /dev/hdc désigne le disque maître et /dev/hdd le disque esclave associées au deuxième contrôleur, et ainsi de suite. # ls –l /dev/hd? brw-rw---1 root brw-rw---1 root brw-rw---1 root brw-rw---1 root brw-rw---1 root brw-rw---1 root brw-rw---1 root 4-2 disk disk disk disk disk disk disk 3, 3, 22, 22, 33, 33, 34, 0 64 0 64 0 64 0 jan jan jan jan jan jan jan 30 30 30 30 30 30 30 2003 2003 2003 2003 2003 2003 2003 /dev/hda /dev/hdb /dev/hdc /dev/hdd /dev/hde /dev/hdf /dev/hdg… ©TSOFT – Linux Administration Module 4 : Gestion de l’espace disque Le nom du disque n’est normalement utilisé que dans les commandes de partitionnement qui vont nous permettre de créer les partitions qui sont les disques utilisés par Linux (cf. Chapitre partitionnement). Structure des disques physiques Le MBR (Master Boot Record) Le premier secteur du disque s’appelle le MBR (Master Boot Record). Il contient la table des partitions et est à l’origine du chargement, on dit aussi amorce ou boot du système actif, quel qu’il soit. La structure du MBR est la suivante : • Les 446 premiers octets contiennent un programme de chargement, loader en anglais, qui va démarrer l’exécution du programme de chargement propre au système d’exploitation actif. • Les 64 octets qui suivent décrivent les partitions : taille, localisation, type et statut. • Les deux derniers octets du MBR constituent le magic number, une valeur numérique que certains systèmes utilisent pour vérifier la signature du secteur. Partitions primaires et partition étendue La table des partitions du MBR ne contient que quatre entrées. Il en résulte qu’un disque ne peut contenir que quatre partitions principales. Pour dépasser cette limite, qui existe aussi dans Windows, une des partitions principales peut être définie comme partition étendue. Cette dernière contiendra des partitions logiques. On a coutume d’appeler primaire les partitions principales autres que l’étendue. Les disques qui sont utilisés dans Linux sont les partitions primaires ou les partitions logiques créées dans l’étendue. Les noms des partitions sont de la forme /dev/hdxnn, où x identifie le disque physique et nn le numéro de la partition. Les valeurs comprises entre 1 et 4 sont réservées aux partitions primaires et à la partition étendue. Les valeurs attribuées aux partitions logiques créées dans l’étendue commencent à toujours à 5, quelque soit le nombre de partitions principales. # ls /dev/hda* /dev/hda /dev/hda14 /dev/hda2 /dev/hda1 /dev/hda15 /dev/hda20 /dev/hda10 /dev/hda16 /dev/hda21 /dev/hda25 /dev/hda26 /dev/hda27 /dev/hda30 /dev/hda31 /dev/hda32 /dev/hda7 /dev/hda8 /dev/hda9 L’exemple du transparent représente un disque qui contient trois partitions principales : deux primaires hda1 et hda2 et une étendue hda3. La partition étendue hda3 contient deux partitions logiques hda5 et hda6. Remarques Un système Linux peut résider dans sa totalité dans des partitions logiques de la partition étendue. A la différence de Windows, la partition étendue possède un nom de disque qui, comme le nom du disque physique, n’est généralement utilisé que dans les commandes de partitionnement. Les disques effectivement utilisés sont ceux des partitions logiques. Les noms /dev/hdxnn ne s’appliquent pas seulement aux disques Linux mais servent aussi à nommer les lecteurs Windows. © TSOFT – Linux Administration 4-3 Module 4 : Gestion de l’espace disque Utilisation d’un disque Linux Un disque Linux peut avoir trois utilisations : 1. Contenir un système de fichiers. C’est l’usage le plus courant. 2. Contenir un espace de swap. 3. Etre géré directement par une application. On retrouve là un équivalent des disques « raw device » d’UNIX. Les données qu’il contient ne sont pas vues en terme de fichiers Linux et c’est le logiciel qui doit prendre en charge les opérations de sauvegarde ou de restauration. La commande Linux dd (cf . Module 6 : La sauvegarde) permet d’en faire une image physique. 4-4 ©TSOFT – Linux Administration Module 4 : Gestion de l’espace disque Le partitionnement Le partitionnement Les commandes de Partitionnement : fdisk cfdisk sfdisk parted Module 4 : Les systèmes de fichiers - 4.3 TSOFT - Linux Administration Introduction Il existe de nombreux outils de partitionnement des disques d’un PC. Tous ne sont pas liés au monde Linux et ont été élaborés pour Windows. Le chapitre retient les commandes que l’on peut utiliser dans un environnement Linux Panorama des commandes de partitionnement fdisk La commande interactive de partitionnement, en mode commande. cfdisk La commande de partitionnement qui fonctionne avec des menus en mode texte. sfdisk Une commande de partitionnement proche de fdisk. Les commandes de partitionnement sont passées en argument et les données sont lues sur l’entrée standard. Cette commande est utile quand elle est utilisée dans un script. drakConf Outil graphique de Mandrake qui permet le partitionnement. fips Outil rudimentaire pour redimensionner les partitions Windows. partitionmagic Outil commercial qui permet de redimensionner les partitions sans perte de données. GNU parted Outil du monde libre qui permet de redimensionner les partitions sans pertes de données. La commande fdisk La commande fdisk, bien connue des utilisateurs de PC, permet de gérer le partitionnement d’un disque. © TSOFT – Linux Administration 4-5 Module 4 : Gestion de l’espace disque Syntaxe fdisk [Nom_du_lecteur] En l’absence du nom du lecteur, la commande fdisk utilise le premier lecteur IDE /dev/hda. L’utilisateur dispose de plusieurs commandes dont les principales sont résumées dans le tableau qui suit : Commandes Description p Affiche la liste des partitions. La commande fdisk –l est équivalente. m Affiche la liste des commandes. n Ajout d’une nouvelle partition. Il faut en préciser le type primaire ou logique, le cylindre de début et la taille que l’on peut exprimer en méga-octets. a Définit la partition de boot. La commande a active ou désactive la partition concernée comme partition de boot selon qu’elle l’était déjà ou pas. d Supprime une partition. l Affiche la liste des types de partitions reconnues par Linux (Linux native, swap, FAT, …). t Attribue un type à une partition, tel que défini précédemment (Linux native, swap, …). w Enregistre les modifications et quitte. q Quitte sans enregistrer les modifications. Exemples # fdisk Using /dev/hda as default device! Command (m for help): p Disk /dev/hda: 255 heads, 63 sectors, 524 cylinders Units = cylinders of 16065 * 512 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 319 2562336 b Win95 FAT32 /dev/hda2 320 524 1646662+ 5 Extended /dev/hda5 320 447 1028128+ 83 Linux native /dev/hda6 448 452 40131 82 Linux swap 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 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 t change a partition's system id u change display/entry units v verify the partition table 4-6 ©TSOFT – Linux Administration Module 4 : Gestion de l’espace disque w x write table to disk and exit extra functionality (experts only) Command (m for help): n Command action l logical (5 or over) p primary partition (1-4) l First cylinder (453-524): 453 Last cylinder or +size or +sizeM or +sizeK ([453]-524): +200M Command (m for help): p Disk /dev/hda: 255 heads, 63 sectors, 524 cylinders Units = cylinders of 16065 * 512 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 319 2562336 b Win95 FAT32 /dev/hda2 320 524 1646662+ 5 Extended /dev/hda5 320 447 1028128+ 83 Linux native /dev/hda6 448 452 40131 82 Linux swap /dev/hda7 453 478 208813+ 83 Linux native Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. Re-read table failed with error 16: Périphérique ou ressource occupé.. Reboot your system to ensure the partition table is updated. WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information. La commande cfdisk La commande cfdisk (curses fdsik) est une alternative, plus simple d’emploi, à la commande fdisk. Elle fonctionne avec des menus déroulants. Pour répondre à la curiosité de son nom, il faut se souvenir que la bibliothèque curses est la bibliothèque standard du système UNIX, pour développer des programmes semigraphiques pour des terminaux de type texte. Elle fonctionne donc avec telnet. Exemple # cfdisk cfdisk 0.8l Disk Drive: /dev/hda Heads: 255 Sectors per Track: 63 Cylinders: 524 Name Flags Part Type FS Type [Label] Size (MB) -------------------------------------------------------------------------------hda1 hda5 hda6 hda7 Boot Primary Logical Logical Logical Pri/Log Win95 FAT32 Linux ext2 Linux Swap Linux Free Space 2502.32 1004.07 39.23 203.96 360.84 [ Help ] [ New ] [ Print ] [ Quit ] [ Units ] [ Write ] Create a new logical partition © TSOFT – Linux Administration 4-7 Module 4 : Gestion de l’espace disque [Primary] [Logical] [Cancel ] Size (in MB): 360.84 cfdisk 0.8l Disk Drive: /dev/hda Heads: 255 Sectors per Track: 63 Cylinders: 524 Name Flags Part Type FS Type [Label] Size (MB) -------------------------------------------------------------------------------hda1 Boot Primary Win95 FAT32 2502.32 hda5 Logical Linux ext2 1004.07 hda6 Logical Linux Swap 39.23 hda7 Logical Linux 203.96 hda8 Logical Linux 360.84 [Bootable] [ Delete ] [ Help ] [Maximize] [ Print ] [ Quit ] [ Type ] [ Units ] [ Write ] Write partition table to disk (this might destroy data) Are you sure you want write the partition table to disk? (yes or no): yes Warning!! This may destroy data on your disk! Wrote partition table, but re-read table failed. Reboot to update table. La commande sfdisk La commande sfdisk, bien que moins conviviale, offre l’intérêt de pouvoir être utilisée dans un script. Les commandes de partitionnement sont passées en argument et les données sont saisies depuis l’entrée standard, donc redirigeables depuis un fichier. On peut regretter que la sortie standard produite par l’affichage soit d’une forme différente de l’entrée standard qui définit la table des partitions. Affichage de la table des partitions. # sfdisk -d /dev/hda N° table de partition de /dev/hda unit: sectors /dev/hda1 : start= 63, size= 211617, /dev/hda2 : start= 211680, size= 6138720, /dev/hda3 : start= 6350400, size= 3069360, /dev/hda4 : start= 9419760, size= 14152320, … Id=83, bootable Id=83 Id=83 Id= 5 Modification de la table des partitions. On utilise les paramètres précédents. # cat fichier 63,211617,83,* 211680,6138720,83 6350400,3069360,83 9419760,14152320,5 … # sfdisk -uS --force --no-reread /dev/hda < fichier 4-8 ©TSOFT – Linux Administration Module 4 : Gestion de l’espace disque Le logiciel GNU parted Introduction Gnu-Parted est un logiciel libre, sous licence GPL, qui gère les partitions d’un disque dur. Avec Gnu-Parted, on peut : • Créer une table de partitions. • Créer ou détruire une partition. • Copier ou déplacer le contenu d’une partition. • Créer un système de fichiers. • Modifier la taille d’une partition et le système de fichiers qu’elle contient. L’objectif des concepteurs du produit est de proposer un outil valable pour toutes les architectures, tous les systèmes d’exploitation et tous les types de systèmes de fichiers. Actuellement, le résultat est plus modeste. Linux est le seul à exécuter parted. Parted ne supporte pleinement que ext2 et fat (16 et 32) ainsi que la swap Linux. Parted est un outil en mode texte que l’on utilise en mode commande ou de manière interactive. Il agit seulement sur des systèmes de fichiers démontés. Si on modifie un disque en cours d’utilisation, une des partitions est par exemple montée, il faut rebooter. Cela induit deux logiques d’utilisation du produit : • On démarre le système à partir d’une disquette ou d’un cdrom bootable sous Linux, ce qui permet d’utiliser parted y compris sur le FS-root. • On utilise parted sous Linux pour gérer les partitions d’un disque non système. Dans ce cas, on n’a pas besoin de rebooter ou d’utiliser un système de secours. Obtenir GNU parted On peut télécharger les sources de parted depuis le site du GNU, www.gnu.org. Il est normalement présent, sous forme de paquetage, dans les distributions récentes (parted*.rpm). Il existe également sur des distributions de maintenance comme System Rescue CD (http://www.sysresccd.org). Enfin, on peut télécharger depuis le site du GNU l’image d’une disquette bootable contenant un mini-système Linux avec notamment tar, dd et parted. Voici l’url de ce fichier : ftp://ftp.gnu.org/gnu/parted/bootdisk/partboot.img. Après l’avoir récupéré, on le copie sur une disquette avec dd : # dd if=partboot.img of=/dev/fd0 Les commandes de GNU parted Syntaxe : parted [option...] [disque [commande [arg ... ] ...]] Si on active parted sans argument, on passe en mode interactif, parted affiche l’invite « (parted) » et attend une commande. Les commandes : • check PART Vérifie sommairement le système de fichiers contenu dans la partition PART. • cp [DSQ-ORIG] PART-ORIG PART-DST Copie le système de fichiers de la partition PART-ORIG du disque DSQ-ORIG, par défaut, le disque courant, dans la partition PART-DST du disque courant. La partition de destination doit être aussi grande ou plus grande que celle d’origine. © TSOFT – Linux Administration 4-9 Module 4 : Gestion de l’espace disque • help [CMD] Affiche la liste des commandes ou l’aide sur la commande CMD. • mklabel TYPE Crée une table de partitions. Il faut indiquer son type : bsd, mac, loop, pc98, msdos. Sur un PC ordinaire, on utilise le type msdos. • mkfs PART TYPE-FS Créer un système de fichiers de type TYPE-FS (ext2, fat, hfs, ntfs, reiserfs) dans la partition PART. • mkpart TYPE-PART [TYPE-FS] DEBUT FIN Crée une partition. TYPE-PART indique si il s’agit d’une partition principale (primary), étendue (extended) ou logique (logical). DEBUT et FIN sont exprimées en méga octets. On peut utiliser des valeurs décimales. • mkpartfs TYPE-PART TYPE-FS DEBUT FIN Crée une partition et y installe un système de fichiers en une seule opération. • move PART DEBUT FIN Déplace une partition (cf. cp). • name PART NAME Nomme à une partition. • print Affiche la table des partitions. • quit Quitte parted. • Resize PART DEBUT FIN Modifie la taille d’une partition et du système de fichiers qui l’occupe. On peut aussi bien agrandir que réduire la taille. Cette commande ne s’applique pour le moment qu’aux systèmes de fichiers ext2, FAT et à une partition de swap Linux. En ce qui concerne la FAT, la diminution fonctionne correctement, mais l’agrandissement n’est pas encore garanti. • rm PART Détruit la partition PART. • select DSK Sélectionne le disque DSK comme disque par défaut. • set PART DRAP {on|off} Positionne ou enlève le drapeau DRAP de la partition PART. Les principaux drapeaux : boot, raid, lvm. Exemples Rétrécir la partition numéro un et créer ensuite une FAT dans la partition deux. Deux solutions sont présentées, en mode commande et en mode interactif : # parted /dev/hda resize 1 52 1004 mkfs 2 fat # parted (parted) select /dev/had (parted) resize 1 52 1004 (parted) mkfs 2 fat (parted) quit # Vérifier le système de fichiers de la partition numéro un. (parted) check 1 4-10 ©TSOFT – Linux Administration Module 4 : Gestion de l’espace disque Détruire la partition numéro trois. (parted) rm 3 Visualiser la table des partitions. (parted) print Disk geometry for /dev/hda: 0.000-5729.062 megabytes Disk label type: msdos Minor Start End Type Filesystem Flags 1 0.031 2000.742 primary FAT boot 2 2000.742 5729.062 extended 5 2000.773 2200.078 logical ext2 7 2200.109 2318.203 logical linux-swap 8 2318.234 4326.328 logical ext2 6 4326.359 5729.062 logical FAT Positionner le drapeau « partition active » sur la partition numéro trois. (parted) set 3 boot on Créer une partition logique avec un système de fichiers ext2. (parted) mkpartfs logical ext2 0.0 692.1 Problèmes • On ne peut manipuler que des partitions non utilisées. • Si on veut, par exemple, changer la taille d’un système de fichiers, il faut au préalable le démonter. • Modifier, changer ou déplacer la partition qui abrite le FS-root • Cette opération oblige à utiliser un système de maintenance bootable. Il faut également modifier le boot primaire qui se trouve dans le MBR. Si l’on utilise lilo, il faut relancer la commande lilo. Si on utilise la disquette bootable du GNU : # mount /dev/hda1 /mnt # hda1 abrite le FS-root # chroot /mnt /sbin/lilo # umount /dev/hda1 • La limite des 1024 cylindres Si l’on utilise un bios ancien ou une ancienne version de lilo, le boot secondaire, qui se trouve en tête de la partition abritant le FS-root doit se trouver dans la limite des 1024 cylindres du disque. • L’insertion de partitions logiques Si le rétrécissement d’une partition logique permet de créer de nouvelles partitions logiques, les partitions logiques qui suivent ont leur numéro décalé du nombre partitions insérées. Il faut en tenir compte dans l’administration du système. Il faut modifier le fichier /etc/fstab. • Vérifier la géométrie Dans le cas d’un disque qui ne possède aucune partition, parted peut se tromper dans l’estimation de sa géométrie (cylindres, têtes, secteurs). Il faut impérativement la vérifier. • Le mode LBA et les partitions FAT Si l’on veut modifier une partition FAT, il faut activer le mode LBA au niveau du bios si ce n’est pas déjà fait et ajouter le drapeau lba à la partition. © TSOFT – Linux Administration 4-11 Module 4 : Gestion de l’espace disque La commande qtparted La commande qtparted est une interface graphique à la commande parted. La commande DiskDruid La commande DiskDruid est incluse dans la procédure d’installation des distributions RedHat et Mandrake. La version Mandrake est plus agréable à utiliser. On démarre avec le 1er cdrom de la distribution Mandrake et on commence l’installation pour accéder au menu de partitionnement. Après écriture sur disque des modifications des partitions, on peut redémarrer le système sans poursuivre la procédure d’installation. Comme parted, DiskDruid peut modifier la taille d’une partition sans détruire le système de fichiers qu’il contient, y compris NTFS. Références Man : parted(8) La documentation du paquetage, notamment le fichier USER qui contient le guide d’utilisation et deux exemples complets d’utilisation. Internet : 4-12 http://www.gnu.org ©TSOFT – Linux Administration Module 4 : Gestion de l’espace disque Arborescence et système de fichiers Arborescence et système de fichiers / / (root) bin etc /home home usr /usr TSOFT - Linux Administration Module 4 : Les systèmes de fichiers - 4.4 L’arborescence (rappel) Les utilisateurs voient une arborescence de fichiers unique. Cette arborescence est en fait l’unification de plusieurs arbres. Chaque arbre est stocké sur un disque local du système Linux ou bien est un arbre distant. La structure d’accueil des fichiers d’un arbre d’un disque du système Linux s’appelle un système de fichiers (File system). Un disque Linux, généralement une partition primaire ou logique, ne peut contenir qu’un seul système de fichiers. Au cours du temps, la structure interne des systèmes de fichiers a évolué pour s’adapter à l’augmentation de la capacité des disques et des fichiers. La procédure d’installation de chaque système Linux effectue la création et le peuplement des systèmes de fichiers initiaux. L’administrateur réalise ensuite la création et la gestion des « systèmes de fichiers » supplémentaires. L’unification des arborescences se fait en attachant la racine d’un arbre d’un disque à un répertoire d’un système de fichiers déjà actif : on dit que l’on procède au montage du système de fichiers (cf. Le montage des systèmes de fichiers). A défaut d’avoir réalisé cette opération, les fichiers d’un système de fichiers sont inaccessibles. Comme il n’existe qu’un seul attachement possible entre la racine d’un arbre d’un système de fichiers et un répertoire, et qu’un disque ne peut contenir qu’un système de fichiers, on confond parfois, dans l’expression, le chemin d’accès au système de fichiers (le chemin de montage) et le disque qui le contient. Pourquoi créer un système de fichiers ? Sachant qu’il n’y a pas de difficulté à créer et à monter un système de fichiers, la question essentielle que se posent les administrateurs est de savoir pourquoi créer des systèmes de fichiers et quel intérêt peut-on en retirer ? © TSOFT – Linux Administration 4-13 Module 4 : Gestion de l’espace disque L’organisation physique du système informatique • On est obligé d’avoir plusieurs systèmes de fichiers si on dispose de plusieurs disques physiques, sachant qu’un disque ne peut contenir qu’un système de fichiers et qu’un système de fichiers ne peut pas s’étendre sur plusieurs disques. Le concept de LVM (cf. Module suivant) modifie cette affirmation. • Les disques amovibles font naturellement l’objet d’une création d’un système de fichiers. Des critères liés à des choix de gestion • La sécurité de fonctionnement est améliorée quand on dispose de plusieurs systèmes de fichiers. Si un système de fichiers est endommagé, les dégâts sont limités au disque qui le contient. • Les performances sont améliorées par la diminution du temps d’accès aux fichiers. Le morcellement des fichiers est réduit à l’espace du disque où il est stocké. • La division de l’espace en plusieurs systèmes de fichiers permet de cloisonner l’espace pour les utilisateurs ou les applications. Comme les utilisateurs ou les applications n’ont le droit de création de fichiers que dans certains répertoires, l’administrateur est certain qu’ils ne pourront pas créer de fichiers de taille supérieure à l’espace disponible du disque où se trouvent leurs répertoires. • Les administrateurs qui font le choix d’effectuer des sauvegardes physiques peuvent ainsi créer des systèmes de fichiers de même taille que les unités d’archivage. • Certaines arborescences sont par nature d’excellentes candidates pour être des systèmes de fichiers (beaucoup de systèmes UNIX le réalisent dès l’installation). Citons entre autres : root (/), /boot, /usr, /home, /var, /tmp, /usr/man, /usr/local. 4-14 ©TSOFT – Linux Administration Module 4 : Gestion de l’espace disque La gestion de l’espace disque, la commande df La gestion de l’espace disque: df # df Filesystem /dev/hda1 /dev/hda6 /dev/hda5 # df -i Filesystem /dev/hda1 /dev/hda6 /dev/hda5 1k-blocks Used Available Use% Mounted on 796033 318675 436234 42% / 101471 454 95777 0% /home 101471 28 96203 0% /tmp Inodes IUsed 206040 28565 26208 215 26208 40 IFree IUse% 177475 14% 25993 1% 26168 0% Mounted on / /home /tmp Module 4 : Les systèmes de fichiers - 4.7 TSOFT - Linux Administration Introduction L’espace disque est une ressource précieuse, même si les capacités des disques ont considérablement évolué ces dernières années. L’administrateur doit en contrôler l’usage. Il dispose pour cela de commandes simples et pratiques dont nous ne faisons ici que rappeler la signification et donner quelques options significatives. La commande df indique l’espace libre des disques contenant des systèmes de fichiers montés. Les tailles sont affichées en kilo-octets. Les principales options sont : -i Affiche les informations sur l’utilisation des inodes et non des blocs. -k Affiche les tailles en kilo-octets. L’option est significative dans le cas où la variable POSIXLY_CORRECT est définie (cf. Remarque). -T Affiche également le type de système de fichiers. La commande du affiche le nombre de blocs d’un kilo-octet utilisés par une arborescence qui peut coïncider avec celle d’un système de fichiers. Les principales options sont : -s Affiche le total seulement. -k Affiche les tailles en kilo-octets (cf. Remarque). Remarque Si la variable d’environnement POSIXLY_CORRECT est définie, les commandes du et df affichent le nombre de blocs de 512 octets. # df SysFichier © TSOFT – Linux Administration 1K-blocs Utilisé Dispo. Util% Monté sur 4-15 Module 4 : Gestion de l’espace disque /dev/hda6 /dev/hda1 /dev/hda9 # df –h SysFichier /dev/hda6 /dev/hda1 /dev/hda9 602684 102454 252208 112268 6114 1096 459800 91050 251112 20% / 7% /boot 1% /home Tail. Util.Disp. Uti% Monté sur 589M 113M 447M 21% / 101M 6.0M 89M 7% /boot 247M 33M 214M 14% /home La commande find La commande find permet de rechercher des fichiers selon différents critères dont celui de la taille et de la date du dernier accès. A titre d’exemple, recherchons les fichiers des utilisateurs dont la taille est supérieure à 100 Ko et dont le dernier accès remonte à plus de 90 jours : # find /home –size +100k –atime +90 –print Purger des fichiers Il existe, en sus, des fichiers qui peuvent être détruits ou purgés, avec une périodicité qui varie selon les cas : Les fichiers créés par les applications dans les répertoires /tmp et /var/tmp. Les fichiers core qui sont générés quand un processus meurt sur réception de certains signaux, souvent émis par le noyau à la suite d’une anomalie de fonctionnement. Ils contiennent l’image du processus quand il est mort et sont destinés aux programmeurs qui veulent effectuer, à chaud, une analyse post-mortem de l’application. Ils peuvent être détruits sinon sans remord. Les fichiers log qui enregistrent des informations relatives au suivi d’un service, d’un logiciel. Ils peuvent être purgés dès que l’administrateur a analysé leur contenu et les a archivés si nécessaire. Remarque En général, les fichiers core ne sont plus créés, car leur taille maximum est nulle par défaut. Pour qu’ils le soient, il faut fixer leur taille limite grâce à la commande ulimit. Le nom est alors core.15370, où 15370 est le PID du process dumpé. $ ulimit -c unlimited $ kill -3 15370 $ ls core* core.15370 Pour vider un fichier, il suffit d’exécuter la commande : $ cp /dev/null fichier # ou > fichier Les principaux fichiers log sont contenus dans le répertoire /var/log, en voici quelques uns : /var/log/*acct /var/log/messages syslogd. /var/log/secure /var/log/maillog /var/log/news/* /var/log/uucp/* /var/log/cron 4-16 Fichiers log du service acct (comptabilité). Principal fichier log du système de log du démon Fichier log des tentatives de connexions infructueuses. Fichier log de la messagerie. Fichier log du service news (Internet). Fichier log du service UUCP. Fichier log du service cron. ©TSOFT – Linux Administration Module 4 : Gestion de l’espace disque /var/run/wtmp /var/log/httpd/* /var/log/samba/* /var/log/lastlog Fichier log, en binaire, des commandes init et login. Ce Fichier est exploité par la commande last. Fichiers log du service Web. Fichiers log du service Samba (accès aux disques Windows). Fichier log des dernières connexions des utilisateurs fichier binaire), utilisé par la commande lastlog. Pour aller plus loin avec la commande logrotate La commande logrotate facilite l'administration des fichiers log. Périodiquement, elle en effectue la rotation, d'où son nom, la compression, la suppression ou encore l'envoi par courrier. Elle est normalement exécutée via cron, souvent quotidiennement. Outre la périodicité, elle peut agir selon la taille. En argument, on indique d’un à plusieurs fichiers de configuration. Ils sont pris en compte dans l'ordre où ils ont été mentionnés. L’ordre est donc important si l'un deux contredit une option déjà fournie dans l'un des fichiers précédents. Si la commande logrotate est opérationnelle dès l’installation de votre système, elle utilise certainement le fichier de configuration /etc/logrotate.conf. Voici un contenu type : # rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # create new (empty) log files after rotating old ones create # uncomment this if you want your log files compressed #compress # RPM packages drop log rotation information into this directory include /etc/logrotate.d # no packages own wtmp -- we'll rotate them here /var/log/wtmp { monthly create 0664 root utmp rotate 1 } # system-specific logs may be also be configured here. /var/log/messages { rotate 5 weekly postrotate /sbin/killall -HUP syslogd endscript } La balise weekly indique que la base de rotation est la semaine. La balise rotate 4 indique que quatre versions des logs antérieurs sont conservées. Prenons comme exemple le log /var/log/messages. Quatre versions antérieures sont conservées messages.1, messages.2, messages.3 et messages.4. La version 4 est la plus ancienne. A la prochaine rotation messages.3 deviendra messages.4, messages.2 messages.3 et messages sera copié dans messages.1 avant d'être réinitialisé, grâce à la balise create. Si la balise rotation vaut 0, les fichiers ne sont pas conservés. © TSOFT – Linux Administration 4-17 Module 4 : Gestion de l’espace disque # ls -l messages* -rw------1 root -rw------1 root -rw------1 root -rw------1 root -rw------1 root root root root root root 44045 130706 209111 243243 197652 mar 9 08:40 messages mar 7 04:02 messages.1 fév 29 17:41 messages.2 fév 22 09:38 messages.3 fév 15 08:54 messages.4 La balise compress, en commentaire, permet de compresser les logs. La directive postrotate contient souvent la commande qui demande au démon de réouvrir le fichier log après le renommage du fichier par logrotate. Cette stratégie est obligatoire pour tout fichier log ouvert en permanence. La requête include inclut les fichiers de configuration des services définis dans le répertoire /etc/logrorate.d. # ls cups httpd named rpm samba snmpd squid syslog tux up2date vsftpd.log yum A titre d’exemple, le contenu du fichier /etc/logrotate.d/cups /var/log/cups/*_log { missingok notifempty sharedscripts postrotate /etc/init.d/cups condrestart >/dev/null 2>&1 || true endscript } La rotation du fichier /var/log/wtmp fait l'objet d'une rotation spécifique mensuelle. Le fichier nous montre, qu'outre les balises globales, il est possible de définir dans /etc/logrotate.conf ou dans un autre fichier de configuration une strophe spécifique pour un ou plusieurs logs du système. Quelques balises compress Compression des fichiers log avec gzip. create mode propriétaire group Les droits, le nom du propriétaire et le groupe du fichier log ifempty Procède à la rotation même si le log est vide (notifempty). mail addresse Adresse de mail où envoyer un log qui doit disparaître au cours d'une rotation, le plus ancien. missingok Ne pas générer de message d'erreur si un log est absent. postrotate/endscript Les commandes comprises entre postrotate et endscript sont exécutées après que la rotation ait été effectuée. pretrotate/endscript Les commandes comprises entre prerotate et endscript sont exécutées avant que la rotation ait été effectuée. Référence Man logrotate(8) 4-18 ©TSOFT – Linux Administration Module 4 : Gestion de l’espace disque Le montage des systèmes de fichiers Le montage de FS / / usr home umount / /dev/hda2 /dev/hda2 pierre mount usr home pierre cathy cathy # mount /dev/hda2 /home # umount /home TSOFT - Linux Administration Module 4 : Les systèmes de fichiers - 4.5 Introduction Dans le système Linux, les fichiers d’un disque, ne sont accessibles que si le disque a été monté. Le montage d’un système de fichiers consiste à attacher la racine de l’arbre du système de fichiers à un répertoire d’un système de fichiers déjà actif. Cette opération, qui s’appelle le montage du système de fichiers, est réalisée par la commande mount. Le démontage, c’est à dire la suppression du lien entre le répertoire de montage et le système de fichiers est effectué par la commande umount. Les fichiers d’un système de fichiers ne sont accessibles, par les commandes usuelles (cp, rm, mv, cat,…), que s’il est monté. Le disque /dev/hda2 contient les répertoires de connexion des utilisateurs. Le répertoire /home est un répertoire vide de l’arborescence active constituée des systèmes de fichiers déjà montés. La commande mount /dev/hda2 /home attache la racine du système de fichiers de /dev/hda2 au répertoire /home. La racine du système de fichiers coïncide maintenant avec le chemin d’accès au répertoire de montage /home. Quand l’opération de démontage umount /dev/hda2 a été réalisée, les fichiers des répertoires pierre et cathy sont de nouveau inaccessibles, le répertoire /home est vide. Remarque Si le répertoire de montage n’est pas vide au moment de l’exécution de la commande mount, les fichiers qu’il contient sont cachés jusqu’au démontage. Lors du démarrage du système, le disque qui contient le système de fichiers principal, celui où se trouve le fichier racine /, doit être connu pour être automatiquement monté. Ce disque est un paramètre du démarrage du système. Il est défini par la variable root dans le fichier /etc/lilo.conf, le fichier de configuration du chargeur lilo. En l’absence de cette variable, c’est le disque indiqué dans l’image même du noyau © TSOFT – Linux Administration 4-19 Module 4 : Gestion de l’espace disque qui sera monté comme système de fichier racine (cf. Module 15 : Noyau et périphériques). La commande mount, qui est développée plus loin, est simple d’emploi. Utilisée sans argument, elle affiche les systèmes de fichiers montés, en fait le contenu du fichier /etc/mtab où Linux mémorise les systèmes de fichiers actuellement montés. On peut sinon, comme présenté dans le transparent, réaliser un montage simple en indiquant le nom du disque à monter, le répertoire de montage et parfois le type de système de fichiers du disque. # mount /dev/hda6 on / type ext3 (rw) none on /proc type proc (rw) usbdevfs on /proc/bus/usb type usbdevfs (rw) /dev/hda1 on /boot type ext2 (rw) none on /dev/pts type devpts (rw,gid=5,mode=620) /dev/hda9 on /home type xfs (rw) none on /dev/shm type tmpfs (rw) # mount /dev/hda10 /mnt/travail/ # mount | grep /dev/hda10 /dev/hda10 on /mnt/travail type jfs (rw) Remarque Les lignes produites par la commande mount qui ne commencent pas par /dev/xxx correspondent à des pseudos systèmes de fichiers qui ne nous concernent pas actuellement, tel none on /proc type proc (rw)qui nous permettra de voir les tables du système comme des fichiers. Rappelons que les supports amovibles disquettes, CD-ROM et clé USB doivent eux aussi, comme n’importe quel disque, être montés pour que l’on puisse accéder à leurs fichiers. # mount /dev/cdrom /mnt/cdrom/ mount : Périphérique de bloc/dev/cdrom est protégé en écriture. Montage en lecture seule. # mount -t msdos /dev/sda1 /mnt/cle_usb/ # mount | grep sda1 /dev/sda1 on /mnt/cle_usb type msdos (rw) 4-20 ©TSOFT – Linux Administration Module 4 : Gestion de l’espace disque Les différents types de systèmes de fichiers Les différents types de FS ext2 Le FS standard du système Linux nfs Le FS réseau de Sun (Network FS) iso9660 Le FS utilisé par les CD-ROM msdos vfat Les FS FAT16 et FAT32 de MS-DOS et Windows smb Le FS réseau avec le protocole SMB de Microsoft ext3 La version journalisée de ext2 reiserfs jfs xfs D’autres systèmes de fichiers journalisés TSOFT - Linux Administration Module 4 : Les systèmes de fichiers - 4.6 Introduction Le système UNIX a dû s’adapter aux évolutions technologiques des disques magnétiques et principalement à l’accroissement des capacités. L’organisation du système de fichiers défini par AT&T, pour le système UNIX system V, date des années 1980. Il est connu sous le nom de s5 et reconnu dans la plupart des systèmes UNIX. Le type s5 présente aujourd’hui deux inconvénients : - La taille du bloc qui sert d’unité d’allocation d’espaces aux fichiers est de 1 kilooctet. Elle favorise le morcellement de gros fichiers. - Le regroupement de tous les blocs de gestion du système de fichiers en tête du disque peut générer des déplacements importants des têtes de lecture et d’écriture. Pour pallier cet inconvénient, le système UNIX BSD a introduit le type FFS (Fast File System) qui propose des granules d’allocation de 4, 8 Ko ou plus, fragmentables en blocs de 1 Ko pour les petits fichiers. Il éclate aussi le disque en groupes de cylindres. Chaque groupe de cylindres contient des blocs de données de gestion du « FFS ». Le système Linux est le descendant direct du système d’exploitation Minix. Dans les premières versions, Linus Torvald a préféré implémenter le système de fichiers Minix, plutôt que d’en créer un nouveau. Les limitations du système de fichiers « Minix », principalement la taille maximale de 64 Mo et les noms de fichiers courts, ont poussé la communauté Linux, en 1992, à créer une interface, la VFS (Virtual File System). Elle permet au noyau Linux de s’adapter à n’importe quel type de système de fichiers. A cette occasion, un nouveau système de fichiers, appelé ext (Extended File System), a été développé pour le système Linux. Le système ext remédie aux deux insuffisances de Minix. Il permet aux partitions d’atteindre une taille de deux Go et les noms de fichiers longs (255 caractères). © TSOFT – Linux Administration 4-21 Module 4 : Gestion de l’espace disque Le système ext possédait lui aussi quelques imperfections qui amenaient à une dégradation des performances dans le cas de partitions de grande taille. On aboutit ainsi au système de fichiers baptisé ext2 (Second Extended File System), qui a longtemps été le standard de fait des systèmes de fichiers de Linux. Il existe des types de système de fichiers dont le choix n’incombe pas à l’administrateur mais relève d’utilisations particulières. Parmi ceux-ci, on peut noter le système de fichiers des CD-ROM qui est ISO. Les principaux types de systèmes de fichiers L’interface VFS du noyau fait de Linux un système d’exploitation capable de supporter n’importe quel système de fichiers pour peu que la société qui l’a créé mette sa technologie en Open Source et développe le module adéquat. Il serait donc vain et inutile de vouloir citer tous les systèmes de fichiers supportés par Linux. A peine établie, la liste serait obsolète. C’est pourquoi nous nous sommes limités aux plus significatifs ou au plus pérennes. Les premiers systèmes de fichiers de Linux Système de fichiers Description minix Le premier système de fichiers de Linux. Bien que limité, il est pratique pour les systèmes de fichiers sur disquette ou en RAM. On peut cependant le considérer comme obsolète. ext La version améliorée de Minix. Il est aujourd’hui également obsolète et remplacé par ext2. ext2 C’était jusqu’à il y a peu le standard des systèmes de fichiers sous Linux. Bien que son usage tende fortement à diminuer, il reste incontournable. Il est reconnu par toutes les distributions Les systèmes de fichiers journalisés Les systèmes de fichiers journalisés sont plus performants et plus sûrs. Ils sont plus performants de par leur organisation interne, par exemple l’organisation des répertoires, et plus sûrs en supprimant de nombreux risques d’incohérences en cas de problème (cf. Module 5 : Les systèmes de fichiers journalisés). Système de fichiers journalisés 4-22 Description ext3 C’est la version journalisée de ext2. Son intérêt majeur, au delà de toutes considérations de performance réside dans sa compatibilité montante et ascendante avec ext2 reiserfs Un système de fichiers journalisé créé pour Linux par Monsieur Reiser. jfs Un système de fichiers journalisés issu de la technologie IBM pour AIX. xfs Un système de fichiers journalisés issu de la technologie de Silicon Graphics. ©TSOFT – Linux Administration Module 4 : Gestion de l’espace disque Les systèmes de fichiers de MSDOS et de Windows Linux supporte tous les systèmes de fichiers de Microsoft. Il faut simplement noter que le module nécessaire à NTFS n’est généralement pas pris en charge par le noyau qui vous est fourni. Cela implique de recompiler le noyau en cochant la case demandant le support de NTFS. Système Description msdos Le système de fichiers FAT16 de MS-DOS. Il permet le montage de systèmes de fichiers MS-DOS dans l’arborescence Linux. umsdos C’est un système de fichiers MS-DOS étendu. Il implémente les noms de fichiers longs, les « UID » et les « GID », les fichiers spéciaux, les droits POSIX sur un système de fichiers DOS. vfat Le système FAT32 de Windows. Il permet le montage des systèmes de fichiers de Windows dans Linux. ntfs Le système de fichiers de Windows NT. Les systèmes de fichiers distribués Système de fichiers Description nfs Le système de fichiers distribués mis par la société SUN dans le domaine public. Il permet d’accéder, de façon transparente, à des disques d’ordinateurs distants. smb Le système de fichiers qui implémente le protocole SMB de Microsoft pour accéder à des disques partagés d’ordinateurs distants fonctionnant avec Windows. D’autres systèmes de fichiers Système de fichiers Description iso9660 Le système de fichiers pour CD-ROM, conforme à la norme ISO 9660. Il intègre les formats « High Sierra » et « RockRidge » qui décrit les fichiers ISO 9660 au format d’un hôte UNIX. proc Le pseudo système de fichiers qui permet d’accéder à la mémoire du noyau (cf. Module 15 : Noyau et périphérique). ramfs Le système de fichiers ramfs est utilisé pour créer des systèmes de fichiers en mémoire vive. La taille du système de fichiers croît ou décroît selon la place mémoire disponible. Cela diffère de la création d’un disque en RAM (« Ram Disk ») sur lequel on peut créer un système de fichiers d’un type quelconque. cramfs © TSOFT – Linux Administration Un système de fichiers compressé en lecture seulement qui peut être flashé en mémoire morte. 4-23 Module 4 : Gestion de l’espace disque ncpfs Le système de fichiers qui implémente le protocole réseau utilisé par Netware de Novell. hfs Le système de fichiers du Macintosh d’Apple. sysv Le système de fichiers d’UNIX System V (« s5 » d’UNIX). ufs Le système de fichiers d’UNIX BSD. Remarque Le montage d’un système de fichiers sur un système de fichiers d’un type différent est possible et complètement transparent pour l’administrateur. Quel système de fichiers et quels paramètres de construction choisir ? Critères de choix Les utilisateurs de Linux sont très partagés et il n’est pas rare d’entendre des affirmations péremptoires que leurs auteurs auraient bien du mal à justifier. Nous allons essayer de dégager quelques critères objectifs. 1. La taille du système de fichiers. Un petit système de fichiers dont le contenu évolue peu peut être créée de type ext2. En cas de problème, son contrôle et sa réparation seront rapides, même sans journalisation. Si c’est un système de fichiers fondamental pour le démarrage du système, tel que /boot, il est utile qu’il soit reconnu par n’importe quel disque de secours, y compris le disque d’installation de votre système. A l’inverse, on privilégie les systèmes de fichiers journalisés pour les disques de grande capacité. 2. La visibilité du système de fichiers par plusieurs systèmes d’exploitation. Si vous souhaitez utiliser votre clé USB à la fois sous Windows et sous Linux, il est nécessaire de la conserver en msdos ou vfat, car Linux connaît ses systèmes de fichiers alors que l’inverse n’est pas vrai. 3. Les paramètres possibles du système de fichiers : taille des blocs, nombre d’inodes statiques ou dynamiques… 4. Les outils complémentaires qui sont fournis avec le système de fichiers, principalement les commandes de sauvegarde incrémentales ou les ACL’s. 5. Les benchmarks que vous pouvez vous procurer sur Internet. 6. Les tests que vous aurez réalisés. Les paramètres des systèmes de fichiers Les paramètres fondamentaux de création d’un système de fichiers sont : 1. La taille, souvent par défaut, celle du disque où l’on crée le système de fichiers. 2. Le nombre d’inodes, c’est à dire le nombre de fichiers que l’on pourra y créer au maximum. 3. La taille d’un bloc. 4-24 ©TSOFT – Linux Administration Module 4 : Gestion de l’espace disque Panorama des commandes de gestion des systèmes de fichiers Panorama des commandes de gestion de FS Commandes génériques Commandes spécifiques mkfs Crée un FS mkfs.type_fs Crée un FStype_fs (ext2…) fsck Vérifie un FS fsck.type_fs Vérifie un FS mount Monte un FS Autres commandes umount Démonte un FS df Espace libre ext2 : tune2fs, dumpe2fs, debugfs dump, restore du Espace occupé xfs : xfs_growfs, xfs_admin lsof, fuser Identifie les processus reiserfs : reiserfstune, resize_reiserfs Module 4 : Les systèmes de fichiers - 4.8 TSOFT - Linux Administration Introduction Les commandes de gestion de systèmes de fichiers sont nombreuses. Dans Linux, on trouve deux familles de commandes : • Les commandes génériques héritées du système UNIX, comme mkfs et fsck. • Les commandes propres à un système de fichiers. Il existe deux familles de commandes : Les commandes génériques qui peuvent s’appliquer à tous les systèmes de fichiers. La commande mkfs et la commande fsck ne sont presque jamais utilisées. Elles obligent à indiquer le type du système de fichiers, via l’option –t suivie du type du système de fichier. La commande mount s’applique à tous les systèmes de fichiers. Elle possède l’option –o pour préciser les options propres à un système de fichiers (cf. commande mount). Les autres commandes, telles df, du ou lsof ne nécessitent pas d’options particulières pour s’appliquer à un système de fichiers particulier. Les commandes propres à un système de fichiers sont souvent plus simples à utiliser. Pour créer ou réparer un système de fichiers, on privilégie la commande spécifique. Son nom est souvent mkfs.type_fs ou fsck.type_fs. # ls mkfs* fsck* fsck fsck.ext3 mkfs.reiserfs fsck.cramfs fsck.jfs mkfs.vfat fsck.ext2 fsck.msdos mkfs.xfs © TSOFT – Linux Administration fsck.reiserfs mkfs mkfs.ext3 fsck.vfat mkfs.cramfs mkfs.jfs fsck.xfs mkfs.ext2 mkfs.msdos 4-25 Module 4 : Gestion de l’espace disque Au cas où le nom attendu n’existe pas, il est possible de créer un lien symbolique. # ls -l mkfs.reiserfs lrwxrwxrwx 1 root root mkfs.reiserfs -> mkreiserfs 10 aoû 29 17:00 Précision sur la suite du module Le module a pour objectif d’apprendre aux novices à mettre en œuvre, de manière élémentaire, les systèmes de fichiers. Pour cela, nous avons choisi d’utiliser le système de fichiers ext2, non pas pour le valoriser, mais parce qu’il est simple. Les lecteurs qui ont déjà une première expérience des systèmes de fichiers peuvent passer directement au module suivant, le module 6, qui donne aux lecteurs les moyens de mettre en œuvre les autres systèmes de fichiers. mkfs, mke2fs Parmi les commandes standard d’UNIX, la commande mkfs est bien sûr la plus importante. C’est elle qui crée un système de fichiers sur un disque. Elle comporte les trois paramètres fondamentaux d’un système de fichiers : • Le nom du disque où le système de fichiers doit être créé. • Le type du système de fichiers à créer, pour mkfs. • La taille du système de fichiers à créer, si l’on ne veut pas utiliser tout le disque. mount La commande mount réalise l’attachement d’un système de fichiers d’un disque Linux à un répertoire d’un système de fichiers déjà monté. Elle comporte principalement le nom du disque et le chemin absolu du répertoire de montage. Sa syntaxe est la suivante : mount [-hV] mount -a [-fnrvw] [-t type] mount [-fnrvw] [-o options [,...]] périph | rép mount [-fnrvw] [-t type] [-o options] périph rép 4-26 -h Affiche un message d’aide. -V Affiche le numéro de version. -a Procède au montage de tous les systèmes de fichiers décrits dans le fichier /etc/fstab (cf. Automatiser le montage des systèmes de fichiers). -t type Le type indique le type de système de fichiers qui réside sur le disque à monter. Il est obligatoire si ce n’est pas ext2. -f L’exécution de la commande est simulée mais elle n’est pas exécutée. -n Le système de fichiers monté n’est pas mémorisé dans /etc/mtab. C’est obligatoire si l’on souhaite que /etc soit sur un disque différent de /. -r Le système de fichiers est monté en lecture seulement. -w Le système de fichiers est monté en lecture et en écriture. C’est la valeur par défaut. ©TSOFT – Linux Administration Module 4 : Gestion de l’espace disque -v Le mode bavard. -o options Les options qui suivent « -o » sont séparées par des virgules. Certaines sont communes à tous les types de systèmes de fichiers, d’autres sont spécifiques. Communes suid/nosuid Prendre en compte, ou non, les bits « s » des fichiers. async/sync Les entrées/sorties sont asynchrones ou synchrones. ro/rw Equivalent à « -r » et « -w ». remount Remonter un système de fichiers déjà monté. Cette possibilité est intéressante quand on souhaite modifier les attributs de montage dynamiquement. loop=[/dev/loop<n>] Monte un fichier ordinaire contenant l’image d’un système de fichiers, par exemple créé par dd. Le système de fichiers est associé à un périphérique /dev/loop<n>, où <n> est compris entre 0 et 7. A défaut, c’est le premier disponible qui est utilisé. Valides pour ext2 et ext3 noatime Dans l’inode, la date de dernière consultation du fichier n’est pas modifiée. Quand cette information a peu d’importance et qu’il existe de nombreux fichiers, souvent lus, cette option peut améliorer les performances. Cela peut être le disque contenant le courrier des utilisateurs. Spécifiques à nfs rsize=8192 wsize=8192 Fixe la taille des buffers utilisés pour les opérations de lecture et d’écriture à 8192 octets au lieu de 1024 par défaut. Ceci améliore la vitesse du système nfs. Montage d’un système de fichiers. # mount /dev/hda3 /opt/appli La commande mount, exécutée sans argument, affiche les systèmes de fichiers et les attributs de montage. # mount /dev/hda5 on / type ext2 (rw) none on /proc type proc (rw) localhost:(pid264) on /net type nfs (intr,rw,port=1023,timeo=8,retrans=110,indirect,map=/etc/amd.conf,de v=00000002) /dev/fd0 on /mnt/floppy type ext2 (rw) /dev/hda1 on /win98 type vfat (rw) Remarques • Si un système de fichiers est monté sur un répertoire non vide, les fichiers du répertoire sont cachés pendant toute la durée du montage. • Il existe une arborescence dédiée au montage des systèmes de fichiers : /mnt, /mnt/floppy, /mnt/cdrom. L’utilisation de /mnt n’est pas une obligation. © TSOFT – Linux Administration 4-27 Module 4 : Gestion de l’espace disque umount La commande umount, qui démonte un système de fichiers, rompt le lien qui existe entre le répertoire de montage et le système de fichiers. Les fichiers du disque sont à nouveau inaccessibles jusqu’au prochain montage. # umount /dev/hda3 ou # umount /mnt L’argument de la commande umount est indifféremment le nom du disque ou le répertoire de montage (le lien est unique). du et df Les commandes du et df permettent de gérer l’espace disque (cf. Gestion de l’espace disque). lsof et fuser Les commandes lsof et fuser permettent de lister les fichiers ouverts et de connaître les applications qui y accèdent. La commande lsof donne plus d’informations que la commande fuser, la commande standard du monde UNIX. # lsof # lsof /dev/hda5 de fichiers de la # liste des fichiers ouverts # liste les processus qui accèdent au système # kill $(lsof -t /dev/hda5) précédemment # fuser -k /dev/hda5 # partition /dev/hda5 # tue les processus identifiés e2label La commande e2label affiche ou modifie le label d’un disque. Dans les distributions, comme RedHat ou Fedora, il faut penser à modifier le fichier /etc/fstab quand on modifie le label d’un disque. # e2label /dev/hda1 /boot # e2label /dev/hda1 demarre # e2label /dev/hda1 demarre Ce qu’il faut retenir Création d’un système de fichiers La commande mke2fs est utilisée avec les options par défaut. C’est d’ailleurs souvent suffisant, y compris pour les autres types de systèmes de fichiers étudiés dans le module suivant. # mke2fs /dev/hda10 # mkfs.ext2 /dev/hda10 mke2fs 1.32 (09-Nov-2002) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 92736 inodes, 185212 blocks 9260 blocks (5.00%) reserved for the super user 4-28 ©TSOFT – Linux Administration Module 4 : Gestion de l’espace disque First data block=0 6 block groups 32768 blocks per group, 32768 fragments per group 15456 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840 Writing inode tables: done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 37 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. # Des informations produites par la commande, nous retiendrons dans l’immédiat les éléments suivants : • l’unité d’allocation, le bloc, a une taille de 4096 octets. Un fichier occupe un espace disque qui est un nombre entier de blocs. • il y a 185212 blocs ainsi 92736 inodes. Cette valeur précise le nombre maximum de fichiers que l’on peut créer sur le disque. Création du répertoire de montage Rappelons qu’il faut obligatoirement monter un disque pour rendre possible l’accès aux fichiers. Le répertoire est de fait dédié à cet usage. # mkdir /mnt/travail Montage du disque Le montage est réalisé par la commande mount. Le chapitre suivant nous explique comment rendre ce montage permanent. # mount /dev/hda10 /mnt/travail # mount | grep hda10 /dev/hda10 on /mnt/travail type ext2 (rw) # df /mnt/travail SysFichier 1K-blocs Utilisé Dispo. Util% Monté sur /dev/hda10 729176 20 692116 1% /mnt/travail Les nombres produits par les commandes mke2fs et df nous permettent de calculer, en kilo octets, les valeurs suivantes : Taille totale du disque : 185.212 x 4 = 740848 Ko Espace disponible pour les fichiers : 729176 Ko Espace utilisé pour les blocs de gestion : 11672 Ko L’espace utilisé pour la gestion du système de fichiers est principalement occupé par les inodes. Un inode ext2 occupe 128 octets. On obtient 92736 x128 / 1024 = 11592 Ko. Le système de fichiers est disponible. Ce n’est plus maintenant qu’une affaire de droits. A chaque fois qu’il est fait mention de la racine du système de fichiers, il faut entendre le répertoire de montage auquel elle a été associée. Utilisation transparente du système de fichiers # cd /mnt/travail # cp /etc/group . # cp /bin/bash . # echo "Nouveau fichier" > fichier # ls –l total 640 -rwxr-xr-x 1 root root © TSOFT – Linux Administration 626028 mar 1 09:11 bash 4-29 Module 4 : Gestion de l’espace disque -rw-r--r-1 root root -rw-r--r-1 root root drwx-----2 root root # df /mnt/travail SysFichier 1K-blocs /dev/hda10 729176 16 mar 719 mar 16384 mar 1 09:12 fichier 1 09:11 group 1 08:10 lost+found Utilisé Dispo. Util% Monté sur 644 691492 1% /mnt/travail Démontage du système de fichiers Le démontage d’un disque rend inaccessibles les fichiers qu’il contient. Le démontage ne peut se faire que si le système de fichiers est inutilisé. # pwd /mnt/travail # umount /dev/hda10 umount : /mnt/travail : périphérique occupé # lsof /dev/hda10 COMMAND PID USER FD TYPE DEVICE SIZE NODE bash 1072 root cwd DIR 3,10 4096 2 lsof 9667 root cwd DIR 3,10 4096 2 lsof 9668 root cwd DIR 3,10 4096 2 # cd # lsof /dev/hda10 # umount /dev/hda10 # ls /mnt/travail/ NAME /mnt/travail /mnt/travail /mnt/travail Le répertoire de montage est vide, le lien a été rompu avec la racine du système de fichiers de /dev/hda10. Nouveau montage # mount /dev/hda10 /mnt/travail # ls /mnt/travail bash fichier group lost+found Les fichiers sont de nouveau accessibles par le chemin de montage /mnt/travail. 4-30 ©TSOFT – Linux Administration Module 4 : Gestion de l’espace disque Automatiser le montage des systèmes de fichiers Automatiser le montage de FS # more /etc/fstab /dev/hda5 / ext2 defaults /dev/hda6 swap swap defaults /dev/cdrom /mnt/cdrom iso9660 noauto,ro 1 Fichier spécial bloc abritant le FS 6 4 2 Répertoire de montage 1 1 0 0 0 0 3 Options de montage Type de FS (minix,ext2, nfs,...) Ordre de contrôle pour fsck 5 Système de fichiers à sauver pour dump Module 4 : Les systèmes de fichiers - 4.9 TSOFT - Linux Administration Prédéfinition des paramètres de montage Les disques qui contiennent des systèmes de fichiers doivent, en général, être montés à chaque démarrage du système et démontés à chaque arrêt, le montage étant toujours réalisé sur le même répertoire. Pour automatiser ces opérations, l’administrateur d’un système Linux doit modifier le fichier /etc/fstab qui contient la liste des disques à monter automatiquement. La prise en compte sera réalisée dès le prochain démarrage du système. C’est la seule opération à réaliser ! C’est la commande mount –a, exécutée par les scripts de démarrage, qui prend en compte le contenu du fichier /etc/fstab. Ce fichier contient une ligne par système de fichiers. Les champs sont respectivement : • Le nom du disque en mode bloc (le fichier spécial de type b). Dans certaines distributions, comme RedHat ou Fedora, on trouve la mention de l’étiquette, c’est à dire du nom que l’administrateur a attribué au disque à la création du système de fichiers. Lors de l’installation c’est le répertoire de montage qui est utilisé comme étiquette. Cette solution est pratique si l’on est amené à changer le disque d’emplacement (de /dev/hda en /dev/hdb), il n’y a pas à modifier le fichier /etc/fstab. # cat /etc/fstab LABEL=/boot /boot LABEL=/home /home ext2 xfs defaults defaults 1 2 1 2 • Le chemin d’accès absolu au répertoire de montage. • Le type du système de fichiers. • Les attributs de montage. L’attribut le plus fréquent est rw (read/write) qui donne un accès complet au système de fichiers. L’accès aux fichiers dépend, quant à lui, © TSOFT – Linux Administration 4-31 Module 4 : Gestion de l’espace disque des droits dont on dispose sur eux. L’attribut ro limite l’accès à la lecture seulement. L’attribut noauto indique que le système de fichiers ne doit pas être pris en compte par l’exécution de la commande mount –a. L’existence d’une ligne de montage d’un système de fichiers avec l’attribut noauto permet de simplifier l’exécution de la commande mount à laquelle il suffit de fournir en argument le nom du disque ou le chemin de montage. # more /etc/fstab /dev/cdrom /mnt/cdrom iso9660 noauto,ro 00 # mount /dev/cdrom ou # mount /mnt/cdrom Il est possible de mentionner d’autres attributs : suid, nosuid qui indiquent la prise en compte (suid) ou non (nosuid) du bit s des fichiers exécutables (cf. Module 3 : Les fichiers). Par défaut l’attribut est suid. usrquota et grpquota qui signifient que la gestion des quotas (cf. Module 5 : Les quotas) est active pour ce système de fichiers. Remarques Les attributs de montage peuvent être précisés dans la ligne de commande mount. Le choix des attributs de montage et l’automatisation peuvent être facilement réalisés par l’outil intégré d’administration, ce qui évite de mémoriser la forme du fichier d’automatisation. • L’indication pour la commande de sauvegarde dump si le système de fichiers doit être sauvegardé. Si le champ est à 0, le système de fichiers ne sera pas sauvegardé. • L’indication pour la commande fsck de l’ordre dans lequel elle doit contrôler les systèmes de fichiers. Il est ignoré si la valeur est 0. # echo "/dev/hda10 /mnt/travail ext2 defaults 1 2" >> /etc/fstab # mount -a # mount … /dev/hda9 on /home type xfs (rw) … /dev/hda10 on /mnt/travail type ext2 (rw) # df /mnt/travail/ SysFichier 1K-blocs Utilisé Dispo. Util% Monté sur /dev/hda10 729176 644 691492 1% /mnt/travail Pour aller plus loin Déplacer une arborescence dans un système de fichiers A titre d’exemple, nous présentons le déplacement d’une arborescence, ici /usr/local, dans un système de fichiers créé à cet effet. Il est fréquent d’avoir oublié, à l’installation, de créer un système de fichiers, pour une arborescence. Après avoir éventuellement libéré de la place sur un disque, il est possible de transférer l’arbre sur le nouveau système de fichiers créé sur la nouvelle partition. Visualisation des systèmes de fichiers montés. # df Sys. de fich. sur /dev/hda3 4-32 1K-blocs 497861 Occupé Disponible Capacité Monté 110135 362022 24% / ©TSOFT – Linux Administration Module 4 : Gestion de l’espace disque /dev/hda1 none /dev/hda6 /dev/hda2 /dev/hda5 /dev/hda8 102454 58940 256194 4128320 300137 102454 8542 0 8820 2683412 68734 4127 88622 58940 234146 1235120 215907 93037 9% 0% 4% 69% 25% 5% /boot /dev/shm /tmp /usr /var /home Visualisation des partitions. # fdisk –l Disk /dev/hda: 6007 MB, 6007357440 bytes 240 heads, 63 sectors/track, 776 cylinders Units = cylindres of 15120 * 512 = 7741440 bytes Périphérique Amorce Début Fin Blocs /dev/hda1 * 1 14 105808+ 83 /dev/hda2 15 569 4195800 83 /dev/hda3 570 637 514080 83 /dev/hda4 638 776 1050840 5 /dev/hda5 638 678 309928+ 83 /dev/hda6 679 713 264568+ 83 /dev/hda7 714 748 264568+ 82 /dev/hda8 749 762 105808+ 83 Id Système Linux Linux Linux Etendue Linux Linux Echange Linux Linux Création d’une nouvelle partition. # fdisk /dev/hda Commande (m pour aide) : n Premier cylindre (763-776, 763 par défaut) : Utilisation de la valeur par défaut 763 Dernier cylindre ou +size ou +sizeM ou +sizeK (763-776, 776 par défaut) : Utilisation de la valeur par défaut 776 Commande (m pour aide) : w La table de partition a été modifiée ! Appel de ioctl() pour relire la table de partition. WARNING: Re-reading the partition table failed with error 16: Périphérique ou ressource occupé. The kernel still uses the old table. The new table will be used at the next reboot. Synchronisation des disques. Après avoir rebooté. # fdisk –l … /dev/hda9 763 776 105808+ 83 Linux Création d’un répertoire de montage et du système de fichiers. # mkdir /usr/local2 Création du système de fichiers. # mkfs.ext3 /dev/hda9 mke2fs 1.34 (25-Jul-2003) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) … 180 days, whichever comes first. # Use tune2fs -c or -i to override. Montage et transfert des fichiers (nous savons qu’il n’y a pas de fichiers de nom .xxx). # mount /dev/hda9 /usr/local2 # mv /usr/local/* /usr/local2 # ls /usr/local © TSOFT – Linux Administration 4-33 Module 4 : Gestion de l’espace disque # ls /usr/local2 bin etc games include lib libexec lost+found sbin share src Démontage et renommage de /usr/local2 en /usr/local. # umount /dev/hda9 # mv /usr/local2 /usr/local # ls -d /usr/local* /usr/local Modification du fichier /etc/fstab et montage du système de fichiers. # vi /etc/fstab # tail -1 /etc/fstab /dev/hda9 /usr/local 1 2 # mount –a # mount … /dev/hda5 on /var type ext3 (rw) /dev/hda9 on /usr/local type ext3 (rw) # ls /usr/local bin etc games include lib libexec 4-34 ext3 lost+found defaults sbin share src ©TSOFT – Linux Administration Module 4 : Gestion de l’espace disque Atelier 4 : Les systèmes de fichiers Atelier 4 : Les systèmes de fichiers Objectifs : Savoir monter et démonter un FS Savoir surveiller l’espace disque Savoir gérer l’arborescence des fichiers en tenant compte des FS Durée : 60 minutes. TSOFT - Linux Administration Module 4 : Les systèmes de fichiers - 4.10 Exercice n°1 A l’aide de la commande fdisk, visualisez les partitions des disques durs de votre ordinateur. Décrivez le résultat. Exercice n°2 A l’aide de la commande parted, réduisez la taille d’une partition pour libérer de l’espace disque. Une fois cette espace libéré, créez une nouvelle partition. Visualisez les partitions. Supprimez la partition. Exercice n°3 Recréez la partition précédente en utilisant la commande fdisk. Exercice n°4 Quels sont les différents FS montés, à quels fichiers spéciaux sont-ils associés, quels sont leurs répertoires de montage ? Exercice n°5 Quelle est la place libre, en blocs de 512 octets, restant sur chaque FS ? Exercice n°6 Prenez un CD-ROM ayant un format compatible ISO 9660 (la plupart le sont). Montez-le, listez son arborescence et démontez-le. © TSOFT – Linux Administration 4-35 Module 4 : Gestion de l’espace disque Exercice n°7 Les systèmes de fichiers NFS et SMB sont des systèmes de fichiers distribués sur un réseau, en quoi diffèrent-ils ? Exercice n°8 Résumez brièvement le rôle des principales commandes de gestion de système de fichiers de Linux. Exercice n°9 On désire installer un logiciel pour jouer au blackjack qui fait 6 Mo dans le répertoire /home/pierre/games/blackjack. En utilisant le résultat de la commande df, donnée ciaprès, est-ce que l’opération est réalisable ? Si non, est-ce qu’il y a une autre solution ? # df Filesystem /dev/hda1 /dev/hda6 /dev/hda5 1k-blocks Used Available Use% Mounted on 796033 318675 436234 42% / 101471 95777 454 100% /home 101471 28 96203 0% /usr Exercice n°10 L’utilisateur pierre visualise son fichier .profile (/home/pierre/.profile) grâce à la commande more. L’administrateur peut-il démonter le FS /home ? Si non, pourquoi ? Que doit-il faire pour y arriver ? Exercice n°11 Le FS /dev/hda8 est monté sur le répertoire /games. Que doit-on faire pour que ce FS ne soit accessible qu’à l’utilisateur pierre ? Exercice n°12 Sans utiliser la commande debugfs, comment l’administrateur peut-il retrouver tous les fichiers liés à un fichier dont on connaît le chemin, exemple : /home/pierre/.profile ? Exercice n°13 Détruisez tous les fichiers de nom core*. Exercice n°14 Quels sont les gros fichiers (taille supérieure à 1 Mo) modifiés il y a peu de temps (dans la journée) ? Exercice n°15 (exercice long, environ 30 minutes) Transférez l’utilisateur pierre sur une disquette. Au préalable, écrivez les opérations à réaliser. 4-36 ©TSOFT – Linux Administration