Le dépannage d'une machine Ubuntu saturée

Le dépannage d'une machine Ubuntu saturée

Dans notre cas, nous avions un service postfix en relais SMTP qui n'arrivait plus à envoyer de mails vers l'extérieur.
Un message d'erreur apparaissait dans les log (/var/log/mail.log)  "No space left on device".
Nous avons listé la place disponible avec : df  -h

root@helpdesk:/boot# df -h
Sys. de fichiers              Taille Util Dispo Uti Monté sur
/dev/mapper/helpdesk--vg-root   6,5G    4,0G  2,2G  65% /
none                            4,0K       0  4,0K   0% /sys/fs/cgroup
udev                            483M    4,0K  483M   1% /dev
tmpfs                            99M    388K   99M   1% /run
none                            5,0M       0  5,0M   0% /run/lock
none                            494M       0  494M   0% /run/shm
none                            100M       0  100M   0% /run/user
/dev/sda1                       236M    154M   70M  69% /boot

Il reste environ 2.2GB d'espace disques disponible sur racine. Il semble que ce soit les inodes qui posent problème  :

root@helpdesk:/boot# df -i
Sys. de fichiers              Inauds IUtil. ILibre IUti Monté sur
/dev/mapper/helpdesk--vg-root 441504 441504      0  100% /
none                          126372      2 126370    1% /sys/fs/cgroup
udev                          123562    435 123127    1% /dev
tmpfs                         126372    366 126006    1% /run
none                          126372      3 126369    1% /run/lock
none                          126372      1 126371    1% /run/shm
none                          126372      2 126370    1% /run/user
/dev/sda1                      62248    322  61926    1% /boot

Tout d'abord, il faut identifier les "petits fichiers fautifs" à la racine :

for i in /*; do echo -n $i " " ; find $i | wc -l; done | sort -n -k2

/initrd.img  1
/lost+found  1
/mnt  1
/opt  1
/srv  1
/tmp  1
/vmlinuz  1
/lib64  2
/media  4
/home  8
/root  12
/bin  149
/sbin  223
/boot  294
/run  371
/dev  439
/etc  2002
/lib  6526
/sys  21976
/proc  71843
/usr 84015 
/var 241245 

On remarque que les répertoires sont triés par ordre croissant (les derniers sont les plus volumineux).
Nous supprimons manuellement les anciens noyaux présent dans "/usr/src/", puis il faut vérifions notre noyau :

uname -a
Linux helpdesk 3.13.0-65-generic

Listons les noyaux actuellement en place sur Ubuntu :

dpkg -l | grep -Ei "linux-headers|linux-image"

La version actuel du noyau est 3.13.0.-65-generic, les anciennes version seront à supprimer tel que :

 rm -r linux-headers-3.13.0-61  linux-headers-3.13.0-61-generic linux-headers-3.13.0-59  linux-headers-3.13.0-59-generic

Souvent, le problème de noyaux est accompagné d'une parition "/boot" saturée :

df -h /boot
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/sda1          228M    228M     0 100% /boot

Voici la liste des noyaux listés dans la partition de démarrage:

abi-3.13.0-51-generic         initrd.img-3.13.0-88-generic
abi-3.13.0-55-generic         initrd.img-3.5.0-23-generic
abi-3.13.0-85-generic         lost+found
abi-3.13.0-86-generic         memtest86+.bin
abi-3.13.0-87-generic         memtest86+.elf
abi-3.13.0-88-generic         memtest86+_multiboot.bin
abi-3.13.0-91-generic         System.map-3.13.0-51-generic
abi-3.13.0-92-generic         System.map-3.13.0-55-generic
abi-3.5.0-23-generic          System.map-3.13.0-85-generic
config-3.13.0-51-generic      System.map-3.13.0-86-generic
config-3.13.0-55-generic      System.map-3.13.0-87-generic
config-3.13.0-85-generic      System.map-3.13.0-88-generic
config-3.13.0-86-generic      System.map-3.13.0-91-generic
config-3.13.0-87-generic      System.map-3.13.0-92-generic
config-3.13.0-88-generic      System.map-3.5.0-23-generic
config-3.13.0-91-generic      vmlinuz-3.13.0-51-generic
config-3.13.0-92-generic      vmlinuz-3.13.0-55-generic
config-3.5.0-23-generic       vmlinuz-3.13.0-85-generic
grub                          vmlinuz-3.13.0-86-generic
initrd.img-3.13.0-51-generic  vmlinuz-3.13.0-87-generic
initrd.img-3.13.0-55-generic  vmlinuz-3.13.0-88-generic
initrd.img-3.13.0-85-generic  vmlinuz-3.13.0-91-generic
initrd.img-3.13.0-86-generic  vmlinuz-3.13.0-92-generic
initrd.img-3.13.0-87-generic  vmlinuz-3.5.0-23-generic

Pour exemple supprimons un ancien noyaux :

rm -r abi-3.13.0-61-generic config-3.13.0-61-generic initrd.img-3.13.0-61-generic System.map-3.13.0-61-generic vmlinuz-3.13.0-61-generic

De plus, nous avons une grande quantité de fichier dans  : /var/lib/glpi/files/_sessions

cd /var/lib/glpi/files/_sessions

Nous utiliserons pour le nettoyage des fichiers _sessions par exemple  l'interface web de GLPI en admin :  /configuration/Actions Automatique/ puis dans la liste déroulante : "session" puis nous cliquons sur "Exécuter" à la prochaine exécution:

Il existe aussi une méthode manuel de suppression des fichiers comme :

rm sess_[a-z]
rm sess_[0-9]

Pour terminer, nous listons les noyaux encore en place sur Ubuntu :

dpkg --list 'linux-image*' 

Reprenons notre exemple précédent avec nos noyaux que nous supprimons avec une purge forcée via APT:

apt-get remove --purge -f linux-headers-3.13.0-61 linux-headers-3.13.0-61-generic linux-headers-3.13.0-59 linux-headers-3.13.0-59-generic

Les commandes suivantes peuvent aussi être utiles dans notre cas :

  • apt-get clean :  supprime la totalité des paquets présents dans /var/cache/apt/archives  
  • apt-get autoremove : Désinstaller les paquets indiqués avec leurs dépendances logicielles (sans purge).
  • apt-get install -f : Résous le problème de dépendance manquante à un logiciel installé (dans de rare cas).

Désormais, la commande suivante peut être utiliser :

apt-get update && apt-get upgrade -y

La machine Ubuntu est le service postfix est désormais en fonctionnement normal.