Partition racine pleine sur serveur en release 2 OVH

J’aimerais aborder 2 petits “bugs” (ou plutôt 2 oublis) qu’on trouve sur la distribution phare chez OVH, la fameuse release 2. Deux oublis qui font que la partition racine de certains serveurs se remplit inexorablement et on voit alors souvent leurs propriétaires débarquer sur les forum OVH en quête d’assistance. Deux oublis qui font également dire à certains que la partition racine des serveurs en release OVH est beaucoup trop petite (ce en quoi ils ont partiellement tort, vous allez comprendre pourquoi), ce qui occasionne divers débats sur les forums et, indirectement, participe à la réputation quelque peu sulfureuse de cette distribution.

Je n’aborderai pas ici le partitionnement des disques durs en général et j’en arrive tout de suite à ce qui est bien souvent proposé par défaut sur les serveurs (notamment OVH). Il s’agit d’un partitionnement qui comprend, en simplifiant un brin, 2 partitions : une “petite” (la partition racine montée sur /) et une “grosse” (la partition destinée à accueillir les données et qui est bien souvent montée sur /home).

Je le répète, ce que je viens d’écrire ci-dessus est une simplification. Il n’en demeure pas moins qu’elle colle bien souvent à la réalité, en particulier en ce qui concerne les serveurs en release OVH (dont la plupart tournent avec le partitionnement par défaut puisque les utilisateurs de ce genre de serveurs s’amusent rarement à les répartitionner). On se retrouve donc avec une partition racine de quelques Go (ce qui est théoriquement suffisant puisqu’elle n’est censée n’accueillir que le système et pas les données) et tout le reste de l’espace disque est alloué à /home.

Le piège est alors de voir sa partition racine se remplir très vite car on y retrouve des données qui devraient évidemment se retrouver sur l’autre partition. Les cas les plus fréquents (sur les serveurs en général, hors release 2 donc) sont les bases de données (/var/lib/mysql), les logs (/var/log), etc. Tout un tas de choses qui peuvent devenir envahissantes à la longue puisqu’elles ont tendance à “grossir” avec le temps. Seulement sur la release OVH, ils ont prévu le coup ! Toutes les données et tous les logs ont été volontairement déplacés sur la “grosse” partition. On retrouve ainsi les bases dans /home/mysql, les logs dans /home/log, et ainsi de suite. Bien vu.

Bien vu … oui, sauf qu’ils ont malheureusement oublié deux bidules qui, avec le temps, présentent un risque d’encombrer la partition racine. Ces deux bidules, les voici :

Un fichier de log mail

Il s’agit de /var/spool/qscan/qmail-queue.log : un fichier de log tout bête mais sur lequel ne se trouve aucun logrotate. Il a donc tendance à enfler avec le temps, d’autant plus vite que le serveur est fortement sollicité en mail.

La solution : l’inclure dans le logrotate ou le déplacer sur /home (ou les deux à la fois). Pour le déplacer, rien de plus simple :

On coupe le mail
/etc/init.d/spamd stop
/etc/init.d/clamd stop
/etc/init.d/qmail stop
On déplace ce foutu fichier sur /home et on crée le lien symbolique qui va bien
mv /var/spool/qscan/qmail-queue.log /home/log/
ln -s /home/log/qmail-queue.log /var/spool/qscan/qmail-queue.log
On redémarre le mail
/etc/init.d/spamd start
/etc/init.d/clamd start
/etc/init.d/qmail start

Les logs binaires de réplication MySQL

En deux mots, ces logs enregistrent toute l’activité de MySQL et permettent par exemple, en cas de panne, de reconstruire les bases jusqu’à l’instant du crash (voir Google, notre ami à tous, si vous souhaitez creuser la chose). Ils sont précieux pour ceux qui font une utilisation avancée de MySQL … ce qui est rarement le cas des utilisateurs de release 2 dont la plupart ignorent tout de ces logs et ne s’en serviront jamais. Pourtant ils sont bien activés sur les serveurs en release et ils peuvent vite devenir énormes, surtout si votre base de donnée est fortement utilisée.

Purger les logs

Pour purger ces logs (qui, pour information, se trouvent ici : /var/run/mysqld), connectez-vous en root à MySQL en ligne de commande :

