Daten in oder aus Cloud Storage übertragen

Google Cloud Managed Lustre kann Daten aus Cloud Storage importieren und Daten in Cloud Storage exportieren. Datenübertragungen sind inkrementell. Es werden nur Dateien kopiert, die noch nicht im Ziel vorhanden sind oder die seit der Übertragung geändert wurden.

Cloud Storage-Buckets mit aktiviertem hierarchischem Namespace bieten im Vergleich zu Standard- Buckets schnellere Übertragungsgeschwindigkeiten zu und von Managed Lustre.

Leistung

Übertragungen zwischen Managed Lustre und Cloud Storage können folgende Geschwindigkeiten erreichen:

  • Bei Dateien über 32 MB bis zu 100 Gbit/s. Die Übertragungsgeschwindigkeit ist durch den maximalen Durchsatz einer Instanz begrenzt (Instanzkapazität multipliziert mit der Leistungsstufe).

Überlegungen zur ausgehenden Bandbreite von Cloud Storage

Cloud Storage bietet eine Standardbandbreite für ausgehenden Traffic von bis zu 200 Gbit/s pro Region und Projekt. Wenn Sie mehrere Managed Lustre-Instanzen im selben Projekt und in derselben Region haben, können Sie eine Erhöhung des Limits für die ausgehende Bandbreite beantragen. Weitere Informationen finden Sie unter den Bandbreitenkontingenten für Cloud Storage.

Erforderliche Berechtigungen

Berechtigungen zum Starten der Übertragung

Das Nutzer- oder Dienstkonto, das zum Starten der Übertragung verwendet wird, benötigt die folgenden Berechtigungen:

  • lustre.instances.exportData für die Übertragung von Managed Lustre zu Cloud Storage.
  • lustre.instances.importData für die Übertragung von Cloud Storage.

Beide Berechtigungen werden mit der Rolle roles/lustre.admin gewährt. Sie können eine benutzerdefinierte Rolle erstellen, um Berechtigungen unabhängig zu gewähren.

Berechtigungen für den Dienst-Agent von Managed Lustre

Managed Lustre verwendet einen Dienst-Agent, um in Ihrem Namen auf Cloud Storage-Buckets zuzugreifen. Für die Übertragung müssen Sie dem Dienst-Agent Zugriff auf den Ziel-Bucket gewähren.

Wenn Sie die Dienst-Agent-Identität Ihres Projekts nicht kennen, lesen Sie Dienst-Agent-Identität erstellen oder abrufen.

Berechtigungen erteilen

Der Dienst-Agent von Managed Lustre benötigt eine der folgenden Cloud Storage-Rollen:

  • Für die Übertragung von Daten zu und von Cloud Storage: roles/storage.objectUser für den Cloud Storage-Bucket.
  • Für die Übertragung nur von Cloud Storage: roles/storage.objectViewer für den Cloud Storage-Bucket.

So weisen Sie eine dieser Rollen zu:

Import und Export

Führen Sie den folgenden gcloud-Befehl aus:

gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
  --member=serviceAccount:SERVICE_AGENT_IDENTITY \
  --role=roles/storage.objectUser

Nur importieren

Führen Sie den folgenden gcloud-Befehl aus:

gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
  --member=serviceAccount:SERVICE_AGENT_IDENTITY \
  --role=roles/storage.objectViewer

Ersetzen Sie Folgendes:

  • BUCKET_NAME: Der Name Ihres Cloud Storage-Bucket.
  • SERVICE_AGENT_IDENTITY: Die Dienst-Agent-Identität von Managed Lustre (service-<var>PROJECT_NUMBER</var>@gcp-sa-lustre.iam.gserviceaccount.com).

Daten in Managed Lustre importieren

Sie können Daten aus einem Cloud Storage-Bucket importieren. Der Bucket kann sich im selben oder in einem anderen Projekt befinden. Der Bucket kann sich in einer anderen Zone oder Region als Ihre Managed Lustre-Instanz befinden. Übertragungen zwischen Regionen
sind jedoch möglicherweise langsamer als Übertragungen innerhalb einer Region.

gcloud

