Tâches d'administration Unix : disques et fichiers Administration d'unix : Système de fichiers...2 Les fichiers spéciaux...2 Définition...2 La commande Mknod...2 Majeurs et Mineurs...3 Prise en compte d'une partition disque par le système...4 Utilitaires de sauvegarde et de restauration...5 Liste commentée d'utilitaires...5 Exemples commentés :...6 Syntaxe de la commande cpio et exemples...7 Syntaxe de la commande tar et exemples...9 Intégrité du système de fichiers...10 Arrêt du système...10 Conclusion sur le système de fichiers UNIX...11 Annexe 1 : Gestion des partitions de disques sous Linux...12 esaip Angers Administration Unix : disques et fichiers 1 / 12
Administration d'unix : Système de fichiers Pour l'organisation du système de fichiers d'unix à partir des inodes, voir le cours "Unix utilisateur". On pourra en particulier utiliser la commande ls il pour voir apparaître, en même temps que les numéros d'inode, les différentes informations de gestion des fichiers et répertoires et vérifier que les fichiers créés par ln, comme liens directs, ont le même numéro d'inode que le fichier d'origine. Les fichiers spéciaux Définition Un fichier spécial permet l'accès à un périphérique (disques, lignes asynchrones, bandes magnétiques etc... Il possède un inode, comme tout fichier, ou seront en particulier enregistrés les droits d'accès attachés au périphérique. Mais cet inode ne contient pas d'adresses de blocs de données, ni de taille de fichier: il contient les informations permettant d'identifier le driver (programme système) qui gère le périphérique. La commande Mknod Un fichier spécial est créé par la commande mknod Exemple : mknod /dev/dsk/c3d0s0 b 0 140 nom du fichier spécial mode bloc majeur mineur Les fichiers spéciaux disques sont créés en mode bloc (b) pour des accès utilisant les tampons (buffers) de la mémoire cache. en mode caractère (c) pour des accès directs aux disques Certains utilitaires utiliseront l'accès en mode caractère, mais en général l'accès aux fichiers disques est réalisé en mode bloc. Les fichiers spéciaux concernant des périphériques autres que les disques ne sont créés qu'en mode caractère.
Majeurs et Mineurs Les majeurs et les mineurs sont deux nombres caractéristiques d'un fichier spécial. Les majeurs et les mineurs sont spécifiques à chaque constructeur, et dépendent pour partie de la configuration matérielle utilisée : adresse physique des modules d'échanges disques par exemple: il ne seront pas présentés d'avantage dans le cadre de ce cours. Les fichiers spéciaux sont enregistrés dans le répertoire /dev qui contient lui même les sousrépertoires (néanmoins l'arborescence ci-dessous ne correspond pas à tous les systèmes Unix) /dev/dsk /dev/rdsk /dev/al /dev/rct /dev/rmt disques en mode bloc disques en mode caractère Lignes asynchrones cassettes bandes magnétiques Cette arborescence contient aussi des pseudo périphériques /dev/mem /dev/kmem /dev/null /dev/tty /dev/error mémoire utilisateur mémoire système (noyau=kemel) poubelle (destruction des données) terminal associé au processus sortie des erreurs Quelques majeurs et mineurs d'un système de fichiers Linux lrwxrwxrwx 1 root root 8 mar 12 2001 /dev/cdrom -> /dev/hdd brw-rw---- 1 root disk 3, 0 mai 5 1998 /dev/hda brw-rw---- 1 root disk 3, 1 mai 5 1998 /dev/hda1 brw-rw---- 1 root disk 3, 10 mai 5 1998 /dev/hda10 brw-rw---- 1 root disk 3, 11 mai 5 1998 /dev/hda11 brw------- 1 root disk 22, 0 mai 5 1998 /dev/hdc brw-rw---- 1 root disk 22, 1 mai 5 1998 /dev/hdc1 brw-rw---- 1 root disk 22, 10 mai 5 1998 /dev/hdc10 brw------- 1 root disk 22, 64 mai 5 1998 /dev/hdd brw-rw---- 1 root disk 22, 65 mai 5 1998 /dev/hdd1 crw------- 1 root root 5, 1 oct 9 07:01 /dev/console crw------- 1 root root 5, 64 mai 5 1998 /dev/cua0 crw------- 1 root root 5, 65 mai 5 1998 /dev/cua1 crw------- 1 root root 5, 66 mai 5 1998 /dev/cua2 crw------- 1 root root 5, 67 mai 5 1998 /dev/cua3 crw--w---- 1 demo tty 136, 0 oct 9 15:43 /dev/pts/0
Prise en compte d'une partition disque par le système Pour qu'une partition disque puisse être prise compte par le système, les opérations suivantes être réalisées 1. création des fichiers spéciaux, en mode bloc correspondant au disque physique (ex: /dev/hda) 2. création des fichiers spéciaux en mode bloc correspondant aux différentes partitions du disque. Ces 2 premiers points sont en général réalisé par le constructeur, et ces inodes sont disponibles dès l'installation du système. 1. Création de la partition par la commande fdisk, cfdisk, ou tout autre utilitaire de gestion des partitions 2. Formatage de la partition par la commande mkfs 3. Montage des volumes par la commande mount: cette opération doit être faite à chaque réinitialisation du système (le fichier /etc/fstab indique quels volumes doivent être montés automatiquement au démarrage du système). voir en annexe, un exemple d'utilisation de fdisk et cfdisk
Utilitaires de sauvegarde et de restauration Unix met à la disposition de l'administrateur du système un certain nombre d'utilitaires de sauvegarde et de restauration des données. Les unitésde sauvegarde seronten général lacassettemagnétique (streainer),mais pourrontêtreaussi ladisquette, voire une autre unité disque, locale au système ou accessible à travers un réseau local. Le format de sauvegarde pourra être physique ou logique : Une sauvegarde physique ne va considérer que la succession des blocs de données sur le disque, et pourra même convenir pour une partition non structurée en système de fichiers Unix. Une sauvegarde logique au contraire considérera l'information organisée selon un système de fichiers Unix : ce type d'utilitaire pourra éventuellement réorganiser les données pour en optimiser l'accès sur la version dupliquée (voir par exemple dcopy) Liste commentée d'utilitaires mkbootdisk permet de créer une disquette de démarrage (boot) adaptée au système sur lequel elle a été générée. dump copie des disques physiques ou logiques (partitions) sur cassettes magnétiques restore restaure l'état des disques à partir de la sauvegarde sur cassette réalisée par dump tar (tape archive) réalise un archivage logique des fichiers avec compression des données si le paramètre z est spécifié et permet de restaurer les données à partir de la sauvegarde ainsi réalisée cpio réalise un archivage logique des données; cpio lit dans le fichier d'entrée standard la liste des fichiers à copier (utilisation la plus fréquent avec pipe). cpio permet aussi de restaurer les données qu'il a permis de sauvegarder. dd réalise une sauvegarde physique des données d'un fichier: bloc par bloc, avec des tailles de blocs différentes en entrée et en sortie éventuellement. dd permet aussi de convertir le code des données sauvegardées (EBCDIC / ASCII par exemple). Lorsque le fichier à sauvegarder est le fichier spécial caractère correspondant à une partition, dd permet de sauvegarder physiquement cette partition (bloc par bloc). Enfin, dd permettant de spécifier un certain nombre de blocs à ignorer en début du fichier à copier (option skip), il est possible, par exemple, grâce à cet utilitaire, de copier des partitions dont la taille dépasse la taille de la cassette de sauvegarde.
dcopy permet de sauvegarder un système de fichiers d'une partition sur une autre (de même taille) en le réorganisant pour une optimisation des accès ultérieurs aux données du système cible. Les partitions utilisées doivent être non montées, et s'il s'agit de copier la partition système, le système cible doit être situé sur un disque physique différent. volcopy permet une sauvegarde rapide d'un système de fichiers d'un volume sur un autre (éventuellement sur une cassette de sauvegarde). Les systèmes de fichiers doivent être labellés et non montés; volcopy gère le multivoltune en sortie. Exemples commentés : On développera les exemples autour de 2 utilitaires : cpio et tar. cpio permet facilement de sélectionner les fichiers à sauvegarder, et peut aussi servir à déplacer des sousarborescences dans un système de fichiers. La commande rmd permet aussi de sauvegarder des fichiers dans le formatcpio. tar permettra une sauvegarde plus rapide que cpio, avec compression des données, et possibilité de copier en complémentarité sur le volume de sauvegarde.
Syntaxe de la commande cpio et exemples (compléter éventuellement la liste des options en se référant au manuel) cpio -optionl [option2] < liste-des-fichiers-source > fichier_cible option1 peut prendre les valeurs suivantes -o pour sauvegarder -i pour restaurer les données -it pour visualiser le contenu du volwne de sauvegarde -p pour copier des arborescences à l'intérieur du système de fichiers option2 peut prendre les valeurs suivantes : v d (verbose=bavard) pour un affichage plus complet de messages (en association avec -p ) pour créer les répertoires inexistants Fichier source et Fichier cible sont définis comme suit < redirige l'entrée standard où sera prise la liste des fichiers à sauvegarder > redirige la sortie standard vers l'unité de sauvegarde dans le cas de l'option -p on donne le nom du répertoire cible, sans le signe de redirtection "<" Sauvegarde des Fichiers *.c du répertoire Polyur cd polyur ls *.c 1 cpio -ov > /tmp/sauvegarde.cpio ls donnera ici la liste des fichiers du répertoire polyur, qui deviendra la Liste des fichiers à sauvegarder. Les options -ov précisent qu'il s'agit d'une sauvegarde avec génération de messages Vérification du contenu de la disquette cpio -itv < /tmp/sauvegarde.cpio Vérification des Fichiers «sim*.c» présents sur la disquette cpio -itv sim*.c </tmp/sauvegarde.cpio Restauration des Fichiers «sim*.c» à partir de la disquette cpio -iv sim*.c </tmp/sauvegarde.cpio
remarquons ici que la liste des fichiers qui seront restaurés, a été produite par la commande précédente qui ne diffère de celle-ci que par l'option t. Sauvegarde récursive des Fichiers du répertoire graphique find graphique -print # pour vérification de la liste des fichiers find graphique -print cpio -o > /tmp/sauvegarde.cpio ou find graphique -cpio /tmp/sauvegarde.cpio Copie récursive des Fichiers.c du répertoire graphique sur le répertoire sauvegarde mkdir $HOME/sauvegarde find graphique -name "*.c" -print cpio -pdv $HOME/sauvegarde Vérification par Il -R $HOME/sauvegarde more Ou find $HOME/sauvegarde more Pour suppriner éventuellement cette sauvegarde, on pourra utiliser rm -r $HOME/sauvegarde/*
Syntaxe de la commande tar et exemples (compléter éventuellement la liste des options en se référant au manuel) tar optionl [option2] fichier(s) option1 peut prendre les valeurs suivantes c r u x t pour sauvegarder (create) pour sauvegarder en complémentarité pour sauvegarder en complémentarité les fichiers non encore sauvegardés ou modifiés depuis la dernière sauvegarde pour restaurer les données (extract) pour visualiser le contenu du volume de sauvegarde option2 peut prendre les valeurs suivantes : v f (verbose=bavard) pour un affichage plus complet de messages pour spécifier un nom de fichier pour la sauvegarde différent de /dev/rmt0 fichier(s) spécifie les noms des fichiers à sauvegarder, ce peut être un répertoire, ou un nom générique formé à partir des caractères *? ou [] La version GNU de tar, disponible sur Linux, dispose aussi de l' option --files-from=f qui permet de préciser le nom d'un fichier texte contenant des noms de fichiers à sauvegarder ou restaurer. Sauvegarde des Fichiers *.c du répertoire courant tar cf /tmp/sauvegarde.tar *.c Affichage de la liste des Fichiers sauvegardés sur la disquette tar tvf /tmp/sauvegarde.tar Restauration du Fichier mandel.c dans le répertoire courant tar xvf /tmp/sauvegarde.tar */mandel.c Sauvegarde récursive en complémentarité des Fichiers du répertoire «graphique» tar rvf /tmp/sauvegarde.tar graphique Compression des données sauvegardées l'ajout du paramètre z (ou i) permet de compresser (ou décompresser) les données dans le fichier de sauvegarde
Intégrité du système de fichiers Un système de fichiers est vulnérable, nous l'avons déjà signalé, des arrêts intempestifs de la machine peuvent en altérer la cohérence des informations. Essayons de mieux comprendre les mécanismes de mise à jour des données sur le disque Lors d'une modification sur le système de fichiers, résultant d'une action utilisateur (création ou modification d'un fichier), il n'y a pas modification immédiate du disque, mais enregistrement de la modification dans le pool de buffers que constitue la mémoire cache du disque. La recopie du cache sur le disque se fait soit de manière automatique à une cadence définie par le système (voir man update) soit de manière ponctuelle sur appel explicite de la commande sync; notons que sync ne recopie pas seulement les tampons associés au processus qui le demande, mais tous les tampons de tous les disques. Arrêt du système L'arrêt normal du système devra donc suivre le scénario suivant: 1. en mode superutilisateur, lancement de la commande shutdown, qui va tuer tous les processus actifs, sauf le processus qui a lancé cette commande, et reconfigure le système en mode monoutilisateur 2. lorsque le système est en mode monoutilisateur, efectuer la conunande sync, puis arrêter l'ordinateur. Au redémarrage du système, en mode monoutilisateur, sera lancée une procédure de vérification des disques: fsck Ce programme est à même de relever des incohérences dans le système de fichiers en utilisant la redondance des informations (par exemple le nombre de liens est noté dans l'inode, mais il peut être recalculé en comptant le nombre d'entrées de répertoire ayant le même numéro d'inode). Les incohérences trouvées donnent lieu à des mises à jour interactives du système de fichiers. fsck ne doit jamais être lancé... ni en mode multiutilisateur ni sur des volumes montés
Conclusion sur le système de fichiers UNIX Quelle que soit la puissance d'un utilitaire comme fsck dans une opération de récupération automatique de fichiers, la seule garantie véritable pour l'utilisateur est dans une gestion rigoureuse des copies de sécurité : elles seront faites régulièrement, et alternativement sur un double jeu de volumes de sauvegardes pour éviter les problèmes qui résulteraient d'une possible défaillance du système au moment d'une restauration des données à partir de la sauvegarde la plus récente.
Annexe 1 : Gestion des partitions de disques sous Linux [root@e002-14 root]# fdisk -l Disque /dev/hda : 255 têtes, 63 secteurs, 4865 cylindres Unités = cylindres sur 16065 * 512 octets Périph. Amorce Début Fin Blocs Id Système /dev/hda1 * 1 39 313236 6 FAT16 /dev/hda2 40 1766 13872127+ f Win95 Etendue (LBA) /dev/hda5 40 995 7679038+ 7 HPFS/NTFS /dev/hda6 996 1027 257008+ 83 Linux /dev/hda7 1028 1473 3582463+ 83 Linux /dev/hda8 1474 1664 1534176 83 Linux /dev/hda9 1665 1702 305203+ 82 Echange Linux /dev/hda10 1703 1766 514048+ 83 Linux cfdisk 2.10f Disque dur : /dev/hda Size: 40020664320 bytes Têtes : 255 Secteurs par piste : 63 Cylindres : 4865 Nom IndicateurType de partype SF [Libellé] Taille(Mo) --------------------------------------------------------------------------- hda1 Amorce Primaire FAT16 [NO NAME ] 320,79 hda5 Logique NTFS 7863,37 hda6 Logique Linux ext2 [/] 263,21 hda7 Logique Linux ext2 [/oracle] 3668,48 hda8 Logique Linux ext2 [/usr] 1571,03 hda9 Logique Linux swap 312,57 hda10 Logique Linux ext2 526,42 Pri/Log Espace libre 25490,15 [Bootable] [Supprimer] [ Aide ] [Optimiser] [Imprimer] [Quitter ] [ Type ] [Unités ] [^Ecrire ] (Dés)active l'indicateur bootable pour la partition courante hda10 Logique Linux ext2 526,42 Pri/Log Espace libre 25490,15 [ Aide ] [Nouvelle] [Imprimer] [Quitter ] [Unités ][^Ecrire ] Affiche l'écran d'aide hda10 Logique Linux ext2 526,42 Pri/Log Espace libre 25490,15 [Primaire] [Logique ] [Annuler ] Créer une nouvelle partition primaire hda10 Logique Linux ext2 526,42 Pri/Log Espace libre 25490,15 Taille (en Mo) : 25490,14