Google Cloud Managed Lustre kann Daten aus Cloud Storage importieren und Daten dorthin 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.
Beschränkungen
Pro Instanz kann jeweils nur ein Übertragungsvorgang aktiv sein. Wenn Sie versuchen, einen zweiten Übertragungsvorgang zu starten, während ein früherer noch läuft, wird ein Fehler wie der folgende angezeigt:
ERROR: (gcloud.lustre.instances.export-data) ABORTED: unable to queue the operation
Überlegungen zur Bandbreite für ausgehenden Cloud Storage-Traffic
Cloud Storage bietet eine Standardbandbreite für ausgehenden Traffic von bis zu 200 Gbit/s pro Region und Projekt. Wenn für Ihre Arbeitslast eine höhere Datenübertragungsgeschwindigkeit erforderlich ist, können Sie eine Erhöhung des Limits für die ausgehende Bandbreite anfordern. Weitere Informationen finden Sie unter Cloud Storage – Bandbreitenkontingente.
Erforderliche Berechtigungen
Berechtigungen zum Initiieren der Übertragung
Das Nutzer- oder Dienstkonto, das zum Initiieren des Transfers verwendet wird, benötigt die folgenden Berechtigungen:
lustre.instances.exportData, um Daten von Managed Lustre zu Cloud Storage zu übertragen.lustre.instances.importData, um Daten aus Cloud Storage zu übertragen.
Beide Berechtigungen werden mit der Rolle roles/lustre.admin gewährt. Sie können eine benutzerdefinierte Rolle erstellen, um Berechtigungen unabhängig voneinander zu erteilen.
Berechtigungen für den Managed Lustre-Dienst-Agenten
Managed Lustre-Dienst-Agent abrufen
Ein Managed Lustre-Dienst-Agent 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 Managed Lustre-Dienst-Agent haben
Führen Sie den Befehl
services identity createaus: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, der im nächsten Schritt verwendet werden soll.
Wenn Sie bereits eine Managed Lustre-Instanz erstellt haben
Um die Dienst-Agent-Identität zu erstellen, benötigen Sie Ihre Projektnummer. Eine 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. - Die Projektnummer ist eine automatisch generierte eindeutige Kennung für Ihr Projekt, die nur aus Zahlen besteht. Beispiel:
1234567890.
Verwenden Sie den Befehl
gcloud projects describe, 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 Identität des Service-Agents, um sie im nächsten Schritt zu verwenden.
Berechtigungen erteilen
Der Managed Lustre-Dienst-Agent benötigt eine der folgenden Cloud Storage-Rollen:
- So übertragen Sie Daten in und aus Cloud Storage:
roles/storage.objectUserfür den Cloud Storage-Bucket. - Nur aus Cloud Storage übertragen:
roles/storage.objectViewerfür den Cloud Storage-Bucket.
Führen Sie zum Zuweisen einer dieser Rollen den folgenden gcloud-Befehl aus:
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 Identität des Managed Lustre-Dienst-Agents 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 verwaltete Lustre-Instanz befinden. Interregionale Übertragungen
sind jedoch möglicherweise langsamer als intraregionale Übertragungen.
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.- Mit
--gcs-path-uriwird der URI zu einem Cloud Storage-Bucket oder ein Pfad innerhalb eines Buckets im Formatgs://<bucket_name>/<optional_path_inside_bucket>/angegeben. Wenn ein Pfad innerhalb des Bucket angegeben wird, muss er mit einem Schrägstrich (/) enden. --lustre-pathgibt den Pfad zum Stammverzeichnis des verwalteten Lustre-Dateisystems 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 noch einmal senden, ignoriert der Server die Anfrage, falls 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 der Name Ihres Google Cloud Projekts.
- LOCATION ist die Zone Ihrer verwalteten 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 Bucket angegeben wird, muss er mit einem Schrägstrich (/) enden.lustrePathenthält einenpath-Schlüssel, dessen Wert den Stammverzeichnispfad zum verwalteten 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 Ihr eigenes Dienstkonto anstelle des von Google verwalteten Dienstkontos verwenden möchten, unterstützt die Anfrage das Feld serviceAccount im JSON-Objekt:
"serviceAccount" : "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID"
Ein Beispiel für einen curl-Befehl:
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 für den Export von Daten beschrieben hat, gilt Folgendes:
- Die UID, GID, der Modus und
mtimeder Datei werden basierend auf den benutzerdefinierten Metadaten des Objekts festgelegt. - Der
atime-Wert der Datei ist auf denselben Wert wie dermtime-Wert festgelegt.
- Die UID, GID, der Modus und
- Wenn das Cloud Storage-Objekt die benutzerdefinierten Metadaten nicht enthält, gilt Folgendes:
- Die UID und GID der Datei sind auf 0 (
root) gesetzt. - Der Modus der Datei ist auf
rwxr-xr-x(755) festgelegt. - Die
atimeundmtimeder Datei werden auf die Erstellungszeit des Cloud Storage-Objekts festgelegt.
- Die UID und GID der Datei sind auf 0 (
In beiden Fällen gilt:
- Der
ctimefür eine Datei wird auf den Zeitpunkt festgelegt, zu dem die Datei in die Instanz geschrieben wurde. - Die
atime-,ctime- undmtime-Werte für ein Verzeichnis werden auf die Zeit festgelegt, zu der das Verzeichnis auf 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 verwaltete Lustre-Instanz befinden. Interregionale Übertragungen sind jedoch möglicherweise langsamer als intraregionale Übertragungen.
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 verwalteten Lustre-Instanz. Beispiel:us-central1-a.- Mit
--gcs-path-uriwird der URI zu einem Cloud Storage-Bucket oder ein Pfad innerhalb eines Buckets im Formatgs://<bucket_name>/<optional_path_inside_bucket>/angegeben. Wenn ein Pfad innerhalb des Bucket angegeben wird, muss er mit einem Schrägstrich (/) enden. --lustre-pathgibt den Pfad des Stammverzeichnisses für das 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 noch einmal senden, ignoriert der Server die Anfrage, falls 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 der Name Ihres Google Cloud Projekts.
- INSTANCE_ID ist der Name Ihrer Managed Lustre-Instanz.
- LOCATION ist die Zone Ihrer verwalteten Lustre-Instanz. Beispiel:
us-central1-a. lustrePathenthält einenpath-Schlüssel, dessen Wert den Stammverzeichnispfad zum verwalteten 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 Bucket angegeben wird, muss er mit einem Schrägstrich (/) enden.
Wenn Sie Ihr eigenes Dienstkonto anstelle des von Google verwalteten Dienstkontos verwenden möchten, unterstützt die Anfrage das Feld serviceAccount im JSON-Objekt:
"serviceAccount" : "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID"
Ein Beispiel für einen curl-Befehl:
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 verwalteten 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. - Der
mtimeder Datei wird mit demgoog-reserved-file-mtime-Schlüssel gespeichert.
Diese benutzerdefinierten Metadatenschlüsselnamen sind dieselben wie die, die von Storage Transfer Service für Übertragungen mit POSIX-Dateisystemen verwendet werden.
Die folgenden Dateiattribute werden nicht beibehalten:
- Symlinks bleiben nicht erhalten.
- Hardlinks werden als separate Cloud Storage-Objekte exportiert, was zu mehreren Kopien führt.
- Die mit
lfs setstripeoderlfs setdirstripeexplizit festgelegte Lustre-Streifenbildung wird nicht beibehalten. - Die
atimeundctimevon Dateien werden nicht beibehalten. - Die
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. Sie 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:
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. Sie 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:
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