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 sich seit der Übertragung geändert haben.

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 Bandbreite für ausgehenden Traffic 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 Bandbreite für ausgehenden Traffic 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

Dienst-Agent von Managed Lustre abrufen

Ein Dienst-Agent von Managed Lustre wird erstellt, wenn Sie zum ersten Mal eine Managed Lustre-Instanz im Projekt erstellen. Die Dienst Agent-Identität hat das Format service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.com.

Wenn Sie noch keinen Dienst-Agent von Managed Lustre haben
  1. Führen Sie den services identity create Befehl aus:

    gcloud beta services identity create \
      --service=lustre.googleapis.com \
      --project=PROJECT_NUMBER_OR_ID
    

    Ersetzen Sie PROJECT_NUMBER_OR_ID durch die Projektnummer oder ID des Projekts, in dem Sie die Managed Lustre Instanz erstellen möchten. Die Ausgabe sieht etwa so aus:

    Service identity created: service-1234567890@gcp-sa-lustre.iam.gserviceaccount.com
    
  2. Kopieren Sie den Wert der Dienst-Agent-Identität, um ihn im nächsten Schritt zu verwenden.

Wenn Sie bereits eine Managed Lustre-Instanz erstellt haben
  1. Rufen Sie Ihre Projektnummer ab, um die Dienst-Agent-Identität zu erstellen. Ein PROJECT_NUMBER ist nicht dasselbe wie eine Projekt-ID:

    • Eine Projekt-ID ist ein eindeutiger String, der eine Kombination aus Buchstaben, Zahlen und Bindestrichen sein kann. Sie geben eine Projekt-ID an, wenn Sie Ihr Projekt erstellen. Beispiel: example-project-123.
    • Eine Projektnummer ist eine automatisch generierte eindeutige Kennung für Ihr Projekt, die nur aus Zahlen besteht. Beispiel: 1234567890.

    Verwenden Sie den gcloud projects describe Befehl, um die PROJECT_NUMBER für eine bestimmte Projekt-ID abzurufen:

    gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    
  2. Kopieren Sie die zurückgegebene Projektnummer in die Dienst-Agent-Identität:

    service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.com
    
  3. Kopieren Sie die Dienst-Agent-Identität, um sie im nächsten Schritt zu verwenden.

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.

Führen Sie den folgenden gcloud-Befehl aus, um eine dieser Rollen zu erteilen:

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

SERVICE_AGENT_IDENTITY ist die Dienst Agent-Identität von Managed Lustre aus dem vorherigen Schritt.

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

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 benutzerdefinierten Metadatenschlüsselnamen sind dieselben, die vom 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

Wenn Sie einen Import- oder Exportvorgang abbrechen möchten, 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 Bandbreite für ausgehenden Traffic von Cloud Storage:Cloud Storage erzwingt ein Standardkontingent für die Bandbreite für ausgehenden Traffic 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 Dienst-Agents: Der von Google verwaltete Dienst-Agent von Managed Lustre (service-<PROJECT_NUMBER>@gcp-sa-lustre...) muss roles/storage.objectViewer (für Importe) oder roles/storage.objectUser (für Exporte) für den Ziel-Cloud Storage-Bucket haben. Eine detaillierte Einrichtungsanleitung finden Sie unter Berechtigungen für den Dienst-Agent erteilen.

Übersprungene Dateien oder fehlende Attribute

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

  • 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 die detaillierte Fehlermeldung und den Grund für den Fehler mit der Vorgangs-ID ab:

gcloud lustre operations describe OPERATION_ID \
  --location=LOCATION

Prüfen Sie das Feld error in der Vorgangsausgabe, um festzustellen, ob der Fehler durch fehlende Objekte, Netzwerk-Time-outs 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 bereits ein anderer Vorgang desselben Typs für dieselbe 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 es, einen zusätzlichen Aktualisierungsvorgang in die Warteschlange zu stellen.

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 Überwachungstools anzeigen, dass noch freier Speicherplatz verfügbar ist, kann dies an einer OST-Ungleichheit, an Client-Speicherzuweisungen oder an einer Erschöpfung der Inodes liegen. Weitere Informationen und Strategien zur Risikominderung finden Sie unter No space left on device Fehler.