Contexte
Je me souviens que c'était une belle soirée d'hiver, quand il est devenu soudainement clair qu'il y avait un problème avec Kerio Control.
Kerio Control n'a pas pu écrire les modifications de la configuration et une sorte de diable se produisait!
Le diagnostic a été rapide et précis - le disque du système Kerio Control était à court d'espace.
La raison, le gros vieux journal.
Il y avait plusieurs solutions:
- Effacer les journaux
- Augmenter l'espace disque système
- Ajouter un disque supplémentaire pour les journaux
Ce dernier semblait le plus logique.
En effet, nous ne cherchons pas des solutions faciles, mais nous essayons de faire le travail consciencieusement, pour que cela ne se reproduise plus et que rien ne puisse gâcher une autre merveilleuse soirée.
Un lecteur averti de l'article le dira immédiatement - mais laissez Kerio lui-même être en mesure de nettoyer les journaux et de stocker les journaux dans un laps de temps bien défini.
Oui, il peut, mais le journal est sorti en volume à partir de l'intervalle de temps spécifié sur le serveur. Comment faire face à cette situation?
Décision
Kerio Control Virtual Appliance est une machine virtuelle qui vit sur un seul disque, la solution semblait très simple:
- Ajouter un disque virtuel supplémentaire dans l'hyperviseur
- Créer un balisage ext4 ou ext3
- Ajouter un nouveau montage de disque à fstab
- Recherchez le fichier de configuration Kerio et spécifiez un nouveau chemin pour les journaux.
MAIS NON!
En commençant par l'élément «Ajouter un nouveau montage de disque à fstab» - une erreur s'est produite.
Il s'est avéré que Kerio ne se souciait pas de fstab.
Le disque était parfaitement monté manuellement, mais l'automatique ne voulait pas quelque chose après le lancement.
Après avoir longtemps erré dans les répertoires de fichiers à la recherche de quelque chose d'inconnu, mon attention a été attirée par le fichier 05basefs , à savoir, j'ai vraiment aimé les inscriptions suivantes - base et fs , mais 05 n'était pas du tout intéressé. Après avoir examiné son contenu, j'ai réalisé que le système de fichiers est monté ici.
Ensuite, tout semblait simple, depuis longtemps il y a un fichier winroute.CFG, tous les paramètres y sont stockés, vous pouvez également spécifier le chemin d'accès au répertoire contenant les journaux.
Mais il s'est avéré que je me suis trompé ici, Kerio fait attention aux nouveaux chemins dans le fichier de configuration, mais quelque chose ne fonctionne pas, le journal après avoir changé les chemins entraîne des erreurs ou n'affiche rien du tout.
Bon, d'accord, montons un nouveau disque à l'emplacement actuel du journal!
la mise en oeuvre
Après tout ce qui précède, la mise en œuvre est très simple.
Tout d'abord, nous devons nous connecter au terminal Kerio Control, le moyen le plus simple de le faire est d'utiliser SSH.
Activez temporairement l'accès SSH.
Pour ce faire, vous devez vous connecter au panneau d'administration et accéder à la section «État du système» tout en maintenant la touche Maj enfoncée.
Si vous avez tout fait correctement, un bouton d'activation SSH apparaîtra en bas à côté du bouton de redémarrage du serveur:
Activez temporairement SSH (n'oubliez pas de le désactiver après la configuration!)
Après avoir activé SSH, vous pouvez vous connecter au serveur à l'aide du client SSH.
Il est préférable d'utiliser un client qui sait immédiatement comment copier des fichiers sur le serveur, je vous expliquerai pourquoi plus tard.
Donc ce que nous avons maintenant:
- Nous avons créé et connecté un nouveau disque au serveur
- Marqué dans ext4 ou ext3
- Activé SSH et connecté au serveur
Ensuite, nous devons corriger le fichier 05basefs situé dans le chemin suivant . \ Etc \ boxrc.d \ 05basefs .
Mais avant de le modifier, vous devez faire deux autres choses.
Le premier est de trouver le dev du nouveau disque pour les logs.Afin
de connaître le nom du disque, exécutez lsblk et obtenez quelque chose comme
where:
- SDA - disque système
- sda1 - chargeur de démarrage
- sda2 et sda3 - la version actuelle et apparemment précédente de Kerio
- sda4 - Var ici les journaux de configuration et par défaut
- SDB est notre nouveau disque
Dans le cas où nous aurions besoin de sauvegarder les journaux actuels, nous devons temporairement monter le disque sdb dans un répertoire vide et transférer le contenu de / var / winroute / logs vers la sdb montée.
Après le transfert, démontez sdb.
La seconde consiste à permettre au système de fichiers de modifier les fichiers système.
Kerio monte le disque système sur lequel se trouve 05basefs avec des droits en lecture seule.
pour voir où et comment nous effectuons le montage prémédité
Vous pouvez voir que / dev / sda2 est dans l'état RO , et c'est là que se trouve la version actuelle de Kerio et 05basefs est également là.Activez temporairement l'
écriture dans / dev / sda2 avec la commande mount -o rw, remonter / dev / sda2
Maintenant, vous pouvez réparer le fichier 05basefs, personnellement, je préfère copier le fichier déjà corrigé, c'est pratique, car après l'avoir fait une fois, vous devrez répéter la procédure de remplacement de fichier à chaque fois après la mise à jour de la version Kerio, car le 05basefs d'origine est restauré avec la nouvelle version.
Vous pouvez également utiliser l'éditeur vi pour modifier le fichier - il se trouve dans le système.
Modifiez 05basefs comme suit
#!/bin/sh
# $Revision: 1.13 $
case "$1" in
start)
grep -q /tmp /proc/mounts || mount -t tmpfs tmp /tmp
mkdir -p /tmp/run
root=$(grep " / " /proc/mounts | grep -v rootfs | sed 's/ .*//')
DATA=${root%[23]}4
BOOT=${root%[23]}1
modprobe ext3
mount -o ro -t ext3 $BOOT /boot
if [ ! -z "$DATA" ] && ! mount -o data=ordered $DATA /var 2>/dev/null; then
echo "Creating new data partition..."
#mkfs.nilfs2 -b 1024 $DATA
mkfs.ext3 -b 4096 -q $DATA 2>&1
tune2fs -c 0 -i 0 -r 0 -E stride=512,stripe-width=512 $DATA
fsck -p $DATA
mount -o data=ordered $DATA /var
[ -d /var.default ] && cp -a /var.default/* /var
elif [ -f "/var.default/update.list" ]; then
for i in `cat /var.default/update.list`; do
[ -e "/var.default/$i" -o -h "/var.default/$i" ] || continue
! [ -e "/var/$i" -o -h "/var/$i" ] || continue
mkdir -p $(dirname "/var/$i")
cp -a "/var.default/$i" "/var/$i"
done
fi
mount -t ext4 /dev/sdb /var/winroute/logs
exit 0
;;
stop)
echo "Umounting data partition..."
for i in $(seq 1 10); do
if fuser -sm /var; then
sleep 1
else
break
fi
done
fuser -kms /var/winroute/logs
umount /var/winroute/logs
fuser -kms /var
umount /var
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
Explications des changements dans le fichier
mount -t ext4 / dev / sdb / var / winroute / logs
monte sdb sur le chemin du journal d'origine / var / winroute / logs
fuser -kms / var / winroute / logs
umount / var / winroute / logs
Démonte sdb pour corriger arrêt du serveur.
Nous allons maintenant ramener sda2 à son état d'origine avec la commande mount -o r®, remount / dev / sda2
Après le redémarrage du serveur, Kerio écrira les journaux sur notre disque SDB dédié.
Béquille
(après tout, on ne peut pas se passer d'une béquille)
Comme je l'ai dit plus tôt, si la version Kerio est mise à jour, le fichier 05basefs reviendra à son état d'origine, Kerio recommencera à écrire des journaux dans sda4. Le long du chemin / var / winroute / logs.
Pour que Kerio continue d'écrire le journal dans SDB, vous devez répéter la procédure de remplacement de fichier.