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.exportDatafür die Übertragung von Managed Lustre zu Cloud Storage.lustre.instances.importDatafü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.objectUserfür den Cloud Storage-Bucket. - Für die Übertragung nur von Cloud Storage:
roles/storage.objectViewerfü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.
--locationist die Zone Ihrer Managed Lustre-Instanz. Beispiel:us-central1-a.--gcs-path-urigibt den URI zu einem Cloud Storage-Bucket oder einen Pfad innerhalb eines Buckets im Formatgs://<bucket_name>/<optional_path_inside_bucket>/an. Wenn ein Pfad innerhalb des Buckets angegeben wird, muss er mit einem Schrägstrich (/) enden.--lustre-pathgibt 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-idkö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. --asyncgibt 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.
gcsPathenthält einenuri-Schlüssel, dessen Wert den URI zu einem Cloud Storage-Bucket oder einen Pfad innerhalb eines Buckets im Formatgs://<bucket_name>/<optional_path_inside_bucket>/angibt. Wenn ein Pfad innerhalb des Buckets angegeben wird, muss er mit einem Schrägstrich (/) enden.lustrePathenthält einenpath-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
mtimeder Datei werden anhand der benutzerdefinierten Metadaten des Objekts festgelegt. atimeder Datei wird auf denselben Wert wiemtimefestgelegt.
- Die UID, GID, der Modus und
- 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. atimeundmtimeder Datei werden auf die Erstellungszeit des Cloud Storage-Objekts festgelegt.
- Die UID und GID der Datei werden auf 0 (
In beiden Fällen gilt:
ctimefür eine Datei wird auf die Zeit festgelegt, zu der die Datei in die Instanz geschrieben wurde.atime,ctimeundmtimefü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.
--locationist die Zone Ihrer Managed Lustre-Instanz. Beispiel:us-central1-a.--gcs-path-urigibt den URI zu einem Cloud Storage-Bucket oder einen Pfad innerhalb eines Buckets im Formatgs://<bucket_name>/<optional_path_inside_bucket>/an. Wenn ein Pfad innerhalb des Buckets angegeben wird, muss er mit einem Schrägstrich (/) enden.--lustre-pathgibt den Pfad des Stammverzeichnisses zum Managed Lustre-Dateisystem an. Muss mit/beginnen. Der Standardwert ist/.
Folgende Parameter sind optional:
- Mit
--request-idkö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. --asyncgibt 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. lustrePathenthält einenpath-Schlüssel, dessen Wert den Pfad des Stammverzeichnisses zum Managed Lustre-Dateisystem angibt. Muss mit/beginnen. Der Standardwert ist/.gcsPathenthält einenuri-Schlüssel, dessen Wert den URI zu einem Cloud Storage-Bucket oder einen Pfad innerhalb eines Buckets im Formatgs://<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-uidgespeichert. - Die GID der Datei wird mit dem Schlüssel
goog-reserved-posix-gidgespeichert. - Der numerische Modus der Datei wird mit dem Schlüssel
goog-reserved-posix-modegespeichert. - Die Datei
mtimewird mit dem Schlüsselgoog-reserved-file-mtimegespeichert.
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 setstripeoderlfs setdirstripefestgelegte Lustre-Striping-Konfiguration wird nicht beibehalten. atimeundctimevon Dateien werden nicht beibehalten.mtimevon 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) oderlustre.instances.exportData(für den Export) haben. Diese sind in der Rolleroles/lustre.adminenthalten. - 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 Rolleroles/storage.objectViewer(für Importe) oderroles/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.