ZwooksManager - Espace disque insuffisant
Lorsque je mets à jour mon site à l'aide du ZwooksManager, cela se termine par un message m'indiquant que mon espage disque est insuffisant, et mon Zwook n'a pas été mis à jour. Pourtant, il reste plusieurs Go de libres sur la partition où est stocké Zope, et donc Zwook.
Réponse:
Le problème ne vient pas de la partition où est stocké Zope, mais de la partition /tmp, où sont stockés des fichiers temporaires durant la mise à jour. Souvent, la partition /tmp ne fait que quelques centaines de Mo, ce qui est insuffisant lorsque le site que vous devez mettre à jour commence à prendre du poids. D'où le message d'erreur.
Il y a deux façons d'y remédier.
1ere METHODE :
Cette première méthode a l'avantage de la rapidité et de la simplicité, mais elle ne concernera que Zope. Si vous désirez que tout le système, et pas uniquement Zope, bénéficie de l'augmentation de taille de /tmp, il faudra utiliser la seconde méthode.
1°) Connectez-vous en root sur une console du serveur.
2°) Déterminez la taille de vos partitions montées, à l'aide de :
# df -h
3°) Supposons que vous décidiez que les fichiers temporaires seront stockés sur la partition /var, car elle vous semble suffisamment grande (vous pourriez choisir /home, ou /usr ; remplacez simplement /var par votre choix, dans la suite des explications).
4°) Créez, s'il n'existe pas déjà, le dossier /var/tmpzope, et attribuez-lui les droits drwxrwxrwt. Pour ce faire, procédez ainsi :
# mkdir /var/tmpzope
# chmod 1777 /var/tmpzope
# ls -l /var (pour vérifier les droits attribués à tmpzope)
5°) Dans les fichiers zope.conf de vos instances (/etc/zope.conf ou /var/lib/zope2.xx/instances/yyyy/etc/zope.conf) créez ou modifiez la section "environment" ; par exemple :
<environment>
TZ Europe/Paris
TMPDIR /var/tmpzope
</environment>
6°) Redémarrez alors le service Zope :
# /etc/init.d/zope restart (ou /etc/init.d/zope2.xx restart)
2nde METHODE :
Cette seconde méthode a l'avantage de faire bénéficier l'ensemble du système de l'augmentation de taille de /tmp.
Vous devez être face au serveur (et non à distance, avec ssh).
Prévenez vos utilisateurs que vous allez faire une maintenance bloquante (le serveur sera inaccessible pendant quelques minutes).
1°) Connectez-vous en root sur une console du serveur.
2°) Déterminez la taille de vos partitions montées, à l'aide de :
# df -h
3°) Supposons que vous décidiez que les fichiers temporaires seront stockés sur la partition /var, car elle vous semble suffisamment grande (vous pourriez choisir /home, ou /usr ; remplacez simplement /var par votre choix, dans la suite des explications).
4°) Créez, s'il n'existe pas déjà, le dossier /var/tmp, et attribuez-lui les droits drwxrwxrwt. Pour ce faire, procédez ainsi :
# mkdir /var/tmp
# chmod 1777 /var/tmp
# ls -l /var (pour vérifier les droits attribués à tmp)
5°) Passez en mode "single user" (à partir de maintenant, votre serveur sera indisponible ; attention, n'effectuez pas ceci à distance, par ssh, vous perdriez la main sur votre serveur !) :
# init 1
Entrez le mot de passe du root, lorsque cela est demandé, au bout de quelques dizaines de secondes. Vous êtes maintenant seul maître à bord, et pouvez faire toutes les bêtises que vous voulez - ou ne voulez pas ; soyez prudent !
6°) Placez-vous sur la racine, puis démontez les partitions /tmp et /var :
# cd /
# umount /tmp
# umount /var
7°) Répétez les trois commandes du 4°), afin de créer un /var/tmp qui sera accessible au système, avant même que la partition /var ne soit montée.
8°) Détruisez le dossier /tmp, et créez à la racine un lien symbolique vers /var/tmp :
# cd / (pour être sûr qu'on est à la racine)
# rm -rf /tmp (pour supprimer /tmp et tout son contenu)
# ln -fs /var/tmp (pour créer le lien symbolique)
# ls -l (pour vérifier que tmp pointe bien vers /var/tmp)
9°) Remontez /var (ne cherchez pas à remonter /tmp !):
# mount /var
10°) Editez /etc/fstab (à l'aide de vi) afin de placer un dièse (#) au début de la ligne qui concerne la partition /tmp. Cela évitera que la partition ne soit montée lors des prochains démarrages du serveur.
11°) Quittez le mode "single user" pour rendre votre serveur à nouveau disponible :
# init 2 (sur une distrib à base de Debian)
Sur une distrib à base de Mandriva (ex-Mandrake), vous taperez init 3 pour vous retrouver en mode console, ou init 5 pour vous retrouver en mode graphique.
La question fréquemment posée est : "si un fichier temporaire toto est créé dans /var/tmp avant que /var ne soit monté, n'est-il pas perdu une fois /var monté ?" La réponse est non, il n'est pas perdu. Sous Linux, un fichier est repéré par son inode, et le système connaît ainsi l'emplacement physique du fichier qu'il a créé et auquel il veut accéder, et sait donc que toto a été placé sur la partition racine, et non dans celle où /var a été monté.