PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Cyrus IMAP: Partition umziehen



tschloss
20.12.08, 13:29
Hi,

mein Cyrus IMAP-Server platzt aus den Nähten.
Die Maschine hat eine große zweite Festplatte mit freien primären Partitionen.
Ursprünglich wollte ich die ganze Platte auf eine größere migrieren, aber aus verschiedenen Gründen möchte ich jetzt nur Daten umziehen.

Der Server serviert ausschließlich IMAP und SMTP, d.h. das IMAP Datenverzeichnis ist das, welches ich umziehen will.
Bei mir ist das "/var/imap/spool".

Ich sehe zwei Vorgehensweisen und wollte mal nach Eurer Meinung fragen:
Option 1:
Übertragen aller Daten unter /var/imap/spool auf den Toplevel einer leeren Partition. Mounten der Partition unter /var/imap als "spool".
Vorteil: sollte für alle Konfigs transparent sein. Nachteil: recht "speziell".

Option 2: Übertragen aller Daten an irgendeine Stelle der neuen Partition. Mounten der Partition an eine übliche Stelle, z.B. /mnt/daten2.
Verändern von /etc/imapd.conf: "partition-default: /mnt/daten2/imapspool".
Vorteil: kommt mir "Ordentlicher" vor, die Partition kann auch anderweitig genutzt werden. Nachteil: Nicht transparent=>Wenn es mehr Referenzen auf den Standort des Spoolverzeichnis gibt (z.B. Backup-Prozess) muss das erst herausgefunden werden und dann korrigiert werden. (Gibt es weitere Referenzen?)

*new* Option 3: Offenbar kann ich auch weitere Cyrus-Partitionen anlegen und dann per Cyrus Befehl Mailboxen auf die neue Partition bewegen. Ist sowas den o.g. Dteisystem-basierten deutlich vorzuziehen? (Muss mal nach Doku suchen, Hinweise werden gerne genommen)

Danke für Meinungen oder andere Lösungsvorschläge.

Gibt es beim Kopieren der Daten was zu beachten (außer die Rechte zu behalten)? Ist Filesystem oder Zeichensatzthematik relevant (Cyrus arbeitet ja teilweise auch mit Links; Zeichensatz: manche User verwenden Umlaute in Ihren Foldernamen *würg*, die werden bisher irgendwie kodiert abgebildet).
Hinweis: /var/lib/imap .... würde bei meinem Ansatz auf der alten Platte verbleiben.

VG Thomas
PS: Versionsnummer des Cyrus habe ich nicht zur Hand. Ist aber ca. 4 Jahre alt.
Der Server steht entfernt (ich habe Zugang, muss aber hinfahren => remote Aktitionen bevorzgt ;) )

Roger Wilco
20.12.08, 15:36
Option 4: Eigenes Verzeichnis auf der neuen Partition anlegen, Daten migrieren und mit `mount --bind [...]` wieder unter /var/spool/imap einbinden.

An diesem Punkt würde es sich auch anbieten, mal über LVM nachzudenken. Das erleichtert dann ggf. auch die Backups sowie das nachträgliche Vergrößern von Partitionen.

cane
20.12.08, 15:39
Ich würde 1) machen.

mfg
cane

tschloss
20.12.08, 15:50
Danke Euch beiden - auf eure Anmerkungen hatte ich gehofft.

mount -bind kenne ich gar nicht. Aber ihr beide ratet zum "transparenten" Verfahren auf FS-Level.
LVM: ich habe nicht dazugeschrieben, wie klein dieser Mailserver ist. Das ist das Sekretariat meines Sportvereins und dort haben sich wenige Gigabyte angesammelt, was die Platte langsam "sprengt". Also kein Thema, mit modernen Platten die nächsten 100 Jahre zu überstehen ;)

Habt ihr noch was zum Thema "Zeichensatz" zu sagen? Kann das in irgendeiner Form zum Problem werden.

Beispiel: Ein Folder "Beiträge" sieht über mein OS X Terminal in seiner jetztigen Lokation so aus: "Beitr&AOQ-ge".
Ich muss vermutlich beim Formatieren darauf achten, die selben Optionen zu nehmen, wie sie auf dem Orginal-Drive herrschen. Ist übrigens ein SUSE 9.2 (der Server ist intern!).


Danke und Grüße
Thomas

tschloss
31.12.08, 10:49
Entgegen meiner eigenen Idee und den obigen Stimmen habe ich nun doch nicht den Weg "Verzeichnisstruktur auf neues Volume bewegen und das an die 'alte' Stelle einmounten" gewählt.
Irgendwie verhielten sich die erstellten Partitionen zickig, so dass ich vor einem Hau-Ruck-Umzug mit Schief-Geh-Wahrscheinlichkeit Angst hatte. Außerdem war nicht mal mehr genug Platz, ein Backup zu erstellen (reoback).

Also habe ich eine neue Partition irgendwo unter "/mnt/data3" eingehängt.
Dort ein Verzeichnis "imappart3" (Owner cyrus:mail und Rechte 750) erstellt.
Dieses macht man in der imapd.conf als "part3" bekannt mit "partition-part3: /mnt/data3/imappart3".
Nach einem "cyrus force-reload" steht diese Partition in cyradm zur Verfügung, z.B.
"createmailbox user.foobar part3".
Mit einer Zeile in imapd.conf "defaultpartition part3" gehen cm's automatisch nach part3.

Umziehen kann man Folder mit
"renamemailbox user.foobar.Sent user.foobar.Sent part3". Das geht im laufenden Betrieb und ist völlig transparent.

Ganze Bäume (User) umzuziehen ist mir nicht geglückt, etwa über Wildcards.
Es hat bei mir besser funktioniert, die Bäume von den Blättern her zu transferieren, also die tiefsten Folderpfade zuerst und zum Schluss den Top-Level, z.B. user.foobar.

Ich habe jetzt ein paar weniger aktive User umgezogen ud beobachte das ein paar Tage.
Dann werde ich weitere Folder umziehen.
Hier ist ein Perl-Skript, mit dem ein Folder umgezogen werden kann. Eventuell baue ich mir noch eine Schleife darum, um einen User komplett umzuziehen.

use Cyrus::IMAP::Admin;

my $host='localhost';
my $admin='cyrus';
my $admin_pass='sehrgeheim';

my $client = Cyrus::IMAP::Admin->new($host) or
die "$0: Unable to connect to IMAP server '$host': $!" ;

$client->authenticate(-user => $admin, -password => $admin_pass, -mechanism => "LOGIN") or
die "$0: Failed to authenticate to IMAP server '$host' as '$admin': $!";

print "Relocate to part3....\n";
$client->renamemailbox('user.foobar.Sent', 'user.foobar.Sent', 'part3');