mysql -u root -p

(entrez le pass root MySQL, attention sur les serveurs en release 2 il est différent du pass root du système)

Vous obtenez alors un prompt du genre “mysql>” signifiant que vous êtes connecté à MySQL. Tapez la commande :

reset master;

Après quoi un “exit” suffit pour sortir de MySQL.

Désactiver les logs

Purger ces les logs de réplication, c’est bien (et cela va vraisemblablement vous libérer de la place) … mais si rien d’autre n’est fait, ils vont à nouveau se remplir inexorablement. Il reste donc à les désactiver. Pour ce faire, il suffit de :

Editer le fichier de config MySQL /etc/mysql/my.cnf et commenter la ligne suivante

(donc : ajouter une dièse en début de ligne)

#log-bin

Et redémarrer MySQL

/etc/init.d/mysql restart
Et si je veux les garder, ces logs ?

J’ajoute ce petit paragraphe suite aux commentaires de Thomas (voir ci-dessous) car il est vrai que certains pourraient avoir envie de conserveur ces fameux logs. Auquel cas il vous suffit d’appliquer la méthode décrite au début de ce billet concernant les logs mails et déplacer le répertoire /var/run/mysqld dans /home, par exemple dans /home/log. Attention à prendre soin de faire cette opération en ayant coupé le serveur MySQL. Soit à titre d’exemple :

/etc/init.d/mysql stop
mv /var/run/mysqld /home/log/
ln -s /home/log/mysqld /var/run/mysqld
/etc/init.d/mysql start

Sayé, c’est fini

Voilou, après ça l’espace disque de la partition racine de votre serveur ne devrait plus bouger d’un pouce ! 🙂 Mis à part peut-être lors de l’application des patches OVH pour mettre votre serveur à jour mais cela restera marginal.

Relancer les services mail en release 2 OVH

Un petit billet en vitesse à destination des clients OVH qui administrent leur serveur en release 2 via Webmin.

Il arrive régulièrement qu’on doive relancer certains services sur un serveur dédié, ne fût-ce que quand on fait la moindre modification sur un fichier de configuration. Ceux qui ont l’habitude d’administrer leur serveur en SSH connaissent bien le répertoire /etc/init.d/ pour avoir déjà tapé au moins 100.000 fois des commandes du genre /etc/init.d/mysql restart.

Ceux qui connaissent moins bien SSH passent par Webmin pour administrer leur serveur. Là aussi il est possible de relancer les services :

  • Le bouton “Appliquer les changements” dans Bind
  • Le bouton “Stop MySQL server” (suivi bien sûr de “Start”) dans MySQL
  • L’onglet “Appliquer les changements” dans Apache
  • Le lien “Redemarrer tous les services (pour prendre en compte les changements)” dans OVHm (qui relance à la fois Bind et Apache)
  • Etc, etc.

Tous fonctionnent et permettent de relancer proprement les services … tous sauf un : QMail. Ceux qui ont eu un jour la curiosité de cliquer sur le bouton “Stop QMail Processes” (ou bien dont le serveur de mail a bêtement planté) ont probablement eu la désagréable surprise de ne pas pouvoir relancer le serveur de mail.

On a beau cliquer sur “Start QMail Processes”, ça ne redémarre pas.

Et pourquoi ça ne marche pas ? C’est tout simplement dû à l’installation du serveur de mail sur la release OVH : le trio QMail – Spamassassin – ClamAV (serveur de mail – antispam – antivirus) est une installation OVH “maison” et Webmin a un peu de mal à le prendre en charge.

Alors que faire ? Pas le choix, il faut passer en SSH (par pitié, ne cédez pas à la tentation du reboot : rebooter un serveur linux, c’est mal !) et lancer les commandes suivantes dans l’ordre :

/etc/init.d/clamd stop
/etc/init.d/spamd stop
/etc/init.d/qmail stop
/etc/init.d/qmail start
/etc/init.d/clamd start
/etc/init.d/spamd start

Voilà qui devrait faire l’affaire. Rien ne vous empêche d’ailleurs de vous faire un petit script perso qui vous permette de lancer toutes ces commandes automatiquement les unes après les autres.