Daten in oder aus Cloud Storage übertragen

Mit Google Cloud Managed Lustre können Daten aus Cloud Storage importiert und in Cloud Storage exportiert werden. 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 gewähren:

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 hat, wie beim Exportieren von Daten beschrieben, 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 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 benutzerdefinierten Metadatenschlüsselnamen 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.
  • Harte 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:

  • Es kann immer nur ein Übertragungsvorgang pro Instanz 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