FS : File System
Mémoire de masse:
Les disques durs (ssd ou mécanique) , les clé usb sont des supports de mémoire de masse.
On doit faire un partitionnement ou non , les formater avec un file system (système de fichier) selon le système d’exploitation utilisé.
il existe un logiciel graphique du nom gparted ,
très facile à prendre en mains et qui peut faire gagner beaucoup de temps, mais cependant il faut connaitre l’envers du décor donc nous allons voir comment faire tout cela en ligne de commande avec fdisk .
File Sytem (FS):
Les systèmes de fichiers permettent de gérer les données d’un support de masse.
les plus connus sont :
dans le monde microsoft:
- ntfs
-
- taille maximale d’un fichier :16 Tio
- nombre maximal de fichiers :4 milliards
- 255 caractères UTF-16 pour un nom de fichier
- tout caractères UTF-16 à l’exception « / »
- permissions ACL
- chiffrement intégré.
-
- fat
ancêtre du fat32
- fat32
-
- taille maximale d’un fichier :4 Go
- nombre maximal de fichiers :250 millions
- 255 caractères UTF-16 pour un nom de fichier
-
Dans le monde unix/linux:
- taille maximale d’un fichier :16 Tio
- nombre maximal de fichiers :4 milliards
- 255 octets pour un nom de fichier
- chiffrement possible depuis 2015
Pour unix/linux par Oracle
Ce qu’il faut connaitre sur les « File System »:
Le format fat32 est souvent le format utilisé sur une mémoire USB (microsoft est ok) pas de permission donc facile pour échanger des données.
ntfs sous vos systèmes windows car il permet de gérer les permission , (lecture/ ecriture etc…)
le format ext4 est celui le plus répandu dans le monde linux actuellement.
Partition
C’est un espace de stockage.
il existe 3 types de partitions:
- partition primaire
- partition primaire étendue
- partition logique
Partitionnement de son disque permet de séparer les DATA , du système d’exploitation par exemple.
Il n’est pas obligatoire de faire un partitionnement d’un disque.
Partition primaire et partition active :
Quelle est la partition primaire ? Une partition primaire consiste à installer un système d’exploitation. Un disque dur MBR peut contenir au maximum 4 partitions principales. Une partition active est basée sur la partition primaire. L’une des 4 partitions primaires peut être définie comme partition active. Puisqu’il peut y avoir 4 partitions principales avec 4 systèmes d’exploitation différents installés, La partition active contient le chargeur de démarrage (tel que ntldr et bootmgr) pour charger les systèmes d’exploitation à partir d’un disque.
Partition étendue et partition logique :
Étant donné qu’un disque a les partitions primaires au plus, il faut utiliser une partition étendue pour résoudre la limitation de 4 partitions. Dans une partition étendue, vous pouvez créer des unités logiques illimitées. Vous pouvez stocker des données dans les partitions logiques similaires avec la partition primaire, mais la partition étendue n’est pas utilisée pour stocker des données, car la partition étendue est utilisée pour contenir des partitions logiques, en même temps, il ne peut y avoir qu’une partition étendue sur un seul disque.
Les règles de partitionnement d’un disque dur ou ssd
Un disque dur doit être partitionné avant de l’utiliser. Il existe quelques règles comme suit :
- ● Un maximum de quatre partitions primaires peut être créé sur n’importe quel disque dur MBR. La limitation de quatre partitions primaires est qu’une partition primaire est appliquée au système, l’enregistrement de démarrage principal est structuré. Une seule partition primaire peut être désignée comme partition active et cette partition est utilisée pour démarrer le système.
- ● Seulement une partition primaire peut être désignée comme partition active et cette partition est utilisée pour démarrer le système.
- ● Le BIOS reconnaîtra uniquement la partition active pour le chargement du système d’exploitation. D’autres partitions ne peuvent pas être reconnues.
- ● Pour briser la limitation d’au plus 4 partitions primaires, vous devez créer 3 partitions primaires ou moins plus une partition étendue et il n’y a qu’une seule partition étendue.
On peut faire cohabiter plusieurs systèmes d’exploitations en faisant un partitionnement du disque DUR.
Certaines distribution linux (comme ubuntu va vous proposer cette solution avant d’enlever windows)
Les commandes linux
lsblk
exemple de commande lsblk (list BLocK devices)
lsblk -f
etudiant@debian112:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 8G 0 disk
├─sda1 8:1 0 3G 0 part /
├─sda2 8:2 0 1K 0 part
├─sda5 8:5 0 976M 0 part [SWAP]
└─sda6 8:6 0 4,1G 0 part /home
sdb 8:16 0 8G 0 disk
├─sdb1 8:17 0 400M 0 part
└─sdb2 8:18 0 400M 0 part
sr0 11:0 1 1024M 0 rom
df
version plus lisible avec l’option -h (human)
df -h
etudiant@debian112:~$ df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
udev 473M 0 473M 0% /dev
tmpfs 98M 548K 98M 1% /run
/dev/sda1 2,9G 1,6G 1,2G 58% /
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
/dev/sda6 4,0G 44K 3,8G 1% /home
tmpfs 98M 0 98M 0% /run/user/0
tmpfs 98M 0 98M 0% /run/user/1000
fdisk (pour root)
fdisk -l
va lister vos différentes unités de disque dure
quand on va créer une partion (n)
+4G ou +40M est reconnu pour donner la quantité de la partition .
root@debian112:~# fdisk -l
Disque /dev/sda : 8 GiB, 8589934592 octets, 16777216 secteurs
Modèle de disque : VBOX HARDDISK
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x097da589
Périphérique Amorçage Début Fin Secteurs Taille Id Type
/dev/sda1 * 2048 6225919 6223872 3G 83 Linux
/dev/sda2 6227966 16775167 10547202 5G 5 Étendue
/dev/sda5 6227968 8226815 1998848 976M 82 partition d'échange Linux / Solaris
/dev/sda6 8228864 16775167 8546304 4,1G 83 Linux
Disque /dev/sdb : 8 GiB, 8589934592 octets, 16777216 secteurs
Modèle de disque : VBOX HARDDISK
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
root@debian112:~#
on voit ici que nous avons 2 disques dures
un de 8GiB /dev/sda
un de 8GiB /dev/sdb
le sda est celui ou nous sommes actuellement (on voir l’amorçage avec *)
il a 4 partitions : sda1 / sda2 / sda5 / sda6
exemple d’usage de la fonction mount:
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=483652k,nr_inodes=120913,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,noexec,relatime,size=99992k,mode=755)
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
none on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=30,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=10674)
debugfs on /sys/kernel/debug type debugfs (rw,nosuid,nodev,noexec,relatime)
mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M)
tracefs on /sys/kernel/tracing type tracefs (rw,nosuid,nodev,noexec,relatime)
configfs on /sys/kernel/config type configfs (rw,nosuid,nodev,noexec,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,nosuid,nodev,noexec,relatime)
/dev/sda6 on /home type ext4 (rw,relatime)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=99988k,nr_inodes=24997,mode=700)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=99988k,nr_inodes=24997,mode=700,uid=1000,gid=1000)
root@debian112:~#
ici la commande mount va nous décrire comment sont montées les partitions. (on va la retrouver plus tard)
ici ce qui va nous intéresser :
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro)
sda1 est la racine (/) de notre machine, donc notre système va s’y trouver.
/dev/sda6 on /home type ext4 (rw,relatime)
on voit que la partition sda6 est aussi notre partition /home de type ext4 pour gérer nos comptes.
sda5 est une partition d’échange en règle générale elle est de la même quantité que la ram de notre machine. (swap)
Bienvenue dans fdisk (util-linux 2.34).
Les modifications resteront en mémoire jusqu'à écriture.
Soyez prudent avant d'utiliser la commande d'écriture.
Commande (m pour l'aide) : m
Aide :
GPT
M entrer dans le secteur d’amorçage (MBR) de protection ou hybride
Générique
d supprimer la partition
F afficher l’espace libre non partitionné
l afficher les types de partitions connues
n ajouter une nouvelle partition
p afficher la table de partitions
t modifier le type d'une partition
v vérifier la table de partitions
i Afficher des renseignements sur la partition
Autre
m afficher ce menu
x fonctions avancées (réservées aux spécialistes)
Script
I chargement de l’agencement à partir du fichier de script sfdisk
O sauvegarde de l’agencement vers le fichier de script sfdisk
Sauvegarder et quitter
w écrire la table sur le disque et quitter
q quitter sans enregistrer les modifications
Créer une nouvelle étiquette
g créer une nouvelle table vide de partitions GPT
G créer une nouvelle table vide de partitions SGI (IRIX)
o créer une nouvelle table vide de partitions DOS
s créer une nouvelle table vide de partitions Sun
Commande (m pour l'aide) :
mkfs
pour pouvoir traiter les FS de dos (windows)
apt install dosfstools
root@debian112:~# mkfs. <tabulation>
mkfs.bfs mkfs.ext2 mkfs.ext4 mkfs.minix mkfs.vfat
mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.msdos
exemple pour formater le disque b au format fat32
mkfs.vfat /dev/sdb
exemple pour formater le disque b au format ext4
mkfs.ext4 /dev/sdb
mount / umount
man mount
mount -t type périphérique rép
On va monter une partition par exemple ici /dev/sdb dans le système de fichier de notre machine.
mount /dev/sdb /mnt
le point de montage peut être n’importe ou dans l’arbre de la machine, c’est juste un répertoire. (mkdir point_de_montage)
on va monter le périphérique « block » dans le répertoire de montage (point de montage du périphérique) ou on pourra accéder au périphérique.
/media par exemple permet de monter les périphérique amovible (mémoire usb) branchée sur la machine.
umount /dev/sdb ou umount /mnt
permet de détacher le périphérique de l’arborescence de notre système.
la fonction mount seul permet de lister les périphérique monté dans l’arborescence de notre système.
un exemple est déjà montré lors de la présentation de fdisk .
pour tester une fichier /etc/fstab la commande mount -a sera apprécié avant de rebooter la machine.
fsck
vérifier et réparer un système de fichier.
exemple d’usage sur une carte sd
bruno@bruno-MS-7851:/media/bruno$ sudo fsck /dev/sdd2
fsck de util-linux 2.34
e2fsck 1.45.5 (07-Jan-2020)
rootfs : récupération du journal
Erreur de lecture du bloc 133517 (Erreur d'entrée/sortie). Ignorer l'erreur<o>? non
rootfs: Erreur d'entrée/sortie while reading block 133517
JBD2: Failed to read block at offset 2445
fsck.ext4: Erreur d'entrée/sortie lors de la récupération du journal de rootfs
rootfs n'a pas été démonté proprement, vérification forcée.
Passe 1 : vérification des i-noeuds, des blocs et des tailles
Dans l'i-noeud 1447, la fin de l'extent dépasse la valeur autorisée
(bloc logique 8338, bloc physique 901266, longueur 1682)
Effacer<o>? oui
I-noeud 1447, i_blocs est 76184, devrait être 66712. Corriger<o>? oui
Dans l'i-noeud 1453, la fin de l'extent dépasse la valeur autorisée
(bloc logique 10240, bloc physique 1675264, longueur 1222)
Effacer<o>? oui
I-noeud 1453, i_blocs est 87080, devrait être 81928. Corriger<o>? oui
Dans l'i-noeud 1454, la fin de l'extent dépasse la valeur autorisée
(bloc logique 6, bloc physique 599572, longueur 1)
Effacer<o>? oui
Dans l'i-noeud 1455, la fin de l'extent dépasse la valeur autorisée
(bloc logique 8192, bloc physique 2134016, longueur 3145)
Effacer<o>? oui
I-noeud 1455, i_blocs est 86088, devrait être 65544. Corriger<o>? oui
dd
si sdb1 est de même capacité que sdb2
dd if=/dev/sdb1 of=/dev/sdb2 –status=progress
il sont après cette commande identique.
blkid (package util-linux)
permet d’obtenir le UUID et des infos sur les disques.
Universally unique identifier (UUID)
UUID est un identifiant unique (obtenu par hasard .. mais permettant de garantir qu’il sera bien unique)
root@debian112:~# blkid
/dev/sdb2: UUID="679bf370-388b-4bd7-8fac-97c7626b316f" BLOCK_SIZE="1024" TYPE="ext4" PARTUUID="9bf3b727-02"
/dev/sdb1: UUID="eae0aff6-0080-4ff9-b72e-a9652dca0914" BLOCK_SIZE="1024" TYPE="ext4" PARTUUID="9bf3b727-01"
/dev/sda1: UUID="1f15fe02-4e0b-4f6b-b904-cd492011ec56" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="097da589-01"
/dev/sda5: UUID="86298fdb-94b8-4732-af6d-031493e7c38e" TYPE="swap" PARTUUID="097da589-05"
/dev/sda6: UUID="5fd14ecd-bb87-49f7-9586-73b21d76a898" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="097da589-06"
root@debian112:~#
ls -l /dev/disk/by-uuid
permet aussi d’avoir les informations
e2label
pour placer un label au disque ext2 à ext4
permet de mettre un label au lieu de devoir utiliser le UUID approche plus humaine.
e2label /dev/sdb2 data
e2label /dev/sdb2 #renvoi le label de la partition si il existe
data
FATLABEL
pour partition Fat32 et Fat16
fichier de gestion des bloques(blk) /etc/fstab
file system table (man fstab)
Quand on touche a ce genre fichier , ne pas oublier d’en faire une sauvegarde(backup) en fstab.bak par exemple .. pour ne pas mettre la stabilité de votre système en danger. (cp /etc/fstab /etc/fstab.bak ) .
on pourra tester la configuration sans rebooter la machine avec la commande mount -a
6 champs:
1er 2eme 3eme 4eme 5eme 6eme
<file system> <mount point> <type> <options> <dump> <pass>
détail des champs:
chaque champ doit être séparé d’un espace ou une tabulation au moins, et veuillez tabuler(pour lire un tableau) pour nous les humains!
file system: s pour spécification dans le man, 3 façons de faire
doit contenir le nom de la partition à monter /dev/sdb1 par exemple
ou avec un mot clé comme LABEL , ou UUID , LABEL=ROOT ou UUID=…. voir la commande blkid
mount point: point de montage du ‘block’
Cela consiste à réaliser un répertoire (mkdir) qui sera le point de montage dans l’arborescence de notre système.
rque : le point de montage d’un swap n’existe pas ! on mettra none
type:
swap , ext4 , ntfs ,vfat ..etc cela le type de partition utilisée.
options:
defaults : utilisations des options par défaut , le man nous dit : rw,suid,dev,exec,auto,nouser,async
il est plus facile d’utiliser cette option quand on ne sait pas trop 🙂
noauto: ne pas monter lorsqu’un appel « mount -a » a lieu, par exemple au démarrage
rw, ro etc .. voir le man
l’option discard pour les ssd , permet de mieux gérer les écritures.
dump:
0 ou 1 , autorise ou non dump à décharger ou non le bloque, on mettra 0 pour ne pas s’ennuyer.
pass:
0 ou 1 ou 2 (pareil on va préférer 0)
0 pas de fschk au démarrage , 1 et 2 permet de donner un niveau de « check »
Exemple de fichier fstab
root@debian112:~# more /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# systemd generates mount units based on this file, see systemd.mount(5).
# Please run 'systemctl daemon-reload' after making changes here.
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 during installation
UUID=1f15fe02-4e0b-4f6b-b904-cd492011ec56 / ext4 errors=remount-ro 0 1
# /home was on /dev/sda6 during installation
UUID=5fd14ecd-bb87-49f7-9586-73b21d76a898 /home ext4 defaults 0 2
# swap was on /dev/sda5 during installation
UUID=86298fdb-94b8-4732-af6d-031493e7c38e none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
exemple pour ajouter le montage d’une partition automatiquement
#ajouter a bruno le disque /dev/sdb2 monté /home/bruno/Data data étant le label de ce disque.
LABEL=data /home/bruno/Data ext4 defaults 0 0
ou on peut utiliser UUID comme dans le fstab de base
partition SWAP
attention avec les ssd le swap n’est pas conseillé à cause du vieillissement prématuré des SSD, du fait d’ écritures excessives sur le disque
Fragmentation des fichiers.
https://www.gladir.com/LEXIQUE/ARTICLES/pourquoi-linux-n-a-pas-besoin-de-defragmentation.htm
GUID Partition Table / UEFI
Pour dépasser la limite des 2.2 To , ce qui devient courant en 2023
Uefi développé par intel
Exemple d’une machine debian en EFI

Détection des OS
sudo os-prober
Mise à jour dde grub
Le grub sur la partition principale
sudo update-grub
Installation du de Grub mis a jour
sudo grub-install
