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.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
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
Führen Sie den
services identity createBefehl aus:gcloud beta services identity create \ --service=lustre.googleapis.com \ --project=PROJECT_NUMBER_OR_IDErsetzen 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.comKopieren 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
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 describeBefehl, um die PROJECT_NUMBER für eine bestimmte Projekt-ID abzurufen:gcloud projects describe PROJECT_ID --format="value(projectNumber)"- 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:
Kopieren Sie die zurückgegebene Projektnummer in die Dienst-Agent-Identität:
service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.comKopieren 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.objectUserfür den Cloud Storage-Bucket. - Für die Übertragung nur von Cloud Storage:
roles/storage.objectViewerfü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.
--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 wie beim Exportieren von Daten beschrieben hat, gilt Folgendes:
- Die UID, GID, der Modus und
mtimeder Datei werden basierend auf den benutzerdefinierten Metadaten des Objekts festgelegt. atimeder Datei wird auf denselben Wert wiemtimegesetzt.
- 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) gesetzt. - Der Modus der Datei wird auf
rwxr-xr-x(755) gesetzt. atimeundmtimeder Datei werden auf die Erstellungszeit des Cloud Storage-Objekts gesetzt.
- 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 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 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
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) oderlustre.instances.exportData(für den Export) haben. Diese sind in der Rolleroles/lustre.adminenthalten. - Berechtigungen für Dienst-Agents: Der von Google verwaltete
Dienst-Agent von Managed Lustre
(
service-<PROJECT_NUMBER>@gcp-sa-lustre...) mussroles/storage.objectViewer(für Importe) oderroles/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.