gcloud lustre instances import-data INSTANCE_ID \
  --location=LOCATION \
  --gcs-path-uri=gs://BUCKET_NAME/ \
  --lustre-path=PS_PATH

Wobei:

  • INSTANCE_ID ist der Name Ihrer Managed Lustre-Instanz.
  • --location ist die Zone Ihrer Managed Lustre-Instanz. Beispiel: us-central1-a.
  • --gcs-path-uri gibt den URI zu einem Cloud Storage-Bucket oder einen Pfad innerhalb eines Buckets im Format gs://<bucket_name>/<optional_path_inside_bucket>/ an. Wenn ein Pfad innerhalb des Buckets angegeben wird, muss er mit einem Schrägstrich (/) enden.
  • --lustre-path gibt den Pfad des Stammverzeichnisses zum Managed Lustre-Dateisystem an. Muss mit / beginnen. Der Standardwert ist /. Wenn Sie einen anderen Wert als den Standardwert angeben, muss das Verzeichnis bereits im Dateisystem vorhanden sein.

Folgende Parameter sind optional:

  • Mit --request-id können Sie dieser Anfrage eine eindeutige ID zuweisen. Wenn Sie diese Anfrage mit derselben Anfrage-ID wiederholen, ignoriert der Server die Anfrage, wenn sie bereits abgeschlossen wurde. Muss eine gültige UUID sein, die nicht nur aus Nullen besteht.
  • --async gibt sofort eine Antwort zurück, ohne auf den Abschluss des Vorgangs zu warten.

Weitere Informationen finden Sie in der Cloud SDK-Dokumentation.

REST

POST https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:importData
Authorization: Bearer [YOUR_ACCESS_TOKEN]

{
  "gcsPath" : {
    "uri" : "gs://BUCKET_NAME/"
  },
  "lustrePath" : {
    "path" : "/PATH"
  }
}

Wobei:

  • PROJECT_ID ist Ihr Google Cloud Projektname.
  • LOCATION ist die Zone Ihrer Managed Lustre Instanz. Beispiel: us-central1-a.
  • INSTANCE_ID ist der Name Ihrer Managed Lustre-Instanz.
  • gcsPath enthält einen uri-Schlüssel, dessen Wert den URI zu einem Cloud Storage-Bucket oder einen Pfad innerhalb eines Buckets im Format gs://<bucket_name>/<optional_path_inside_bucket>/ angibt. Wenn ein Pfad innerhalb des Buckets angegeben wird, muss er mit einem Schrägstrich (/) enden.
  • lustrePath enthält einen path-Schlüssel, dessen Wert den Pfad des Stammverzeichnisses zum Managed Lustre-Dateisystem angibt. Muss mit / beginnen. Der Standardwert ist /. Wenn Sie einen anderen Wert als den Standardwert angeben, muss das Verzeichnis bereits im Dateisystem vorhanden sein.

Wenn Sie anstelle des von Google verwalteten Dienst-Agents Ihr eigenes Dienstkonto verwenden möchten, unterstützt die Anfrage ein serviceAccount-Feld im JSON-Objekt:

"serviceAccount" : "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID"

Ein Beispiel für einen curl-Befehl sieht so aus:

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:importData \
  -d '{"gcsPath": {"uri":"gs://BUCKET_NAME/"}, "lustrePath": {"path":"/"}}'

Dateiattribute

Wenn Sie Daten aus einem Cloud Storage-Bucket in eine Managed Lustre-Instanz importieren, werden die Dateiattribute in der Managed Lustre-Instanz auf eine von zwei Arten festgelegt:

  • Wenn das Cloud Storage-Objekt benutzerdefinierte Metadaten hat, wie beim Exportieren von Daten beschrieben, gilt Folgendes:
    • Die UID, GID, der Modus und mtime der Datei werden anhand der benutzerdefinierten Metadaten des Objekts festgelegt.
    • atime der Datei wird auf denselben Wert wie mtime festgelegt.
  • Wenn das Cloud Storage-Objekt keine benutzerdefinierten Metadaten hat, gilt Folgendes:
    • Die UID und GID der Datei werden auf 0 (root) festgelegt.
    • Der Modus der Datei wird auf rwxr-xr-x (755) festgelegt.
    • atime und mtime der Datei werden auf die Erstellungszeit des Cloud Storage-Objekts festgelegt.

