HowTo: VM in anderes Projekt transferieren
Einleitung
In der TelemaxX OpenCloud werden Ressourcen innerhalb von Projekten organisiert. Projekte dienen der logischen Trennung von Umgebungen, Berechtigungen, Netzwerken und Quotas. Eine bestehende VM ist daher immer fest an ihr aktuelles Projekt gebunden und kann nicht direkt per Klick in ein anderes Projekt verschoben werden.
Für die Migration einer VM in ein anderes Projekt müssen die zugrunde liegenden Ressourcen separat betrachtet und übertragen werden. Images können aus dem Quellprojekt exportiert und anschließend im Zielprojekt wieder importiert werden. Volumes lassen sich über die Funktion „Create Transfer“ an ein anderes Projekt übergeben und dort übernehmen. Zusätzlich besteht die Möglichkeit, Images oder Datenträger über die CLI zu exportieren und im Zielprojekt wieder bereitzustellen.
Führen Sie keine Arbeiten an Volumes, Snapshots oder Images ohne vorherige Datensicherung durch. Vor der Migration oder Konvertierung einer VM sollten alle relevanten Daten gesichert und die Wiederherstellung geprüft werden.
Änderungen an Root Volumes, Volume Snapshots oder exportierten Images können bei Fehlern zu Datenverlust oder nicht mehr startfähigen Instanzen führen.
Unterschied zwischen Root Volumes und Non-Root Volumes
Bei der Migration einer VM muss zwischen dem Root Volume der VM und zusätzlich angebundenen Volumes unterschieden werden.
Das Root Volume enthält das Betriebssystem der VM und ist direkt mit der Instanz verknüpft. Es kann daher nicht wie ein normales Daten-Volume direkt in ein Image konvertiert und exportiert werden. Für den Export eines Root Volumes ist ein Zwischenschritt erforderlich. In der Regel wird zunächst ein Snapshot des Root Volumes erstellt. Aus diesem Snapshot wird anschließend ein temporäres Volume erzeugt, welches danach als Image heruntergeladen werden kann.
Non-Root Volumes, also zusätzlich an eine VM angebundene Daten-Volumes, können einfacher verarbeitet werden. Sobald ein solches Volume von der VM getrennt wurde und den Status available hat, kann es direkt über die OpenStack CLI in ein Image konvertiert werden.
Für beide Varianten gilt, dass die VM bzw. das Volume vor der Konvertierung in einem konsistenten Zustand sein sollte. Die VM muss für die Arbeiten immer heruntergefahren sein.
Das Volume, dass zu einem Image konvertiert werden soll, muss immer den Status "Available" haben. Ansonsten ist eine Umwandlung nicht möglich.
Migrationswege
via Openstack CLI
Die CLI Schritte erfordern die Nutzung der Application Credentials
Root-Volume zum Image konvertieren
Bei der Konvertierung eines Root-Volumes muss ein Zwischenschritt gegangen werden und ein Image via Volume -> Snapshot -> Volume -> Image erstellt werden.
openstack volume list
openstack volume snapshot create --volume <VOLUME-ID> <SNAPSHOT-NAME> --force
openstack volume create --snapshot <SNAPSHOT-ID> <VOLUME-NAME>
openstack image create --volume <VOLUME-ID> <IMAGE-NAME>Export eines Image
# export
openstack image save --file <IMAGE_NAME>.qcow2 <IMAGE_ID>
# import im anderen Projekt
openstack image create \
--file ubuntu-22.04-export.qcow2 \
--disk-format qcow2 \
--container-format bare \
ubuntu-22.04-importedVolume Transfer
Aktive Volumes "status = in-use" müssen vor dem Transfer getrennt werden. Root-Volumes von VMs können nicht via "Create Transfer" verschoben werden. Hier muss das Volume als Image exportiert werden oder ein neues Volume via Snapshot -> Volume erstellt werden.
# Alle Volumes auflisten
openstack volume list
# Falls das Volume noch an einer VM hängt: zuerst trennen
openstack server remove volume <SERVER_ID> <VOLUME_ID>
openstack volume transfer request create <VOLUME_ID>
# Application Credential des Zielprojektsladen
source zielprojekt-openrc.sh
openstack volume transfer request accept <TRANSFER_ID> <AUTH-KEY>
# Prüfen, ob das Volume im Zielprojekt vorhanden ist
openstack volume listAnschließend kann aus dem Volume eine Instanz gestartet werden.
via Horizon
Ein Image export kann nur vial Openstack CLI erfolgen
Volume transfer starten
Volumes -> Volumes -> VOLUME_NAME_OR_ID -> Actions (Dropdown) -> Create Transfer
Namen für den Transfer vergeben
Transfer Namen vergeben und "Create Volume Transfer" drücken
Transfer ID und Auth Key notieren
Projekt wechseln und ein "Accept Transfer" starten
Die notieren Transfer ID und Auth Key einfügen und "Accept Volume Transfer" klicken
Aus dem transferiertem Volume kann direkt ein "Launch as Instance" gestartet werden.
Einschränkungen
Es können keine Netzwerk, Security Groups oder Floating IPs mit verschoben werden. Diese erfordern eine Neuerstellung im anderen Projekt.
Updated about 11 hours ago
