Zimbra : déplacer les boites des utilisateurs – Babash

Après lancement de votre messagerie Zimbra, vous souhaitez répartir les boites les plus conséquentes sur vos stores pour répartir la charge ? Voici comment faire :

État des lieux

Petit résumé de nos choix :

A l’époque, nous avons choisi le critère du nombre afin de répartir les utilisateurs : 12 000 étudiants sur 2 stores et 6 000 personnels sur un seul store.
Ce n’est pas un mauvais choix, mais les étudiants ne consomment pas énormément de stockage. Nous avons donc 2 stores peu chargés et 1 beaucoup plus.

De plus, si ce dernier tombe, le personnel entier n’a plus de boite mail.

De ces deux constats, nous avons souhaité répartir les boites du personnel sur l’ensemble des stores.

Trouver les boites les plus volumineuses

Voici donc 2 lignes de commandes à lancer sur le “store personnel” :

#recuperation de tous les comptes personnels sauf comptes de services zimbra zmprov gqu votre_serveur.domain.com | egrep -v ‘^spam|^ham|^virus|^admin|galsync’ | awk {‘print  » « $3 » « $1’} | grep -v « @domaineETUDIANT.fr » > /tmp/quota_account #on trie par ordre de grosseur et on migre les 2000 premiers comptes cat /tmp/quota_account | sort -n -r | head -n 2000 > /tmp/all_account_sorted

#recuperation de tous les comptes personnels sauf comptes de services zimbra zmprov gqu votre_serveur.domain.com | egrep -v ‘^spam|^ham|^virus|^admin|galsync’ | awk {‘print  » « $3 » « $1’} | grep -v « @domaineETUDIANT.fr » > /tmp/quota_account #on trie par ordre de grosseur et on migre les 2000 premiers comptes cat /tmp/quota_account | sort -n -r | head -n 2000 > /tmp/all_account_sorted

Je pense que les commentaires sont assez parlants 🙂 J’ajouterai par contre que nous avons sélectionné que les 2000 premiers comptes, soit 2/3 des comptes du “store personnel” car ces 2/3 seront mis sur deux autres stores.

Lire plus :   Remplacer sa box – SeedBox - Babash

Vous obtenez en sortie un fichier de ce type:

Taille de la boite      UID

12354684714354684 uid@domain.com

Répartir les comptes sur 2 stores

#on split en 2 fichiers cat /tmp/all_account_sorted | sed ‘n;d’ > /tmp/all_account_store1 cat /tmp/all_account_sorted | sed -n ‘n;p’ > /tmp/all_account_store3

cat /tmp/all_account_sorted | sed ‘n;d’ > /tmp/all_account_store1 cat /tmp/all_account_sorted | sed -n ‘n;p’ > /tmp/all_account_store3

Simple ici, on répartir en fonction des lignes paires et impaires.

Générer les commandes Zimbra

Il y a deux commandes à générer :

  • copie de la boite sur le nouveau serveur et activation de cette dernière,
  • suppression de la boite restée sur l’ancien serveur.

En effet, vous avez beau utiliser la commande “zmmboxmove”, la boite est certes déplacée, mais celle d’origine reste en cas de besoin. A vous de la supprimer quand la bascule est correcte.

Alléger les fichiers

Avant de générer les commandes, il vous faut alléger le fichier car ce dernier contient la taille de la boite mail. Pour cela :

cat /tmp/all_account_store1 | awk -F’ ‘ ‘{print $2}’ > /root/zmmboxmove/all_account_store1

cat /tmp/all_account_store1 | awk -F’ ‘ ‘{print $2}’ > /root/zmmboxmove/all_account_store1

Copie du fichier pour générer la purge des box

On duplique ce fichier pour générer les commandes de purge des vieilles boites

cp /root/zmmboxmove/all_account_store1 /root/zmmboxmove/all_account_store1_purge

cp /root/zmmboxmove/all_account_store1 /root/zmmboxmove/all_account_store1_purge

Générer le zmmboxmove

sed -i ‘/^/ s//zmmboxmove -a /g;/$/ s// –from storeorigine.domain.com –to storecible.domain.com –sync/g’ /root/zmmboxmove/all_account_store1

sed -i ‘/^/ s//zmmboxmove -a /g;/$/ s// –from storeorigine.domain.com –to storecible.domain.com –sync/g’ /root/zmmboxmove/all_account_store1

Générer le purge

sed -i ‘/^/ s//zmpurgeoldmbox -a /g’ /root/zmmboxmove/all_account_store1_purge

sed -i ‘/^/ s//zmpurgeoldmbox -a /g’ /root/zmmboxmove/all_account_store1_purge

Faire de même pour le fichier “all_account_store3”

Conseils

Les 4 fichiers sont donc générés ( 2 pour déplacer et 2 pour supprimer les anciennes boites ).

Lire plus :   Choix de ma domotique - Babash

Faire des petits lots

Ne lancez pas cela à la bourrin ! Coupez le fichier de déplacement de boite en petit lot : genre 50 comptes. Et chaque jour, vous ferez 50 comptes à chaque fois.

Cela laissera Zimbra faire les modifications tranquillement, que les sauvegardes de ces boites mails se fassent sur le nouveau store, que votre sauvegarde de VM soit faite aussi niveau infrastructure.

Utilisez donc la commande bash nommée split :

split -l 50 /root/zmmboxmove/all_account_store1

split -l 50 /root/zmmboxmove/all_account_store1

Attention aux coupures SSH !

Si votre serveur est inaccessible en SSH pour diverses raisons, le script sera interrompu. Lancez le dans un Screen ! Il continue de faire son chemin jusque la fin.

Souci de clé SSH ?

Si une erreur SSH s’affiche lors de la migration, mettre a jour les clefs :

Suivre l’avancée de la migration

Ayé lancé ??

Suivez l’avancement en direct via la commande :

Déplacement terminé ?

C’est l’heure de purger les anciennes boites ! Toujours dans un screen par précaution 😉

A lire également