In beiden Fällen gilt:

  • ctime für eine Datei wird auf die Zeit festgelegt, zu der die Datei in die Instanz geschrieben wurde.
  • atime, ctime und mtime für ein Verzeichnis werden auf die Zeit festgelegt, zu der das Verzeichnis in der Instanz erstellt wurde.

Daten exportieren

Sie können Daten aus Ihrer Managed Lustre-Instanz in einen Cloud Storage-Bucket im selben oder in einem anderen Projekt exportieren. Der Bucket kann sich in einer anderen Zone oder Region als Ihre Managed Lustre-Instanz befinden. Übertragungen zwischen Regionen sind jedoch möglicherweise langsamer als Übertragungen innerhalb einer Region.

gcloud

gcloud lustre instances export-data \
  INSTANCE_ID \
  --location=LOCATION \
  --gcs-path-uri="gs://BUCKET_NAME/" \
  --lustre-path="/"

Wobei:

  • INSTANCE_ID ist der Name Ihrer Managed Lustre-Instanz.
  • --location ist die Zone Ihrer Managed Lustre-Instanz. Beispiel: us-central1-a.
  • --gcs-path-uri gibt den URI zu einem Cloud Storage-Bucket oder einen Pfad innerhalb eines Buckets im Format gs://<bucket_name>/<optional_path_inside_bucket>/ an. Wenn ein Pfad innerhalb des Buckets angegeben wird, muss er mit einem Schrägstrich (/) enden.
  • --lustre-path gibt den Pfad des Stammverzeichnisses zum Managed Lustre-Dateisystem an. Muss mit / beginnen. Der Standardwert ist /.

Folgende Parameter sind optional:

  • Mit --request-id können Sie dieser Anfrage eine eindeutige ID zuweisen. Wenn Sie diese Anfrage mit derselben Anfrage-ID wiederholen, ignoriert der Server die Anfrage, wenn sie bereits abgeschlossen wurde. Muss eine gültige UUID sein, die nicht nur aus Nullen besteht.
  • --async gibt sofort eine Antwort zurück, ohne auf den Abschluss des Vorgangs zu warten.

REST

POST https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:exportData
Authorization: Bearer [YOUR_ACCESS_TOKEN]

{
  "lustrePath" : {
    "path" : "/"
  },
  "gcsPath" : {
    "uri" : "gs://BUCKET_NAME/"
  }
}

Wobei:

  • PROJECT_ID ist Ihr Google Cloud Projektname.
  • INSTANCE_ID ist der Name Ihrer Managed Lustre-Instanz.
  • LOCATION ist die Zone Ihrer Managed Lustre Instanz. Beispiel: us-central1-a.
  • lustrePath enthält einen path-Schlüssel, dessen Wert den Pfad des Stammverzeichnisses zum Managed Lustre-Dateisystem angibt. Muss mit / beginnen. Der Standardwert ist /.
  • gcsPath enthält einen uri-Schlüssel, dessen Wert den URI zu einem Cloud Storage-Bucket oder einen Pfad innerhalb eines Buckets im Format gs://<bucket_name>/<optional_path_inside_bucket>/ angibt. Wenn ein Pfad innerhalb des Buckets angegeben wird, muss er mit einem Schrägstrich (/) enden.

Wenn Sie anstelle des von Google verwalteten Dienst-Agents Ihr eigenes Dienstkonto verwenden möchten, unterstützt die Anfrage ein serviceAccount-Feld im JSON-Objekt:

"serviceAccount" : "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID"

Ein Beispiel für einen curl-Befehl sieht so aus:

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json"
  https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:exportData \
  -d '{"lustrePath": {"path":"/"}, "gcsPath": {"uri":"gs://BUCKET_NAME/"}}'

Dateiattribute

