Zum Inhalt springen

Daten von einem Block Storage migrieren

OpenStack-Volumes zwischen Providern mit Rsync migrieren

Abschnitt betitelt „OpenStack-Volumes zwischen Providern mit Rsync migrieren“

Migrieren Sie ein Volume von einem OpenStack-Anbieter zu einem anderen unter Verwendung von rsync, um die Datenkonsistenz zu gewährleisten und die Übertragungszeit zu minimieren.

  • Aktive Konten bei sowohl dem Quell- als auch dem Ziel-OpenStack-Anbieter.
  • OpenStack CLI-Tools auf Ihrem lokalen Rechner oder einem Management-Server installiert.
  • Rsync auf sowohl der Quell- als auch der Zielinstanz installiert.
  • SSH-Schlüssel-basierte Authentifizierung zwischen den Quell- und Zielinstanzen für sichere, passwortlose Übertragungen eingerichtet.
  • Eine ausreichend schnelle Netzwerkverbindung zwischen den Quell- und Ziel-OpenStack-Instanzen.

Stellen Sie auf der Quell- und Zielinstanz sicher, dass rsync installiert ist:

Terminal-Fenster
sudo apt-get install rsync

Falls noch nicht geschehen, richten Sie eine SSH-Schlüssel-basierte Authentifizierung zwischen den Quell- und Zielinstanzen ein.

Generieren Sie ein neues SSH-Schlüsselpaar auf der Zielinstanz. Loggen Sie sich per SSH auf der Zielinstanz ein und generieren Sie ein neues SSH-Schlüsselpaar, das nur für den rsync-Transfer verwendet wird:

Terminal-Fenster
ssh user@target-instance-ip
ssh-keygen -t rsa -b 4096 -C "rsync-transfer" -f ~/.ssh/rsync-key

Laden Sie den öffentlichen Schlüssel auf den lokalen Rechner herunter. Verwenden Sie von Ihrem lokalen Rechner aus den scp -Befehl, um den öffentlichen Schlüssel von der Zielinstanz herunterzuladen:

Terminal-Fenster
scp user@target-instance-ip:~/.ssh/rsync-key.pub.

Übertragen Sie den öffentlichen Schlüssel auf die Quellinstanz. Verwenden Sie von Ihrem lokalen Rechner aus den scp-Befehl, um den heruntergeladenen öffentlichen Schlüssel auf die Quellinstanz zu übertragen:

Terminal-Fenster
scp ~/path/to/downloaded/rsync-key.pub user@source-instance-ip:~

Hängen Sie den öffentlichen Schlüssel an die Datei authorized_keys an. Loggen Sie sich per SSH auf der Quellinstanz ein und hängen Sie dann den öffentlichen Schlüssel an die Datei ~/.ssh/authorized_keys an:

Terminal-Fenster
ssh user@source-instance-ip
cat ~/rsync-key.pub >> ~/.ssh/authorized_keys

In diesen Befehlen:

  • Ersetzen Sie user durch Ihren Benutzernamen auf den Quell- und Zielinstanzen.
  • Ersetzen Sie source-instance-ip und target-instance-ip durch die jeweiligen IP-Adressen der Quell- und Zielinstanzen.
  • Ersetzen Sie \~/path/to/downloaded/rsync-key.pub durch den Pfad zur öffentlichen Schlüsseldatei, die Sie auf die Zielinstanz heruntergeladen haben.

Nun sollte die Zielinstanz passwortlosen SSH-Zugriff auf die Quellinstanz haben, was einen nahtlosen rsync-Transfer zwischen beiden ermöglicht.

Stoppen Sie alle Dienste oder Anwendungen auf der Quellinstanz, die auf das Volume schreiben oder darauf zugreifen, um die Datenkonsistenz während der Migration zu gewährleisten:

Terminal-Fenster
sudo service <service-name> stop

Erstellen und hängen Sie auf der Zielinstanz ein neues Volume mit der gleichen oder einer größeren Größe als das Quell-Volume ein.

Wenn die Zielinstanz eine OpenStack-Instanz ist, können Sie diese Anweisungen befolgen:

Erstellen Sie ein neues Volume auf der Ziel-OpenStack-Instanz:

Terminal-Fenster
openstack volume create --availability-zone <zone> --size <size-in-GB> <volume-name>

Listen Sie die verfügbaren Volumes auf, um die ID des neuen Volumes zu finden:

Terminal-Fenster
openstack volume list

Hängen Sie das neue Volume an die Zielinstanz an:

Terminal-Fenster
openstack server add volume <instance-id> <volume-id>

Stellen Sie sicher, dass das Volume auch innerhalb der VM gemountet ist.

Führen Sie den rsync-Befehl aus, um die Daten vom Quell- zum Ziel-Volume zu synchronisieren:

Terminal-Fenster
rsync -avz -e user@source-instance-ip:/path/to/source/volume/ /path/to/target/volume/

Sobald rsync abgeschlossen ist, überprüfen Sie, ob die Daten auf dem Ziel-Volume mit der Quelle übereinstimmen.

Stellen Sie nach erfolgreicher Übertragung sicher, dass die in Schritt 1.2.2 erstellten temporären SSH-Schlüssel entfernt werden (falls sie nicht mehr benötigt werden).

Starten Sie alle Dienste neu, die auf der Quellinstanz gestoppt wurden, und starten Sie die erforderlichen Dienste auf der Zielinstanz, um das migrierte Volume zu verwenden.

Terminal-Fenster
sudo service <service-name> start