Ein Volume verschieben
Ab Trident 26.06 kann ein Speicheradministrator ein iSCSI-Volume unterbrechungsfrei auf einen anderen ONTAP-Knoten und ein anderes Aggregat innerhalb desselben ONTAP Clusters verschieben, während die darauf basierende Arbeitslast weiterläuft. Die Verschiebung wird deklarativ mit einer TridentVolumeMove benutzerdefinierten Ressource oder dem tridentctl Äquivalent angefordert, und Trident koordiniert ONTAP und den Host, sodass die I/O niemals unterbrochen wird.
Anforderungen
Volume Move gilt nur für den ontap-san Treiber für iSCSI-Volumes. NVMe und NAS Protokolle werden nicht unterstützt.
Bevor Sie ein Volume verschieben, muss sichergestellt sein, dass die folgenden Voraussetzungen erfüllt sind:
-
Das Backend verwendet den
ontap-sanTreiber mit der ONTAP REST API. -
Der ONTAP Cluster verfügt über mindestens zwei Knoten.
-
Sie verfügen über einen der folgenden Berechtigungssätze:
-
ONTAP 9.19.1 oder höher, wenn die dedizierte benutzerdefinierte ONTAP Rolle verwendet wird.
-
Cluster-Administrator-Anmeldeinformationen in früheren ONTAP Releases.
-
So funktioniert es
Trident verschiebt das Volume (LUN) zwischen zwei Standorten innerhalb desselben ONTAP Clusters. Bevor die Daten verschoben werden, fügt Trident dem Ziel neben den bestehenden Pfaden neue iSCSI-Pfade hinzu, sodass das Multipath-Gerät des Hosts jederzeit erreichbar bleibt. Nachdem ONTAP die Verschiebung abgeschlossen hat, entfernt Trident die veralteten Quellpfade.
Trident steuert den Vorgang durch eine geordnete Reihe von Zuständen, die in der TridentVolumeMove Ressource sichtbar sind, sodass der Fortschritt des Vorgangs verfolgt werden kann.
Ein Volume verschieben
Das Volumen und die Standorte identifizieren
-
Den Namen des zu verschiebenden PV ermitteln. Der PV-Name ist auch der Name der Move-Ressource.
-
Im ONTAP Cluster den aktuellen (Quell-)Knoten und das Aggregat für dieses Volume notieren und den Zielknoten sowie das Ziel-Aggregat auswählen.
Starten Sie den Umzug
Beide Methoden können verwendet werden. Beide erstellen dieselbe `TridentVolumeMove`Ressource, deren Name der PV-Name ist.
tridentctl create volume-move \
--volume pvc-8a814d62-bd58-4253-b0d1-82f2885db671 \
--source-node ontap-node-01 \
--source-pool aggr1_node01 \
--target-node ontap-node-02 \
--target-pool aggr1_node02 \
-n trident
tvm ist ein Alias für volume-move. --delete-after-success 10m hinzufügen, damit die Ressource nach erfolgreichem Verschieben automatisch entfernt wird.
apiVersion: trident.netapp.io/v1
kind: TridentVolumeMove
metadata:
name: pvc-8a814d62-bd58-4253-b0d1-82f2885db671 # the PV to move
namespace: trident
spec:
sourceNode: ontap-node-01
sourcePool: aggr1_node01
targetNode: ontap-node-02
targetPool: aggr1_node02
# deleteAfterSuccess: 10m # optional
Ressource anwenden:
kubectl apply -f tridentvolumemove.yaml
sourceNode/targetNode-
ONTAP Knotennamen (nicht UUIDs).
sourcePool/targetPool-
ONTAP Aggregatnamen.
deleteAfterSuccess-
Optionale Dauer, wie
30soder10m. Auf0setzen, um die Ressource sofort zu löschen, oder weglassen, um die Ressource beizubehalten.
Die Verschiebung überwachen
Der Fortschritt kann anhand des tvm`Kurznamens oder `tridentvolumemove verfolgt werden:
kubectl get tridentvolumemove -n trident
Der aktuelle Status und der Fortschritt pro Knoten werden angezeigt, wenn die Ressource beschrieben wird:
kubectl describe tridentvolumemove <pv-name> -n trident
Das Volume kann während des Moving-Zustands mehrere gleichzeitige Anhänge haben, da ONTAP für die Verschiebung eines großen Volumes einige Zeit benötigen kann. Für eine reibungslose Verschiebung koordiniert Trident die Abläufe zwischen dem Trident Controller und dem Trident Node. Jeder Zustand führt die folgenden Schritte in der angegebenen Reihenfolge aus und endet entweder in Succeeded oder Failed.
| Status | Was geschieht |
|---|---|
|
Trident akzeptiert und validiert die Umzugsanfrage und sammelt die benötigten Informationen, bevor Änderungen am Speicher vorgenommen werden. |
|
Trident bereitet den Zielort vor. Es ordnet die Speicherschnittstellen des Zielknotens der LUN zu und aktualisiert Kubernetes, sodass ein zukünftiger Neustart des Knotens die Verbindung zum richtigen Standort wiederherstellt. |
|
Auf jedem Host, auf dem das Volume eingebunden ist, fügt Trident die neuen Speicherpfade vom Zielknoten neben den bestehenden Pfaden hinzu, sodass die E/A des Pods über beide Pfadsätze hinweg fortgesetzt wird. |
|
ONTAP kopiert und überträgt die Volumendaten auf das Zielaggregat. Dies ist die längste Phase, und ONTAP übernimmt sie vollständig, während Trident den Vorgang abfragt, bis er abgeschlossen ist. Neue Veröffentlichungen sind während dieses Status zulässig. |
|
Die Datenübertragung ist abgeschlossen. Trident aktualisiert Kubernetes, um die Quellpfade aus dem gewünschten Zustand zu entfernen, und hebt anschließend die Zuordnung der Speicherschnittstellen des Quellknotens von der LUN auf. |
|
Auf jedem Host entfernt Trident die veralteten Quellpfade. Dem Host verbleiben nur noch die Zielpfade, und das Multipath-Gerät verarbeitet weiterhin E/A ohne Unterbrechung. |
|
Das Volume ist vollständig verschoben und am Ziel online. Trident behält die |
|
Ein nicht behebbarer Fehler hat den Verschiebevorgang gestoppt oder dessen Start verhindert. Trident setzt den Volume-Status zurück, sodass der normale Betrieb fortgesetzt werden kann, und behält die Ressource mit einer Fehlermeldung. Die Meldung sollte überprüft, die Ursache behoben, die Ressource gelöscht und der Vorgang erneut versucht werden. |
Die `.status.attachments`Liste zeigt den Fortschritt jedes angeschlossenen Knotens in seinem `state`Feld:
| Anhangsstatus | Bedeutung |
|---|---|
|
Knoten als verbunden identifiziert; die Arbeit hat noch nicht begonnen. |
|
Neue Zielpfade werden neben den bestehenden Pfaden hinzugefügt. |
|
Der Datenverkehr wird jetzt über die neuen Pfade bereitgestellt. |
|
Veraltete Quellpfade vom Knoten entfernt. |
|
Der Knoten wurde während der Bewegung abgetrennt und von der weiteren Betrachtung ausgeschlossen, während Trident prüft, ob die Verbindung bereit ist, mit dem nächsten Schritt fortzufahren. |
|
Terminalfehler auf diesem Knoten. Die Meldung anzeigen. |
Die Umzugsressource bereinigen
Wenn deleteAfterSuccess festgelegt ist, entfernt Trident die Ressource automatisch. Andernfalls kann sie manuell gelöscht werden. Bevor eine weitere Verschiebung auf demselben Volume angefordert wird, ist sicherzustellen, dass für dieses Volume keine TridentVolumeMove Ressource im Succeeded- oder Failed-Status vorhanden ist.
|
|
Trident löscht fehlgeschlagene Verschiebungen niemals automatisch. Trident speichert eine |