Contexte
Trouver ce qui utilise la place sur vos disques nâest pas toujours trĂšs simple, il existe de nombreux outils graphiques pour faire cela, mais ils ont un point commun, ils sont trĂšs lentsâŠ
MĂ©thode
Je vous propose dâutiliser la commande find
et la commande du
pour résoudre ce problÚme.
find / -mindepth 1 -maxdepth 1 -exec sudo du -hsx {} \; 2>/dev/null | sort -h
find / -mindepth 1 -maxdepth 1
â Permet dâobtenir la liste des fichiers et dossier se trouvant Ă la racine de votre systĂšme.-exec ⊠\;
â ExĂ©cute ce la commande « âŠÂ »sudo du -hsx {}
â on utilisesudo
pour ĂȘtre certain de pouvoir accĂ©der Ă tout le disque.du -hsx {}
âdu -hsx
pour chacune des entrées,-h
pour un affichage facile Ă lire,-s
pour avoir le résultat final uniquement et-x
oblige a ne pas traiter les points de montage.2>/dev/null
â Ignore les erreursâŠ|
â Passe le rĂ©sultat Ă la commande suivante.sort -h
â tri le rĂ©sultat en tenant compte de lâordre (-h).
Cela vous donnera quelque chose comme :
0 /dev
0 /proc
0 /sys
4,0K /cdrom
4,0K /lib64
4,0K /srv
8,0K /mnt
16K /lost+found
44K /snap
140K /media
2,0M /run
2,3M /tmp
18M /bin
23M /sbin
29M /etc
191M /root
384M /boot
1,8G /lib
1,8G /opt
2,1G /swapfile
17G /home
20G /usr
134G /var
On peut complĂ©ter ce rĂ©sultat Ă lâaide de :
df -h | grep -v '^/dev/loop' | grep -v '^//'
qui donne :
Filesystem Size Used Avail Use% Mounted on
udev 7,7G 0 7,7G 0% /dev
tmpfs 1,6G 2,0M 1,6G 1% /run
/dev/nvme0n1p2 234G 180G 42G 82% /
tmpfs 7,8G 84M 7,7G 2% /dev/shm
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 7,8G 0 7,8G 0% /sys/fs/cgroup
/dev/nvme0n1p1 511M 5,3M 506M 2% /boot/efi
/dev/sda1 916G 776G 95G 90% /mnt/data
tmpfs 1,6G 64K 1,6G 1% /run/user/1001
Analysons ces rĂ©sultats, on comprend que câest le dossier /var
qui contient 134G
qui utilise lâessentiel des 234G
de /
.
On peut continuer lâanalyse avec :
find /var -mindepth 1 -maxdepth 1 -exec sudo du -hsx {} \; 2>/dev/null | sort -h
voici un extrait du résultat :
âŠ
3,0M /var/spool
21M /var/backups
29M /var/local
134M /var/crash
179M /var/cache
2,8G /var/tmp
20G /var/lib
118G /var/log
On poursuit lâanalyse :
find /var/log -mindepth 1 -maxdepth 1 -exec sudo du -hsx {} \; 2>/dev/null | sort -h
avec un nouvel extrait :
âŠ
696K /var/log/wtmp
1,1M /var/log/wtmp.1
1,9M /var/log/timeshift
8,9M /var/log/installer
12M /var/log/bdc
17M /var/log/kern.log.2.gz
19M /var/log/kern.log.4.gz
21M /var/log/kern.log.3.gz
280M /var/log/kern.log
395M /var/log/kern.log.1
4,1G /var/log/journal
113G /var/log/syslog
Bon, câest lĂ que cela sent mauvais, puisque câest le dossier /var/log/journal
et le fichier /var/log/syslog
qui prennent lâessentiel de la place.
Dans ce cas, cela indique probablement un gros problĂšme au niveau du systĂšme, nettoyer les logs ne suffira probablement pas Ă le rĂ©soudreâŠ
On va cependant supprimer ce fichier tellement gros quâil nâest plus exploitable, on peut faire cela en redĂ©marrant le service aprĂšs la suppression du fichier :
sudo rm /var/log/syslog
sudo systemctl restart rsyslog.service
Notez que le fichier /var/log/syslog
est une copie de ce qui existe dans /var/log/journal
. Vous pouvez donc supprimer le fichier /var/log/syslog
sans perte dâinformation mĂȘme au niveau des logs, il suffit dâutiliser la commande journalctl qui sâappuie sur le vrai journal.
Bonus : la taille du fichier /var/log/journal
Voir le billet: đ» Nettoyage du journal de Systemd
Bonus: tracker-miner-fs
-
DĂ©tail sur `tracker-miner-fs`
Le contenu du fichier
/var/log/syslog
tail -n 500 /var/log/syslog
est principalement composé des lignes suivantes :
Nov 6 17:44:10 machine tracker-miner-f[324226]: g_file_has_prefix: assertion 'G_IS_FILE (file)' failed Nov 6 17:44:10 machine tracker-miner-f[324226]: g_file_equal: assertion 'G_IS_FILE (file1)' failed
Le fichier sâalimente en permanence, remplissant Ă nouveau le disque⊠(ce qui Ă©tait prĂ©visible)
Cela provient de
tracker-miner-fs
, une solution propose de nettoyer le cache, comme suit :rm -r ~/.cache/tracker
AprÚs quelque recherche, je trouve une solution un peu plus propre :
tracker reset --hard
Ensuite on peut contrÎler les logs :
tail -f /var/log/syslog
Et on sâaperçoit que lâerreur nâest plus lĂ (en tous les cas pas aussi souvent). Un problĂšme de plus en moinsâŠ
Pour obtenir de lâaide sur
tracker-miner-fs
, il faut utiliser la commande :tracker --help
pour avoir le détail de la sous-commande :
tracker help daemon tracker help info tracker help reset tracker help status
Bonus: PCIe Bus Error
-
DĂ©tail
Mais
/var/log/syslog
est-il toujours anormalement actif ?tail -f /var/log/syslog
Hum, et bien ouiâŠ
Nov 6 18:07:00 machine kernel: [23117.196831] pcieport 0000:00:1d.6: AER: Corrected error received: 0000:03:00.0 Nov 6 18:07:00 machine kernel: [23117.196930] alx 0000:03:00.0: AER: PCIe Bus Error: severity=Corrected, type=Data Link Layer, (Receiver ID) Nov 6 18:07:00 machine kernel: [23117.196932] alx 0000:03:00.0: AER: device [1969:e0b1] error status/mask=00000080/00002000 Nov 6 18:07:00 machine kernel: [23117.196933] alx 0000:03:00.0: AER: [ 7] BadDLLP
AprÚs quelques recherches, je comprends que un "PCIe Bus Error" se corrige généralement en modifiant
/etc/default/grub
(le démarrage du systÚme) pour ajouter les optionspci=nomsi
etpci=noaer
.GRUB_CMDLINE_LINUX_DEFAULT="pci=nomsi" GRUB_CMDLINE_LINUX="pci=noaer"
AprĂšs la modification, vous devez mettre Ă jour grub Ă lâaide de :
sudo update-grub
Et lĂ un redĂ©marrage sâimposeâŠ
Bonus : Recherche des fichiers posant problÚme pour le tracker
-
DĂ©tail
Voici deux commandes qui permettent (plus ou moins) de retrouver les fichiers (probablement corrompus) qui posent problĂšme au tracker.
cat /var/log/syslog | grep -v 'G_IS_FILE (' | grep -i 'file:///' | sed 's,.*file://\(.*\),\1,' | cut -d')' -f1 | cut -d"'" -f1
journalctl --user --unit=tracker-miner-fs.service -o json -r -n 50000 | jq -r \ --arg mesg1 "g_file_equal: assertion 'G_IS_FILE (file2)' failed" \ --arg mesg2 "g_file_has_prefix: assertion 'G_IS_FILE (prefix)' failed" \ 'select( .MESSAGE == $mesg1 | not ) | select( .MESSAGE == $mesg2 | not ) | .MESSAGE' | grep 'file:' | sed 's,.*file://\(.*\),\1,' | cut -d')' -f1 | cut -d"'" -f1
Surveiller les journaux
Pensez Ă surveiller le journal de vos machines, soit Ă la main, soit Ă lâaide de scripts, mais sâils augmentent de maniĂšre inattendue il y a probablement au moins une erreur Ă rĂ©soudreâŠ
Afficher les 2000 derniÚres lignes du journal :
journalctl --lines=2000
si le fichier /var/log/syslog
existe encore sur votre machine, vous pouvez utiliser :
tail -n 2000 /var/log/syslog
journalctl --system # Le journal systĂšme
journalctl --user # Le journal utilisateur
Références
- tracker-miner-fs crashes
- large syslog and kern.log files
- What causes this? pcieport 0000:00:03.0: PCIe Bus Error: AER / Bad TLP
- PCIe Bus Error: severity=Corrected, type=Physical Layer, id=00e5(Receiver ID)
- Issues with "PCIe Bus Error: severity=Corrected" errors? [partially SOLVED]
኿