wiki/TipsExtfs.md

158 lines
3.9 KiB
Markdown
Raw Normal View History

2016-11-12 12:04:28 +01:00
---
2016-12-09 16:36:59 +01:00
title: Astuces FileSystem Ext
2016-11-12 12:04:28 +01:00
...
## ext3/4
### Journalisation
2016-11-12 12:04:28 +01:00
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 :
2016-11-12 12:04:28 +01:00
~~~
data=ordered,noatime,nodiratime
~~~
2016-11-13 10:18:21 +01:00
##### data=writeback
Le mode writeback permet de…
2016-11-12 12:04:28 +01:00
Dans le fstab :
2016-11-12 12:04:28 +01:00
~~~
data=writeback,noatime,nodiratime
~~~
2016-11-12 12:04:28 +01:00
~~~
# 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.
2016-11-12 12:04:28 +01:00
~~~
commit=60
~~~
#### Désactiver la journalisation
2016-11-12 12:04:28 +01:00
**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
2016-11-12 12:04:28 +01:00
**Faites un backup de la table de partition avec sfdisk.**
Selon la position de votre partition (espace libre avant ou après), plusieurs cas.
#### Cas partition toute seule
2016-11-12 12:04:28 +01:00
Supprimer-la avec `cfdisk`, puis la recréer avec sa nouvelle taille.
Ensuite il faut faire un `fsck`, et lancer l'utilitaire `resize2fs`.
2016-11-12 12:04:28 +01:00
~~~
# e2fsck -f /dev/sdxY
# resize2fs /dev/sdxY
~~~
#### Autres cas
_TODO_
### Vérification du FS
Lister les valeurs du superblock du système de fichier
2016-11-12 12:04:28 +01:00
~~~
# tune2fs -l /dev/sdxY
~~~
2016-11-12 12:04:28 +01:00
`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 :
2016-11-12 12:04:28 +01:00
~~~
# tune2fs -c <maximum_mount_count> -i <interval_between_check> /dev/sdxY
~~~
### Avoir des infos sur une partition
2016-11-12 12:04:28 +01:00
~~~
# dumpe2fs -h /dev/sda1 | less
~~~
L'option `-h` permettant d'avoir rapidement les infos importantes.
### Ajuster la place réservée
Réduire à 1% la place réservée sur une partition ext3 :
2016-11-12 12:04:28 +01:00
~~~
# tune2fs -m 1 /dev/sda1
Setting reserved blocks percentage to 1% (328560 blocks)
~~~
### FSCK au démarrage
2016-11-12 12:04:28 +01:00
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 :
2016-11-12 12:04:28 +01:00
~~~
# 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
2016-11-12 12:04:28 +01:00
Se reporter à [HowtoBenchmarks](http://trac.evolix.net/infogerance/wiki/HowtoBenchmarks).
## FAQ
2016-11-12 12:04:28 +01:00
Erreur `too many links` ?
Cela signifie que vous avez plus de 2^15^ (~= 32k) répertoires dans un répertoire.
2016-11-12 12:04:28 +01:00
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.
2016-12-29 11:25:39 +01:00
2017-03-07 16:25:21 +01:00
Chercher le répertoire contenant le plus de répertoires = + de inodes/inode :
2017-01-03 11:20:35 +01:00
2017-03-07 17:37:06 +01:00
~~~{.bash}
PATH_TO_WATCH='/var'
RESULT_FILE='list_max_inode.txt'
2017-03-15 17:40:12 +01:00
TMP=$(mktemp)
2017-03-07 17:37:06 +01:00
#Regarder dans le premier niveau
2017-03-15 13:15:44 +01:00
(for i in $(find $PATH_TO_WATCH -type d); do echo $(ls -a $i | wc -l) $i; done) | sort -n > $TMP
#compter dans les sous niveaux
cat $TMP | (while read line; do num=$(echo $line | awk '{ print $1 }'); path=$(echo $line | awk '{ print $2 }'); echo ${path%/*}; done) | sort | uniq | (while read line; do echo $(grep "$line" $TMP | cut -f1 -d' ' | xargs echo -n | tr -s ' ' '+' | xargs echo | bc -l) $line; done) | sort -n | tee $RESULT_FILE
rm $TMP
2016-12-29 11:25:39 +01:00
~~~
Supprimer des vieux fichiers (+ vieux de 30 jours en modification) :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
find . -type f -mtime +30 -exec rm '{}' \;
~~~