---
title: Astuces FileSystem Ext
...

## ext3/4

### Journalisation

La journalisation est présente dans ext3/4 elle permet de … blabla … Cela permet notamment de garantir une intégrité du système de fichiers alors que celui-ci à subit une opération brute, comme un hard reboot.

Il peut être intéressent de la désactiver ou de changer la méthode pour augmenter les performances du FS.

#### Changer la méthode de journalisation

##### data=ordered

Le mode ordered permet de…

Dans le fstab :

~~~
data=ordered,noatime,nodiratime
~~~

##### data=writeback

Le mode writeback permet de…

Dans le fstab :

~~~
data=writeback,noatime,nodiratime
~~~

~~~
# tune2fs -o journal_data_writeback /dev/sdXY
~~~

#### Réduire le nombres de commits

Le commit est la période à laquelle le kernel va effectuer l'écriture du journal.

Dans le fstab, la valeur par défaut est de 4 secondes.

~~~
commit=60
~~~

#### Désactiver la journalisation

**Pour ext4 seulement :**

~~~
# tune2fs -O ^has_journal /dev/sdXY
# e2fsck -f /dev/sdXY
~~~

**Pour ext3, désactiver la journalisation revient à monter le FS en ext2.**

### Redimensionner/Resize une partition

**Faites un backup de la table de partition avec sfdisk.**

Selon la position de votre partition (espace libre avant ou après), plusieurs cas.

#### Agrandir une partition

Supprimer la avec `cfdisk`, puis la recréer avec sa nouvelle taille.
Ensuite il faut faire un `fsck`, et lancer l'utilitaire `resize2fs`.

~~~
# cfdisk /dev/sdxY
# e2fsck -f /dev/sdxY
# resize2fs /dev/sdxY
~~~

On peut avoir une erreur de taille de table de partition ou si la taille de l'espace libre n'est pas reconnue dans *cfdisk* ou *cgdisk* il faut réparer la table de partition avec :

~~~
# sgdisk -e /dev/sdx
~~~

Puis redémarrer la machine. 

#### Rétrécir une partition

Pour rétrécir une partition, il faut d'abord rétrécir son système de fichier, avant de la supprimer puis de la recréer avec sa nouvelle taille.

~~~
# resize2fs dev/sdxY XG
# cfdisk /dev/sdxY
# resize2fs dev/sdxY
# e2fsck -f /dev/sdxY
~~~

### Vérification du FS

Lister les valeurs du superblock du système de fichier

~~~
# tune2fs -l /dev/sdxY
~~~

`fsck` sera exécuté au prochain reboot lorsque les valeurs `Maximum mount count` et `Next check after` seront atteintes. Pour modifier ces seuils on exécutera :

~~~
# tune2fs -c <maximum_mount_count> -i <interval_between_check> /dev/sdxY
~~~

### Avoir des infos sur une partition

~~~
# dumpe2fs -h /dev/sda1 | less
~~~

L'option `-h` permettant d'avoir rapidement les infos importantes.

### Ajuster la place réservée

Pour voir le nombre de blocs réservés :

~~~
# tune2fs -l /dev/sda1 | grep -E "(Reserved block count|Block count)"
~~~

Pour connaître le pourcentage de blocs réservés, il faut faire le calcul à la main :

~~~
mount_point="/home"
dev=$(findmnt --noheadings "$mount_point" | head -n1 | awk '{ print $2 }')
blocs=$(tune2fs -l "$dev" | grep "Block count" | cut -d':' -f2 | xargs)
reserved_blocs=$(tune2fs -l "$dev" | grep "Reserved block count" | cut -d':' -f2 | xargs)
LC_NUMERIC="en_US.UTF-8" printf "Reserved blocs: %.0f%%\n" $(echo "scale=2; 100 * $reserved_blocs / $blocs" | bc)
~~~

Réduire à 1% le nombre de blocs réservé sur une partition ext3/4 :

~~~
# tune2fs -m 1 /dev/sda1
Setting reserved blocks percentage to 1% (328560 blocks)
~~~



### FSCK au démarrage

Un éventuel fsck au démarrage s'active dans la dernière colonne du fstab (mettre `0` pour le désactiver).

Par défaut, un "check" est programmé tous les 6 mois ou à partir d'environ 30 montages sans vérification.
Ces paramètres peuvent bien sûr être changé via :

~~~
# tune2fs -c 140 -i 1000d /dev/sda1
tune2fs 1.42.12 (29-Aug-2014)
Setting maximal mount count to 140
Setting interval between checks to 86400000 seconds
~~~

Cela évite des reboots trop longs dès que l'on dépasse 6 mois d'uptime.
En complément, on pourra utiliser un script avertissant qu'un fsck est conseillé…

## Benchmark

Se reporter à [HowtoBenchmarks](http://trac.evolix.net/infogerance/wiki/HowtoBenchmarks).

## FAQ

Erreur `too many links` ?

Cela signifie que vous avez plus de 2^15^ (~= 32k) répertoires dans un répertoire.
Il faut envisager de structurer le répertoire différemment pour obtenir une hiérarchie plus profonde, avec moins d'éléments dans chaque répertoire.

Chercher le répertoire contenant le plus de répertoires = + de inodes/inode : [TipsShell#lister-les-répertoires-ayant-le-plus-de-fichiers-max-inode]() 
