Wir haben einen NFS-Server (Linux), der Dateien in einem iSCSI-Festplattenarray speichert. Dieser Server ist in Produktion. Der Server und das Array sind sehr alt und müssen bald ersetzt werden (das Array weist bereits ernsthafte Probleme auf).
Den Ersatzserver und das Ersatz-Array habe ich in einem anderen Netzwerk bereit.
Ich habe darüber nachgedacht, die Freigaben per Rsync zu synchronisieren und es dann noch einmal zu tun, damit ich die Daten synchronisiere. Ich weiß nicht, ob das zu Dateninkonsistenzen führen könnte ... Da die Freigaben über ein LVM gemountet sind, könnte ich vielleicht zuerst einen Snapshot erstellen?
FRAGE:
Was ist der beste Ansatz, um alle Daten zu migrieren? Haben Sie einen Rat?
Antwort1
Ihr Ansatz ist in Ordnung, wenn Sie das Schreiben in das Array vor dem zweiten rsync deaktivieren möchten. Das wird (sollte) zu einer sauberen Kopie führen.
Um die Ausfallzeit zu minimieren, führen Sie je nach den Umständen ein dreifaches Rsync durch:
- Synchronisieren Sie die Dateisysteme mit rsync, während der Quellserver so läuft, wie er ist. Dies wird einige Zeit in Anspruch nehmen und Ihnen eine Rohkopie liefern, die möglicherweise viele Inkonsistenzen enthält.
- (optional) Wenn Schritt 1 lange dauert und Sie in der Zwischenzeit viele Schreibvorgänge haben, führen Sie erneut eine rsync-Synchronisierung durch, während der Quellserver noch wie bisher ausgeführt wird. Dieser Schritt dauert weniger lange und Sie erhalten eine viel bessere Kopie (während der Ausführung fanden weniger Schreibvorgänge statt).
- Stoppen Sie das Schreiben auf den Quellknoten. Am besten mounten Sie ihn schreibgeschützt, wie stoned empfiehlt. Aber auch das Herunterfahren von Diensten oder die Verwendung des Einzelbenutzermodus können hilfreich sein.
- rsync es zum letzten Mal. Diesmal sollte es ziemlich schnell gehen. Es sollte nicht viele Inkonsistenzen geben (Schritt 2 ist viel kürzer als Schritt 1), also gibt es nicht viel zu synchronisieren.
- Führen Sie Ihre Prüfungen durch und starten Sie den neuen Server anstelle des alten.
Es gibt jedoch einige Dinge zu beachten:
- Wenn Sie viele kleine Dateien (Millionen) haben, wird jeder Rsync ohnehin einige Zeit in Anspruch nehmen. (Dasselbe gilt für langsame Leitungen, langsame/beeinträchtigte Speicher usw.)
- Wenn Ihr Quellspeicher bereits Probleme hat (ausgefallene Laufwerke oder etwas anderes, das dazu führen könnte, dass das Volume nicht mehr lesbar ist), beginnen Sie einfach mit Nr. 3. Sie werden eine lange Ausfallzeit haben, aber Sie minimieren das Risiko eines Fehlers während der Übertragung.
- Ich bin gerade auf die verrückte Idee gekommen, das gesamte Gerät, auf dem sich das Dateisystem befindet, per Rsync zu synchronisieren. Das könnte funktionieren, wenn das Ziel größer als die Quelle ist. Aber ich empfehle das nicht, da ich es selbst nicht ausprobiert habe.
Antwort2
Rsync+rsync oder Snapshot+rsync machen eigentlich keinen großen Unterschied – wobei rsync vielleicht praktischer ist, da Sie die Daten während der Übertragung komprimieren/verschlüsseln können, ohne zusätzliche Befehle verwenden zu müssen. In beiden Fällen werden Sie ewig versuchen, nachzuholen, was Ihre Benutzer seit dem letzten rsync möglicherweise auf die Freigabe kopiert haben, einschließlich noch in der Übertragung befindlicher Teildateien. Ehrlich gesagt würde ich Ihnen empfehlen, in einer Zeit geringer Nutzung eine erste Kopie mit rsync zu erstellen. Warnen Sie dann Ihre Benutzer, dass es aufgrund erforderlicher Wartungsarbeiten zu einer kleinen Unterbrechung kommen wird. Stoppen Sie die Dienste, die auf die Festplatte schreiben. Mounten Sie die alte Freigabe im Nur-Lese-Modus erneut, führen Sie ein letztes rsync durch und ersetzen Sie dann die alte NFS-Freigabe vollständig durch die neue. Wenn Sie möchten/können, können Sie Kunden während dieser Zeit nur Lesezugriff gewähren. 100 % Verfügbarkeit ist ein Traum, und es ist besser, Ihre Kunden für eine Stunde zu stoppen, als möglichen endlosen Beschwerden über verlorene/beschädigte Daten und Anwendungsabstürze hinterherzulaufen.