Auf dieser Seite wird beschrieben, wie Sie Bucket von einem Speicherort an einen anderen verschieben. Informationen zum Verschieben von Buckets finden Sie unter Verschieben von Buckets.
Hinweise
Führen Sie die folgenden Schritte aus, bevor Sie mit dem Verschieben des Ordners beginnen:
Prüfen Sie die Kontingente und Limits, um sicherzustellen, dass der neue Speicherort ausreichend Kontingente für die Daten des Buckets hat.
Ermitteln Sie den Bucket-Verschiebungstyp, um festzustellen, ob eine Schreibausfallzeit erforderlich ist.
Wenn Sie Inventarberichte verwenden, speichern Sie Ihre Konfigurationen.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die Rolle „Storage-Administrator“ (roles/storage.admin
) für das Projekt zuzuweisen, um die Berechtigungen zum Verschieben von Buckets von einem Speicherort an einen anderen zu erhalten.
Diese Rolle bietet eine Reihe von Berechtigungen, mit denen Sie Buckets von einem Speicherort an einen anderen verschieben können. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Der authentifizierte Nutzer muss die folgenden IAM-Berechtigungen für den Bucket haben, um diese Methode zu verwenden:
storage.buckets.relocate
storage.bucketOperations.get
Sie benötigen diese Berechtigung, um den Status des Vorgangs zum Verschieben des Buckets aufzurufen.storage.bucketOperations.list
Sie benötigen diese Berechtigung, um die Liste der Bucket-Verschiebungsvorgänge aufzurufen.storage.bucketOperations.cancel
Sie benötigen diese Berechtigung, um den Vorgang zum Verschieben des Buckets abzubrechen.
Der authentifizierte Nutzer benötigt möglicherweise auch die folgenden Berechtigungen für den Bucket, um diese Methode zu verwenden:
storage.bucket.get
Sie benötigen diese Berechtigung, um die Metadaten eines Buckets während des Trockeneinsatzes und der inkrementellen Datenkopie des Bucket-Verschiebungsvorgangs aufzurufen.storage.objects.list
undstorage.objects.get
: Sie benötigen diese Berechtigungen, um die Liste der Objekte in einem Bucket aufzurufen, die Sie an einen anderen Speicherort verschieben möchten.
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten. Informationen dazu, welche Rollen mit welchen Berechtigungen verknüpft sind, finden Sie unter IAM-Rollen für Cloud Storage.
Eine Anleitung zum Zuweisen von Rollen für Projekte finden Sie unter Zugriff auf Projekte verwalten.
Buckets verschieben
In diesem Abschnitt wird beschrieben, wie Sie Cloud Storage-Buckets mithilfe der Bucket-Verschiebung von einem Speicherort an einen anderen verschieben. Wenn Sie einen Bucket verschieben, starten Sie den inkrementellen Kopiervorgang, überwachen ihn und starten dann den letzten Synchronisierungsschritt. Weitere Informationen zu diesen Schritten finden Sie unter Verfahren zum Verschieben von Bucket-Dateien.
Probelauf durchführen
Um potenzielle Probleme während der Bucket-Verschiebung zu minimieren, empfehlen wir einen Trockenlauf. Bei einem Testlauf wird der Prozess zum Verschieben von Bucketn simuliert, ohne dass Daten verschoben werden. So können Sie Probleme frühzeitig erkennen und beheben. Beim Trockenlauf werden die folgenden Inkompatibilitäten geprüft:
- Vom Kunden verwaltete Verschlüsselungsschlüssel (CMEK) oder Vom Kunden bereitgestellte Verschlüsselungsschlüssel (CSEK)
- Gesperrte Aufbewahrungsrichtlinien
- Objekte mit vorübergehenden Holds
- Mehrteilige Uploads
Mit einem Trockenlauf können zwar nicht alle möglichen Probleme erkannt werden, da einige Probleme aufgrund von Faktoren wie der Echtzeitressourcenverfügbarkeit erst während der Live-Migration auftreten können, das Risiko zeitaufwendiger Probleme während der tatsächlichen Umstellung wird jedoch verringert.
Befehlszeile
So simulieren Sie den Probelauf des Bucket-Verschiebens:
gcloud storage buckets relocate gs://BUCKET_NAME --location=LOCATION --dry-run
Wobei:
BUCKET_NAME
ist der Name des Buckets, den Sie verschieben möchten.LOCATION
ist der Zielspeicherort des Buckets.
Wenn Sie einen Probelauf starten, wird ein Vorgang mit langer Ausführungszeit gestartet. Sie erhalten eine Vorgangs-ID und eine Beschreibung des Vorgangs. Um den Abschluss des Trockenlaufs zu verfolgen, müssen Sie den Fortschritt im Blick behalten. Informationen zum Überwachen des Fortschritts des Probelaufs finden Sie unter Details zu einem lang andauernden Vorgang abrufen.
Wenn bei der Simulation Probleme auftreten, beheben Sie diese, bevor Sie mit dem Schritt Inkrementelle Datenkopie starten fortfahren.
REST APIs
JSON API
Die gcloud CLI installieren und initialisieren, um ein Zugriffstoken für den Header
Authorization
zu generieren.Erstellen Sie eine JSON-Datei mit den Einstellungen für den Bucket, die die Parameter
destinationLocation
undvalidateOnly
enthalten muss. Eine vollständige Liste der Einstellungen finden Sie in der Dokumentation zuBuckets: relocate
. Folgende Einstellungen können verwendet werden:{ "destinationLocation": "DESTINATION_LOCATION", "destinationCustomPlacementConfig": { "dataLocations": [ LOCATIONS, ... ] }, "validateOnly": "true" }
Wobei:
DESTINATION_LOCATION
ist der Zielstandort des Buckets.LOCATIONS
ist eine Liste von Standortcodes, die für die konfigurierbare Dual-Region verwendet werden sollen.validateOnly
ist auftrue
gesetzt, um einen Probelauf durchzuführen.
Verwenden Sie
cURL
zum Aufrufen der JSON API:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/bucket=BUCKET_NAME/relocate"
Wobei:
JSON_FILE_NAME
ist der Name der von Ihnen erstellten JSON-Datei.BUCKET_NAME
ist der Name des Buckets, den Sie verschieben möchten.
Inkrementelle Datenkopie initiieren
Befehlszeile
Starten Sie den Vorgang zum Verschieben des Buckets:
gcloud storage buckets relocate gs://BUCKET_NAME --location=LOCATION
Wobei:
BUCKET_NAME
ist der Name des Buckets, den Sie verschieben möchten.LOCATION
ist der Zielspeicherort des Buckets.
REST APIs
JSON API
Die gcloud CLI installieren und initialisieren, um ein Zugriffstoken für den Header
Authorization
zu generieren.Erstellen Sie eine JSON-Datei mit den Einstellungen für den Bucket. Eine vollständige Liste der Einstellungen finden Sie in der Dokumentation zu
Buckets: relocate
. Folgende Einstellungen können verwendet werden:{ "destinationLocation": "DESTINATION_LOCATION", "destinationCustomPlacementConfig": { "dataLocations": [ LOCATIONS, ... ] }, "validateOnly": "false" }
Wobei:
DESTINATION_LOCATION
ist der Zielstandort des Buckets.LOCATIONS
ist eine Liste von Standortcodes, die für die konfigurierbare Dual-Region verwendet werden sollen.validateOnly
ist auffalse
festgelegt, um den Schritt zum inkrementellen Kopieren von Daten bei der Bucket-Verschiebung zu starten.
Verwenden Sie
cURL
zum Aufrufen der JSON API:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/bucket=BUCKET_NAME/relocate"
Wobei:
JSON_FILE_NAME
ist der Name der von Ihnen erstellten JSON-Datei.BUCKET_NAME
ist der Name des Buckets, den Sie verschieben möchten.
Inkrementelle Datenkopie überwachen
Die Verschiebung des Buckets ist ein lang andauernder Vorgang, der überwacht werden muss. Sie können regelmäßig in der Liste der lang andauernden Vorgänge den Status des Schritts zur inkrementellen Datenkopie prüfen. Informationen zum Abrufen von Details zu Vorgängen mit langer Ausführungszeit, zum Auflisten oder Abbrechen solcher Vorgänge finden Sie unter Vorgänge mit langer Ausführungszeit in Cloud Storage verwenden.
Das folgende Beispiel zeigt die Ausgabe, die durch einen inkrementellen Kopiervorgang generiert wurde:
done: false kind: storage#operation metadata: '@type': type.googleapis.com/google.storage.control.v2.RelocateBucketMetadata commonMetadata: createTime: '2024-10-21T04:26:59.666Z endTime: '2024-12-29T23:39:53.340Z' progressPercent: 99 requestedCancellation: false type: relocate-bucket updateTime: '2024-10-21T04:27:03.2892' destinationLocation: US-CENTRAL1 finalizationState: 'READY' progress: byteProgressPercent: 100 discoveredBytes: 200 remainingBytes: 0 discoveredObjectCount: 10 remainingObjectCount: 8 objectProgressPercent: 100 discoveredSyncCount: 8 remainingSyncCount: 0 syncProgressPercent: 100 relocationState: SYNCING sourceLocation: US validateOnly: false writeDowntimeExpireTime: '2024-12-30T10:34:01.786Z' name: projects//buckets/my-bucket1/operations/Bar7-1b0khdew@nhenUQRTF_R-Kk4dQ5V1f8fzezkFcPh3XMvlTqJ6xhnqJ1h_QXFIeAirrEqkjgu4zPKSRD6WSSG5UGXil6w response: '@type': type.googleapis.com/google.storage.control.v2.RelocateBucketResponse selfLink: https://storage.googleusercontent.com/storage/v1_ds/b/my-bucket1/operations/Bar7-1b0khdew@nhenUQRTF_R-Kk4dQ5V1f8fzezkFcPh3XMvlTqJ6xhnqJ1h_QXFIeAirrEqkjgu4zPKSRD6WSSG5UGXil6w
In der folgenden Tabelle finden Sie Informationen zu den wichtigsten Feldern in der Ausgabe, die durch den Inkrementellen Kopiervorgang generiert wird:
Feldname | Beschreibung | Mögliche Werte |
---|---|---|
done |
Gibt an, dass der Vorgang zum Verschieben des Ordners abgeschlossen ist. | true , false |
kind |
Gibt an, dass diese Ressource einen Speichervorgang darstellt. | |
metadata |
Bietet Informationen zum Vorgang. | |
metadata.@type |
Gibt den Vorgangstyp als Bucket-Verschiebung an. | |
metadata.commonMetadata |
Metadaten, die für alle Vorgänge gelten. | |
metadata.commonMetadata.createTime |
Die Zeit, zu der der Vorgang mit langer Ausführungszeit erstellt wurde. | |
metadata.commonMetadata.endTime |
Der Zeitpunkt, zu dem der langlaufende Vorgang beendet wurde. | |
metadata.commonMetadata.progressPercent |
Der geschätzte Fortschritt des Vorgangs mit langer Ausführungszeit in Prozent. | Zwischen 0 und 100 %. Der Wert -1 bedeutet, dass der Fortschritt unbekannt oder nicht zutreffend ist. |
metadata.commonMetadata.requestedCancellation |
Gibt an, ob der Nutzer den Abbruch des lang andauernden Vorgangs angefordert hat. | true , false |
metadata.commonMetadata.type |
Gibt den Typ des Vorgangs mit langer Ausführungszeit an. | |
metadata.commonMetadata.updateTime |
Die Uhrzeit, zu der der langlaufende Vorgang zuletzt aktualisiert wurde. | |
metadata.destinationLocation |
Der Zielspeicherort des Buckets. | |
metadata.finalizationState |
Gibt an, ob der letzte Synchronisierungsschritt gestartet werden kann. |
|
metadata.progress |
Details zum Fortschritt des Verschiebungsvorgangs. | |
metadata.progress.byteProgressPercent |
Fortschritt der kopierten Bytes in Prozent. | Zwischen 0 und 100 %. Der Wert -1 bedeutet, dass der Fortschritt unbekannt oder nicht zutreffend ist. |
metadata.progress.discoveredBytes |
Anzahl der im Quell-Bucket gefundenen Bytes. | |
metadata.progress.discoveredObjectCount |
Anzahl der im Quell-Bucket erkannten Objekte. | |
metadata.progress.discoveredSyncCount |
Anzahl der Objektmetadatenaktualisierungen, die im Quell-Bucket gefunden wurden. | |
metadata.progress.objectProgressPercent |
Prozentsatz der kopierten Objekte. | Zwischen 0 und 100 %. Der Wert -1 bedeutet, dass der Fortschritt unbekannt oder nicht zutreffend ist. |
metadata.progress.remainingBytes |
Anzahl der verbleibenden Byte, die aus dem Quell-Bucket in den Ziel-Bucket kopiert werden müssen. | |
metadata.progress.remainingObjectCount |
Anzahl der verbleibenden Objekte, die aus dem Quell-Bucket in den Ziel-Bucket kopiert werden müssen. | |
metadata.progress.remainingSyncCount |
Anzahl der verbleibenden Objektmetadatenaktualisierungen, die synchronisiert werden müssen. | |
metadata.progress.syncProgressPercent |
Prozentsatz des Fortschritts bei der Synchronisierung von Objektmetadatenaktualisierungen. | Zwischen 0 und 100 %. Der Wert -1 bedeutet, dass der Fortschritt unbekannt oder nicht zutreffend ist. |
metadata.relocationState |
Gesamtstatus der Bucket-Verschiebung |
|
metadata.sourceLocation |
Der Quellspeicherort des Buckets. | |
metadata.validateOnly |
Gibt an, ob ein Probelauf der Bucket-Verschiebung gestartet wurde. | true , false |
metadata.writeDowntimeExpireTime |
Die Zeit, zu der die Schreibausfallzeit abläuft. | |
name |
Die eindeutige Kennung für diesen Verschiebungsvorgang. Format: projects/_/buckets/bucket-name/operations/operation-id |
|
response |
Die Antwort des Vorgangs. | |
response.@type |
Der Antworttyp. | |
selfLink |
Ein Link zu diesem Vorgang. |
Aufgrund der Einschränkungen können bei der Interaktion mit anderen Cloud Storage-Funktionen Probleme auftreten. Weitere Informationen zu den Einschränkungen finden Sie unter Einschränkungen.
Letzten Synchronisierungsschritt starten
Während des letzten Synchronisierungsschritts können Sie keine Schreibvorgänge auf dem Bucket ausführen. Wir empfehlen, den letzten Synchronisierungsschritt zu einer Zeit zu planen, zu der die Unterbrechung Ihrer Anwendungen minimiert wird.
Bevor Sie fortfahren, prüfen Sie, ob der Bucket vollständig vorbereitet ist. Sehen Sie dazu in der Ausgabe des Schritts Prozess zum Kopieren inkrementeller Daten überwachen nach, ob der Wert finalizationState
„0“ ist. Der Wert für finalizationState
muss READY
sein, damit mit dem letzten synchronen Schritt fortgefahren werden kann.
Wenn Sie den letzten Synchronisierungsschritt vorzeitig starten, gibt der Befehl die Fehlermeldung The relocate bucket operation is not ready to advance to finalization running state
zurück, der Umstellungsvorgang wird jedoch fortgesetzt.
Wir empfehlen, zu warten, bis der Wert für progressPercent
99
ist, bevor Sie mit dem letzten Synchronisierungsschritt fortfahren.
Befehlszeile
Starten Sie den letzten Synchronisierungsschritt des Vorgangs „Bucket-Verschiebung“, sobald der Wert finalizationState
READY
ist:
gcloud storage buckets relocate --finalize --operation=projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID
Wobei:
BUCKET_NAME
ist der Name des Buckets, den Sie verschieben möchten.OPERATION_ID
ist die ID des lang andauernden Vorgangs, die in der Antwort der von Ihnen aufgerufenen Methoden zurückgegeben wird. Beispielsweise wird beim Aufrufen vongcloud storage operations list
die folgende Antwort zurückgegeben und die ID des Vorgangs mit langer Ausführungszeit lautetAbCJYd8jKT1n-Ciw1LCNXIcubwvij_TdqO-ZFjuF2YntK0r74
.
`name: projects/_/buckets/my-bucket/operations/AbCJYd8jKT1n-Ciw1LCNXIcubwvij_TdqO-ZFjuF2YntK0r74`
Mit dem Flag ttl
können Sie den Umstellungsprozess besser steuern. Beispiel:
gcloud storage buckets relocate --finalize --ttl TTL_DURATION --operation=projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID
Wobei:
TTL_DURATION
ist die Gültigkeitsdauer (TTL) für die Phase der Schreibausfallzeit während eines Umzugs. Sie wird als String ausgedrückt, z. B. 12h
für 12 Stunden. Mit TTL_DURATION
wird die maximal zulässige Dauer der Schreibausfallzeit bestimmt. Wenn die Schreibausfallzeit dieses Limit überschreitet, kehrt der Verschiebevorgang automatisch zum Schritt der inkrementellen Kopie zurück und Schreibvorgänge für den Bucket werden wieder aktiviert. Der Wert muss zwischen 6h
(6 Stunden) und 48h
(48 Stunden) liegen. Wenn keine Angabe erfolgt, beträgt der Standardwert 12h
(12 Stunden).
REST APIs
JSON API
Die gcloud CLI installieren und initialisieren, um ein Zugriffstoken für den Header
Authorization
zu generieren.Erstellen Sie eine JSON-Datei mit den Einstellungen für die Bucket-Verschiebung. Eine vollständige Liste der Einstellungen finden Sie in der Dokumentation zu
Buckets: advanceRelocateBucket
. Folgende Einstellungen können verwendet werden:{ "expireTime": "EXPIRE_TIME", "ttl": "TTL_DURATION" }
Wobei:
EXPIRE_TIME
ist der Zeitpunkt, zu dem die Schreibausfallzeit abläuft.TTL_DURATION
ist die Gültigkeitsdauer (TTL) für die Phase der Schreibausfallzeit während eines Umzugs. Sie wird als String ausgedrückt, z. B.12h
für 12 Stunden. MitTTL_DURATION
wird die maximal zulässige Dauer der Schreibausfallzeit bestimmt. Wenn die Schreibausfallzeit dieses Limit überschreitet, kehrt der Verschiebevorgang automatisch zum Schritt der inkrementellen Kopie zurück und Schreibvorgänge für den Bucket werden wieder aktiviert. Der Wert muss zwischen6h
(6 Stunden) und48h
(48 Stunden) liegen. Wenn keine Angabe erfolgt, beträgt der Standardwert12h
(12 Stunden).
Verwenden Sie
cURL
zum Aufrufen der JSON API:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/bucket/BUCKET_NAME/operations/OPERATION_ID/advanceRelocateBucket"
Wobei:
JSON_FILE_NAME
ist der Name der von Ihnen erstellten JSON-Datei.BUCKET_NAME
ist der Name des Buckets, den Sie verschieben möchten.OPERATION_ID
ist die ID des lang andauernden Vorgangs, die in der Antwort der von Ihnen aufgerufenen Methoden zurückgegeben wird. Beispielsweise wird beim Aufrufen vonOperations: list
die folgende Antwort zurückgegeben und die ID des Vorgangs mit langer Ausführungszeit lautetAbCJYd8jKT1n-Ciw1LCNXIcubwvij_TdqO-ZFjuF2YntK0r74
.
Validierung des Bucket-Verschiebungsprozesses
Prüfen Sie nach dem Starten einer Verschiebung, ob sie erfolgreich abgeschlossen wurde. In diesem Abschnitt erfahren Sie, wie Sie prüfen, ob die Datenübertragung erfolgreich war.
Sie können den Erfolg des Umzugs mit den folgenden Methoden prüfen:
Vorgänge mit langer Ausführungszeit abfragen: Das Verschieben von Buckets ist ein lang andauernder Vorgang. Sie können den Vorgang mit langer Ausführungszeit mit
operation id
abfragen, um den Fortschritt zu beobachten und den erfolgreichen Abschluss anhand des Statussuccess
zu bestätigen. Dazu wird der Status des Vorgangs regelmäßig abgefragt, bis er einen Endstatus erreicht. Informationen zum Überwachen von Vorgängen mit langer Ausführungszeit finden Sie unter Vorgänge mit langer Ausführungszeit in Cloud Storage verwenden.Cloud-Audit-Logs-Einträge analysieren: Cloud-Audit-Logs enthält detaillierte Aufzeichnungen zu Ereignissen und Vorgängen in Ihrer Google Cloud Umgebung. Sie können die mit der Verschiebung verknüpften Cloud-Audit-Log-Einträge analysieren, um den Erfolg zu bestätigen. Analysieren Sie die Protokolle auf Fehler, Warnungen oder unerwartetes Verhalten, das auf Probleme während der Übertragung hinweisen könnte. Informationen zum Aufrufen von Cloud-Audit-Logs finden Sie unter Audit-Logs aufrufen.
Anhand der folgenden Logeinträge können Sie feststellen, ob die Migration erfolgreich war oder fehlgeschlagen ist:
Erfolgreiche Verschiebung:
Relocate bucket succeeded. All existing objects are now in the new placement configuration.
Fehlgeschlagene Verschiebung:
Relocate bucket has failed. Bucket location remains unchanged.
Mit Pub/Sub-Benachrichtigungen können Sie auch Benachrichtigungen einrichten, die Sie informieren, wenn das jeweilige Erfolgs- oder Fehlerereignis in den Protokollen erscheint. Informationen zum Einrichten von Pub/Sub-Benachrichtigungen finden Sie unter Pub/Sub-Benachrichtigungen für Cloud Storage konfigurieren.
Aufgaben nach dem Verschieben des Buckets ausführen
Führen Sie nach dem Verschieben des Buckets die folgenden Schritte aus:
- Optional: Stellen Sie alle tagbasierten Zugriffssteuerungen für Ihren Bucket wieder her.
- Vorhandene Konfigurationen von Inventarberichten werden während des Umzugs nicht beibehalten und müssen manuell neu erstellt werden. Informationen zum Erstellen einer Inventarberichtskonfiguration finden Sie unter Inventarberichtskonfiguration erstellen.
- Aktualisieren Sie Ihre Infrastructure as Code-Konfigurationen wie Terraform und den Google Kubernetes Engine-Konfigurations-Connector, um den neuen Speicherort des Buckets anzugeben.
- Regionale Endpunkte sind an bestimmte Standorte gebunden. Sie müssen den Anwendungscode entsprechend anpassen.
Umgang mit fehlgeschlagenen Vorgängen zum Verschieben von Bucket
Berücksichtigen Sie die folgenden Faktoren, bevor Sie fehlgeschlagene Bucket-Verschiebungen bearbeiten:
Bei einem fehlgeschlagenen Bucket-Umzug können am Zielort veraltete Ressourcen wie temporäre Dateien oder unvollständige Datenkopien verbleiben. Sie müssen 7 bis 14 Tage warten, bevor Sie einen weiteren Bucket in dasselbe Ziel verschieben können. Sie können die Verschiebung eines Buckets an einen anderen Speicherort sofort initiieren.
Wenn der Zielspeicherort nicht der optimale Speicherort für Ihre Daten ist, können Sie die Verschiebung rückgängig machen. Sie können jedoch nicht sofort eine Verschiebung initiieren. Es ist eine Wartezeit von bis zu 14 Tagen erforderlich, bevor Sie den Umzugsprozess noch einmal starten können. Diese Einschränkung dient der Stabilität und verhindert Datenkonflikte.