Wenn Sie Daten aus einer Managed Lustre-Instanz in einen Cloud Storage-Bucket exportieren, werden die folgenden Dateiattribute als benutzerdefinierte Metadaten in Cloud Storage beibehalten:

  • Die UID der Datei wird mit dem Schlüssel goog-reserved-posix-uid gespeichert.
  • Die GID der Datei wird mit dem Schlüssel goog-reserved-posix-gid gespeichert.
  • Der numerische Modus der Datei wird mit dem Schlüssel goog-reserved-posix-mode gespeichert.
  • Die Datei mtime wird mit dem Schlüssel goog-reserved-file-mtime gespeichert.

Diese Namen der benutzerdefinierten Metadatenschlüssel sind dieselben, die von Storage Transfer Service für Übertragungen mit POSIX-Dateisystemen verwendet werden.

Die folgenden Dateiattribute werden nicht beibehalten:

  • Symbolische Links werden nicht beibehalten.
  • Feste Links werden als separate Cloud Storage-Objekte exportiert, was zu mehreren Kopien führt.
  • Die explizit mit lfs setstripe oder lfs setdirstripe festgelegte Lustre-Striping-Konfiguration wird nicht beibehalten.
  • atime und ctime von Dateien werden nicht beibehalten.
  • mtime von Verzeichnissen wird nicht beibehalten.
  • Leere Verzeichnisse werden nicht beibehalten.

Vorgang abrufen

Um den Status eines Import- oder Exportvorgangs zu sehen, benötigen Sie die Vorgangs-ID. Diese ID wird vom Dienst zurückgegeben, wenn Sie eine Import- oder Exportanfrage stellen, und hat das folgende Format:

  • operation-1234567890123-6127783ad26ea-88913969-02748053

gcloud

gcloud lustre operations describe OPERATION_ID \
  --location=LOCATION

REST

GET https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
Authorization: Bearer [YOUR_ACCESS_TOKEN]

Ein Beispiel für einen curl-Befehl sieht so aus:

curl -X GET \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID

Vorgang abbrechen

Um einen Import- oder Exportvorgang abzubrechen, benötigen Sie die Vorgangs-ID. Diese ID wird vom Dienst zurückgegeben, wenn Sie eine Import- oder Exportanfrage stellen, und hat das folgende Format:

  • operation-1234567890123-6127783ad26ea-88913969-02748053

gcloud

gcloud lustre operations cancel OPERATION_ID \
  --location=LOCATION

REST

POST https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel
Authorization: Bearer [YOUR_ACCESS_TOKEN]

Ein Beispiel für einen curl-Befehl sieht so aus:

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel

Beschränkungen

Es gelten folgende Einschränkungen:

  • Pro Instanz kann jeweils nur ein Übertragungsvorgang aktiv sein. Wenn Sie eine zweite Übertragung starten, bevor die erste abgeschlossen ist, wird der folgende Fehler zurückgegeben:

    ERROR: (gcloud.lustre.instances.export-data) ABORTED: unable to queue the operation
    

Fehlerbehebung

Beim Importieren von Daten aus oder Exportieren von Daten nach Cloud Storage können Übertragungsunterbrechungen, Berechtigungsprobleme oder übersprungene Dateien auftreten. Folgen Sie dieser Anleitung, um häufige Probleme bei der Datenübertragung zu diagnostizieren und zu beheben.

Übertragungsunterbrechungen oder langsame Geschwindigkeiten für ausgehenden Traffic

Wenn ein Import- oder Exportvorgang unterbrochen wird oder deutlich langsamer als erwartet ausgeführt wird, prüfen Sie Folgendes:

  • Limits für die ausgehende Bandbreite von Cloud Storage:Cloud Storage erzwingt ein Standardkontingent für die ausgehende Bandbreite von bis zu 200 Gbit/s pro Region und Projekt. Wenn mehrere Instanzen oder Arbeitslasten mit hohem Durchsatz gleichzeitig Daten übertragen, kann dieses Kontingent zu einem Engpass führen. Unter Bandbreitenkontingente für Cloud Storage können Sie eine Erhöhung des Kontingents beantragen.
  • Limits für den Instanzdurchsatz:Die Übertragungsgeschwindigkeiten sind durch die maximale Durchsatzkapazität Ihrer Instanz begrenzt (Instanzkapazität multipliziert mit der Leistungsstufe). Prüfen Sie die Leistungsstufe Ihrer Instanz, um sicherzustellen, dass sie Ihren Leistungsanforderungen entspricht.

