Le système d'exploitation GNU-Linux/Les systèmes de fichiers
Les systèmes de fichiers Unix
modifierUNIX gère les i-nodes (data structure) dans une table qui contient des informations telles que :
- le propriétaire ;
- le groupe de fichiers ;
- les droits d'accès ;
- la date de modification ;
- le type de fichier.
Sous UNIX et LINUX on trouve des partitions, ex. : boot, var, tmp, home qui permettent d'organiser le système de fichiers. Au départ EXT2 sous UNIX, aujourd'hui EXT3 par défaut correspond à EXT2 plus le journal, qui a l'avantage de consigner tout ce que fait le système, et qui en cas de crash lui permet de démarrer plus rapidement sans erreurs. Les deux formats sont compatibles. Il existe toutes sortes de systèmes de fichiers.
Non journalisés
modifier- Ext et Ext2 : Extented FS version 2 (Linux, BSD)
- FAT : File Allocation Table (DOS/Windows, Linux, BSD, OS/2, Mac OS X). Se décompose en plusieurs catégories :
- FAT12 ;
- FAT16 ;
- FAT32 ;
- VFAT.
- FFS : Fast File System (BSD, Linux expérimental)
- HFS : Hierarchical File System (Mac OS, Mac OS X, Linux)
- HPFS : High Performance FileSystem (OS/2, Linux)
- minix fs (minix, Linux)
- S5 (UNIX System V, Linux)
- UFS : Unix File System (BSD, Linux en lecture seule)
Journalisés
modifier- BFS (BeOS, Haiku, Linux en lecture seule et expérimental)
- Ext3 : Extented FS version 3 - notamment pour l'ajout de la journalisation (Linux, BSD)
- Ext4 : Extented FS version 4 - notamment pour étendre sa capacité à 1024 péta-octets (Linux expérimental)
- HFS+ (Mac OS X, Linux)
- JFS (AIX, OS/2, Linux)
- JFS2 AIX5
- LFS : (Linux)
- NSS : Novell Storage Services (Netware et Suse Linux)
- NTFS : New Technology FileSystem (Windows NT/2000/XP, Linux (écriture disponible grâce au pilote NTFS-3G), Mac OS X en lecture seule)
- ReiserFS (Linux, BSD en lecture seule)
- Reiser4 (Linux expérimental)
- Spufs : Synergistic processing unit filesystem
- UFS+ : Unix FS + journal (BSD, Linux en lecture seule)
- XFS (Irix, Linux, BSD en lecture seule)
- ZFS : Zettabyte FileSystem (Solaris10, FreeBSD 8.0)
Réseau
modifier- AFS Andrew File System : (Aix, Linux)
- Coda (Systèmes de fichiers informatique) (Linux)
- NFS (tous les Unix, Linux, Mac OS X) (Windows pour la 4)
- NCP NetWare Core Protocol (Novell NetWare, Linux en client seul)
- SSHFS (tous les Unix ?, Linux)
- SMB ou Server message block (Windows) (Linux, BSD et Mac OS X via Samba)
- CIFS (Évolution de SMB, supporté par Samba ainsi que par Windows 2000 et XP)
Cluster
modifier- GPFS, General Parallel File Sytem : Linux, AIX
- LustreFS, Compression de Linux et de Cluster : Linux
- OCFS2, développé par Oracle : Linux
- PVFS2, Parallel Virtual FileSystem version 2 : Linux, Unix
Spécialisés
modifier- CFS Cryptographic File System : FS chiffré (BSD, Linux)
- cramfs : FS compressé (Linux en lecture seule)
- EFS Encrypting File System : FS chiffré au dessus de NTFS (Windows)
- ISO 9660 : en lecture seule sur tous les systèmes lisant les CDROM/DVDROM de données
- JFFS et JFFS2 : FS pour support physique sans block, typiquement des cartes flash. Il est compressé et journalisé (Linux)
- QNX4fs : FS utilisé pour le temps réel (QNX, Linux en lecture seule)
- UDF : le format de disque universel (système de fichiers des DVD-ROM et des disques optiques réinscriptibles tels les CD-RW, DVD±RW, etc.)
mount
modifierCette commande indique tous les systèmes de fichiers qui sont montés. On l'utilise pour accéder à une partition (en root pour accéder au CD-ROM ou au lecteur disquette).
Exemple : pour brancher une clé USB il faut la monter. On édite le fichier log par la commande tail -f /var/log/messages afin de savoir sur quel système de fichiers se trouve la clé. Puis on utilise mount pour accéder au contenu de la clé.
Exemple :
# mount /dev/sdc1 /mnt # le répertoire de son choix
Il est possible de préciser le système de fichier s'il ne le détecte pas
Syntaxe :
# mount -t système de fichiers périphériques point de montage
Exemple :
# mount -t vfat /dev/sdc1 /mnt
Lorsque l'on a fini d'utiliser la clé il faut la démonter à cause du cache.
Pour sauvegarder des montages réguliers, on utilise le fichier "fstab" détaillé ci-après, et sudo mount -a
monte tous ceux qui sont dedans.
umount
modifierLa commande umount permet de démonter une partition. Cette opération est indispensable si on veut être sûr que les données soient correctement écrites sur la partition. Exemples :
# umount /dev/sdc1
ou
# umount /mnt
Si la partition est en cours d'utilisation, on ne pourra pas la démonter et la commande umount va retourner un message d'erreur :
# umount /home umount: /home: device is busy umount: /home: device is busy
Deux commandes permettent de connaître les fichiers ouverts et les processus qui sont en train d'utiliser la partition et qui empêchent le démontage.
La commande lsof (list open files) permet de connaître les fichiers ouverts :
# lsof /home COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME gdm 2751 root 9w REG 22,71 761 964774 /home/alex/.xsession-errors startkde 2882 alex cwd DIR 22,71 4096 964769 /home/alex ...
La commande fuser permet aussi de connaître les processus qui ont des fichiers ouverts sur la partition.
# fuser -m /home /home: 2751 2882c 2961c 2962c 2965c 2967c 2969c 2971c 2976c 2978c 2979c 2981c 2983c 2984c 2986c 2990c 2992c 2993c 2995c 2997c 2999c 3002c 3037c 3683c 3684c 4102c 4161c
Le fichier /etc/fstab
modifierLe fichier /etc/fstab contient la liste des partitions montées automatiquement au démarrage du système.
Extrait d'un fichier fstab :
# /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 /dev/sdb1 / ext3 defaults,errors=remount-ro 0 1 /dev/sdb6 /home ext3 defaults 0 2 /dev/sdb5 none swap sw 0 0 /dev/hda /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0
Pour monter automatiquement une partition au démarrage, il suffit de rajouter une ligne dans le fichier /etc/fstab, comme par exemple :
/dev/hdc1 /media/winnt ntfs defaults 0 0
Pour chaque partition, on peut spécifier des options dans le fichier /etc/fstab. Options les plus courantes :
- user : permet aux utilisateurs d'effectuer les opérations de montage / démontage
- noauto : ne monte pas automatiquement la partition au boot
La commande sync force le noyau à écrire le cache. Pour savoir la taille qu'il reste sur la clé on utilisera la commande df (disk free) -h (human readable) pour avoir les informations en kilo,mega,giga. df -i affiche le pourcentage d'occupation de la table des i-nodes.
NFS
modifierPour les partages NFS, on peut lancer sudo apt install nfs-common
.
Formater un système de fichiers
modifierLa commande mkfs (make filesystem) permet de formater un système de fichiers. Exemple :
# mkfs -t ext3 /dev/sdc1
ATTENTION LE SYSTÈME DE FICHIER NE DOIT PAS ÊTRE MONTÉ
mkfs est un wrapper (aiguillage)
Afin de simuler le formatage, nous allons créer un disque dur virtuel. Pour simuler ceci avec un disque dur virtuel, on utilisera le pseudo périphérique loop.
# modprobe loop # dd if=/dev/zero of=hd1 bs=1K count=100000
Ceci crée un fichier vide hd1 qui aura une taille de 100 Mo.
# losetup /dev/loop0 hd1
On attache le pseudo-pérphérique /dev/loop0 à notre fichier hd1.
Une fois le disque dur virtuel crée on peut le formater :
# mkfs -t ext3 /dev/loop0 # mount /dev/loop0 /media/cleusb
Pour le démonter :
# umount /media/cleusb
CAS PARTICULIER : pour les disquettes, on effectue en général un formatage de bas niveau :
# fdformat /dev/fd0 # vérifie l'intégrité de la disquette
# mkfs -t ext3 /dev/fd0 # formate la disquette
ATTENTION À BIEN DÉMONTER AU PRÉALABLE LE PÉRIPHÉRIQUE
La commande suivante permet de vérifier l'intégrité du système de fichiers :
# fsck -t ext3 /dev/loop0
L'option -c de fsck permet de vérifier les bad blocks (en lecture seule par défaut). L'option -v (verbose, soit verbeux) pour voir ce qu'il fait.
Le swap
modifierPartition de swap
modifierLe SWAP signifie échange, il s'agit d'une mémoire virtuelle en effet lorsque la mémoire de l'ordinateur arrive à saturation, le système écrit sur une partition SWAP de façon à libérer de la mémoire.
Il est possible de créer une partition SWAP grâce à la commande mkswap :
# mkswap /dev/sdb5
On utilisera la commande swapon /dev/sdb5 pour l'activer :
# swapon /dev/sdb5
Avec la commande 'free,' il est possible de vérifier si le swap est activé :
# free ... Swap: 1951856 65080 1886776
Pour lister les partitions SWAP :
# cat /proc/swaps ... Type Size Used Priority /dev/hda3 partition 979956 307284 -1
Fichier de swap
modifierIl est possible de créer un fichier swap en complément d'une partition SWAP, pour faire ceci nous allons commencer par créer un fichier de huit gigaoctets :
# dd if=/dev/zero of=/ficswap bs=1M count=8000
On initialise ensuite le fichier en swap :
# mkswap /ficswap
On active le swap :
# swapon /ficswap
Pour désactiver la partition de SWAP :
# swapoff /ficswap
Si l'on tape la commande free on constate que la taille du swap a augmenté.
$ free total utilisé libre partagé tamp/cache disponible Mem: 7910624 5539632 294096 564916 2076896 1493484 Échange: 8388604 1252608 7135996
Pour visualiser son utilisation autrement :
$ cat /proc/swaps Filename Type Size Used Priority /swapfile file 8388604 1225472 -2
Utilitaires disques-durs
modifierTechnologie S.M.A.R.T.
modifierSMART est une technologie de monitoring des disques dur.
Nom du package apt : smartmontools
# smartctl -d ata -a /dev/sda smartctl version 5.36 [i686-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen Home page is http://smartmontools.sourceforge.net/ === START OF INFORMATION SECTION === Model Family: Western Digital Caviar SE (Serial ATA) family Device Model: WDC WD800JD-22MSA1 Serial Number: WD-WMAM9TZ26746 Firmware Version: 10.01E01 User Capacity: 80 026 361 856 bytes Device is: In smartctl database [for details use: -P show] ATA Version is: 7 ATA Standard is: Exact ATA specification draft version not indicated Local Time is: Wed Dec 5 15:16:10 2007 CET SMART support is: Available - device has SMART capability. SMART support is: Enabled === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED General SMART Values: (...) Short self-test routine recommended polling time: ( 2) minutes. Extended self-test routine recommended polling time: ( 33) minutes. Conveyance self-test routine recommended polling time: ( 6) minutes. SMART Attributes Data Structure revision number: 16 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x000f 200 200 051 Pre-fail Always - 0 (...)
Le fichier /etc/smartd.conf permet de programmer des tests, et l'envoie de messages d'alertes.
hdparm
modifierhdparm permet de configurer les paramètres d'accès au disque dur.
#hdparm /dev/sdb /dev/sdb: IO_support = 0 (default 16-bit) readonly = 0 (off) readahead = 256 (on) geometry = 9729/255/63, sectors = 156301488, start = 0
Pour tester les performances on utilise l'option -tT
# hdparm -tT /dev/sdb /dev/sdb: Timing cached reads: 888 MB in 2.00 seconds = 443.99 MB/sec Timing buffered disk reads: 174 MB in 3.00 seconds = 57.91 MB/sec
hddtemp
modifierhddtemp utilise les données SMART du disque dur spécifié et retourne sa température.
#hddtemp /dev/sda /dev/sda: WDC WD800JD-22MSA1: 31°C
L'option -n permet de ne renvoyer que la valeur de la température (utile pour les scripts)
# hddtemp -n /dev/sda 31