Konvertieren des Amazon EC2 ext4 EBS-Volumes in das XFS-Dateisystem

8

Ich muss mein Amazon EC2 ext4-Dateisystem in ein XFS-Dateisystem konvertieren, damit ich konsistente Snapshots erstellen und an S3 senden kann. Ich verwende ein benutzerdefiniertes kleines Image von Ubuntu Server 10.10 mit i686-Architektur in den USA. Das Problem ist, dass ich nur ein EBS-Laufwerk für alle Dateien verwende und jetzt Kopfschmerzen bekomme, weil ich das Laufwerk nicht wirklich aushängen, formatieren oder wirklich etwas tun kann, wenn ich von ssh aus bei der Instanz angemeldet bin. Ich vermute, ich muss das EBS-Volume irgendwie in 2 aufteilen und / var / www und / var / lib auf das zweite EBS-Volume verschieben und dieses stattdessen in XFS konvertieren. Ich verwende apache2, mysql, ispconfig, bind, postfix, kurier, pureftp ( http://www.howtoforge.com/perfect-server-ubuntu-10.10-maverick-meerkat-ispconfig-3 )

Vielen Dank.

jaz
quelle

Antworten:

9

Sie können entweder Ihr Root-Volume in XFS konvertieren oder ein zweites Volume erstellen. Persönlich würde ich Letzteres bevorzugen, da es mehr Flexibilität bietet.

Option 1: Konvertieren Sie das Root-Volume in XFS

  1. Stoppen Sie Ihre Instanz (nicht beenden) (nennen wir es Instanz A)
  2. Starten Sie eine neue Instanz (nennen wir sie Instanz B)
  3. Trennen Sie das Root-Volume von Instanz A und hängen Sie es an Instanz B an
  4. Erstellen Sie ein zweites EBS-Volume und hängen Sie es an Instanz B an
  5. Formatieren Sie das neue EBS-Volume als XFS (installieren, xfsprogsfalls noch nicht geschehen)
  6. Kopieren Sie alle Daten vom ersten Volume auf das neue (z. B. mit rsync -aHAXxSP /source /target).
  7. Trennen Sie das neue Volume von Instanz B und hängen Sie es als Root-Volume von Instanz A an
  8. Instanz A starten
  9. Beenden Sie Instanz B (das ursprüngliche Root-Volume sollte bestehen bleiben, behalten Sie es bei, bis die Dinge nach Ihren Wünschen funktionieren).

Der Grund für das Anhängen des Root-Volumes an eine andere Instanz besteht darin, eine Konsistenz zu erreichen, die mit dem verwendeten Volume schwierig wäre.

Option 2: Verschieben Sie Daten auf ein zweites EBS-Volume

  1. Erstellen Sie ein zweites EBS-Volume und hängen Sie es an Ihre Instanz an. Formatieren Sie es als XFS und mounten Sie es
  2. Identifizieren Sie, welche Verzeichnisse Sie auf das neue Volume verschieben möchten (einige zu berücksichtigen sind: / var / log, / var / lib / mysql, / var / www, / var / spool / mail, / var / vmail)
  3. Beenden Sie so viele Dienste wie möglich, um Schreibsperren zu entfernen
  4. Verwenden Sie lsof | grep /path/to/dirdiese Option , um nach verbleibenden Schreibsperren zu suchen
  5. Verschieben Sie das Verzeichnis auf das neue EBS-Volume
  6. Mount Binden Sie das neue Verzeichnis an seinen alten Speicherort (dh mount -o bind /mnt/path/to/dir /orig/path/to/dir)
  7. Wiederholen Sie dies für jedes Verzeichnis
  8. Starten Sie Ihre Dienste, um sicherzustellen, dass alles funktioniert
  9. Bearbeiten Sie Ihre /etc/fstabDatei, um die Einhängepunkte dauerhaft zu machen. z.B:/mnt/path/to/dir /orig/path/to/dir bind defaults,noatime,bind 0 0

Starten Sie neu, um sicherzustellen, dass alles weiterhin funktioniert und ordnungsgemäß funktioniert. Möglicherweise möchten Sie auch in Betracht ziehen, Ihr Root-Volume etwas zu verkleinern, da es hoffentlich nicht stark wachsen (oder sich ändern) sollte, wenn alle Daten daraus entfernt werden.

(Als Erwähnung kann es möglich sein, ein ext4-Dateisystem mit einzufrieren fsfreeze, das in enthalten ist util-linux-ng).

cyberx86
quelle
Vielen Dank, ich werde mich für die erste Option entscheiden, da ich nicht sicher bin, ob ich mit der zweiten Methode aus dem Backup wiederherstellen kann, falls etwas schief gehen sollte.
jaz
Sie können jedes EBS-Volume unabhängig wiederherstellen. Sie können Snapshots beider Volumes separat aufbewahren und das jeweils benötigte wiederherstellen. Die EBS-Snapshots von Amazon sind differenziell und komprimiert, sodass der insgesamt verwendete Speicherplatz bei den Daten auf zwei Volumes nicht wesentlich anders sein sollte als auf einem.
Cyberx86
1
Für Option 1: Neuere Ubuntu-Versionen können nicht gestartet werden, da die Bezeichnung "cloudimg-rootfs" für XFS zu lang ist. Sie müssen dies beheben, indem Sie das verwendete Etikett kürzen. Diese Schritte über den folgenden Link: Beschriften Sie das Gerät / dev / xvdf mit '/'. Führen Sie einfach Folgendes aus: xfs_admin -L \ / / dev / xvdf Mount / dev / xvdf im Verzeichnis / xfs. Bearbeiten Sie die dem neuen XFS-Volume zugeordnete fstab-Datei (/ xfs / etc / fstab) und stellen Sie sicher, dass / dem mit / gekennzeichneten Volume zugeordnet ist und das xfs-Dateisystem für den Root-Mountpoint konfiguriert ist. Von hier aus: jsianes.blogspot.com/2014/06/…
JaredBroad