Berechtigungsfehler beim Starten der Übertragung

Wenn das Starten einer Übertragung mit einem Berechtigungsfehler oder einem Autorisierungsfehler fehlschlägt, prüfen Sie die folgenden IAM-Rollen:

  • Berechtigungen für Nutzer- und Dienstkonten:Die Identität, die den Übertragungsbefehl startet, muss lustre.instances.importData (für den Import) oder lustre.instances.exportData (für den Export) haben. Diese sind in der Rolle roles/lustre.admin enthalten.
  • Berechtigungen für den Dienst-Agent: Der von Google verwaltete Dienst-Agent von Managed Lustre (service-<PROJECT_NUMBER>@gcp-sa-lustre...) muss für den Ziel-Cloud Storage-Bucket die Rolle roles/storage.objectViewer (für Importe) oder roles/storage.objectUser (für Exporte) haben. Eine detaillierte Einrichtungsanleitung finden Sie unter Berechtigungen für den Dienst-Agent erteilen.

Übersprungene Dateien oder fehlende Attribute

Datenübertragungen in Managed Lustre sind inkrementell. Es werden nur Dateien kopiert, die im Ziel nicht vorhanden sind oder die seit der letzten Übertragung geändert wurden.

  • Wenn Dateien übersprungen zu werden scheinen, prüfen Sie, ob sie bereits erfolgreich übertragen wurden und nicht geändert wurden.
  • Beim Exportieren von Daten nach Cloud Storage werden POSIX-Metadaten (UID, GID, Modus, mtime) mit benutzerdefinierten Metadatenschlüsseln beibehalten (z.B. goog-reserved-posix-uid). Symbolische Links, leere Verzeichnisse und explizite PFL-Striping-Layouts werden beim Export nicht beibehalten. Weitere Informationen finden Sie unter Dateiattribute übertragen.

Fehlgeschlagene Übertragungsvorgänge prüfen

Wenn ein Übertragungsvorgang fehlschlägt, rufen Sie mit der Vorgangs-ID die detaillierte Fehlermeldung und den Grund für den Fehler ab:

gcloud lustre operations describe OPERATION_ID \
  --location=LOCATION

Prüfen Sie das Feld error in der Ausgabe des Vorgangs, um festzustellen, ob der Fehler durch fehlende Objekte, Netzwerk-Timeouts oder die Authentifizierung verursacht wurde.

Vorgang kann nicht in die Warteschlange gestellt werden

Wenn beim Starten eines Vorgangs ein Fehler ähnlich den folgenden auftritt:

ERROR: (gcloud.lustre.instances.import-data) ABORTED: unable to queue the operation
ERROR: (gcloud.lustre.instances.export-data) ABORTED: unable to queue the operation
ERROR: (gcloud.lustre.instances.update) ABORTED: unable to queue the operation

Dieser Fehler tritt auf, wenn Sie versuchen, einen Vorgang zu starten, während ein anderer Vorgang desselben Typs bereits auf derselben Instanz ausgeführt wird.

  • Import/Export:Managed Lustre unterstützt jeweils nur einen aktiven Übertragungsvorgang pro Instanz. Das Einreihen in die Warteschlange wird für Übertragungsvorgänge nicht unterstützt.
  • Instanzaktualisierung:Managed Lustre lässt jeweils eine aktive Aktualisierung pro Instanz zu und ermöglicht das Einreihen eines zusätzlichen Aktualisierungsvorgangs in die Warteschlange.

Warten Sie, bis der aktuelle Vorgang abgeschlossen ist, bevor Sie einen neuen starten.

FILESYSTEM_NO_SPACE_ON_DEVICE-Fehler

Wenn bei der Übertragung ein FILESYSTEM_NO_SPACE_ON_DEVICE-Fehler zurückgegeben wird, obwohl Monitoring-Tools anzeigen, dass noch freier Speicherplatz verfügbar ist, kann dies an einem Ungleichgewicht der OSTs, an Client-Speicherzuweisungen oder an einer Erschöpfung der Inodes liegen. Weitere Informationen und Strategien zur Fehlerbehebung finden Sie unter No space left on device Fehlern.