Ein Cloud Storage-Spiegel bietet einen automatisierten, ereignisgesteuerten Synchronisierungsdienst, der Dateien kontinuierlich von einem Cloud Storage-Bucket in ein Managed Lustre-Verzeichnis spiegelt. Die Spiegelung wird nur in eine Richtung unterstützt, von Cloud Storage zu Managed Lustre.
Cloud Storage-Spiegel sind nur auf Anfrage verfügbar. Wenn Sie Interesse haben, füllen Sie das Anfrageformular für Cloud Storage-Spiegel aus.
Wenn Sie Unterstützung bei aktiven Cloud Storage-Spiegeln benötigen, wenden Sie sich an google-cloud-managed-lustre-support@google.com.
Cloud Storage-Spiegel im Vergleich zu On-Demand-Datenübertragungen
Managed Lustre unterstützt zwei Mechanismen zum Verschieben von Daten mit Cloud Storage:
| Funktion | Cloud Storage-Spiegel | On-Demand-Datenübertragungen |
|---|---|---|
| Richtung | Cloud Storage zu Managed Lustre | Cloud Storage zu Managed Lustre Managed Lustre zu Cloud Storage |
| Trigger | Ereignisgesteuert; automatische Synchronisierung beim Erstellen, Aktualisieren und Löschen von Objekten | Manuell |
| Hierarchischer Namespace | Nicht unterstützt | Unterstützt und empfohlen für höhere Übertragungsgeschwindigkeiten |
| Rapid Storage-Buckets | Nicht unterstützt | Nicht unterstützt |
Informationen zu On-Demand-Übertragungen finden Sie unter Daten in oder aus Cloud Storage übertragen.
Funktionsweise eines Cloud Storage-Spiegels
Ein Cloud Storage-Spiegel führt ereignisgesteuerte Übertragungen zwischen einer Cloud Storage-Quelle und einem Managed Lustre-Zielverzeichnis aus. Die Cloud Storage-Quelle kann ein Bucket oder ein bestimmtes Objektpräfix in einem Bucket sein. Die Spiegelung erfolgt in zwei Phasen: einer ersten Synchronisierung beim Erstellen des Spiegels, gefolgt von einer kontinuierlichen Replikation nachfolgender Änderungen.
Erste Synchronisierung
Wenn Sie einen Cloud Storage-Spiegel erstellen, führt der Dienst eine erste Synchronisierung durch, um alle vorhandenen Objekte aus dem Cloud Storage-Quellpfad in das Managed Lustre-Zielverzeichnis zu kopieren.
Kontinuierliche ereignisgesteuerte Replikation
Nach der ersten Synchronisierung wartet der Spiegeldienst auf Bucket-Benachrichtigungen und repliziert Änderungen.
Die meisten Objekte können innerhalb weniger Minuten repliziert werden. Wenn ein Objekt erstellt oder geändert wird, wird die gesamte Datei kopiert.
Wenn Sie ein neues Objekt in Cloud Storage erstellen, wird die entsprechende Datei automatisch in Managed Lustre erstellt.
Wenn Sie ein vorhandenes Objekt in Cloud Storage ändern, wird die Datei in Managed Lustre überschrieben und alle lokalen Änderungen im Dateisystem werden verworfen.
Änderungen an benutzerdefinierten POSIX-Metadatenattributen für Cloud Storage-Objekte wie UID, GID, Modus oder
mtimewerden in der entsprechenden Managed Lustre-Datei aktualisiert.Wenn Sie ein Objekt in Cloud Storage löschen, wird die gespiegelte Datei in Managed Lustre standardmäßig gelöscht. Sie können dieses Verhalten mit dem Flag
--deleted-files-retainedändern. Leere übergeordnete Verzeichnisse verbleiben im Dateisystem, nachdem die letzte Datei darunter gelöscht wurde.Änderungen, die in Managed Lustre an gespiegelten Dateien vorgenommen werden, werden nicht in den Quell-Bucket zurückkopiert. Wenn das Quellobjekt später aktualisiert wird, wird die Managed Lustre-Datei mit dem Inhalt des Quellobjekts überschrieben und alle lokalen Änderungen werden verworfen.
Wenn Sie eine gespiegelte Datei in Managed Lustre löschen, wird das entsprechende Objekt in Cloud Storage nicht gelöscht.
Übertragungsgeschwindigkeiten
Die folgenden Übertragungsgeschwindigkeiten gelten für Cloud Storage-Spiegel, deren Buckets und Instanzen sich in derselben Google Cloud -Region befinden:
Bei der ersten Synchronisierung werden vorhandene Daten mit bis zu 100 GB/s für Dateien über 32 MB und bis zu 10.000 Objekte pro Sekunde für kleine Dateien kopiert.
Bei der kontinuierlichen Replikation werden laufende Änderungen automatisch synchronisiert. Die Übertragungsleistung variiert je nach Dateigröße:
- Große Dateien ab 10 MB werden mit einem Spitzendurchsatz von bis zu 3,5 GB/s übertragen.
- Kleine Dateien mit einer Größe von maximal 4 KB werden mit bis zu 4.900 Objekten pro Sekunde übertragen.
Wenn Daten schneller in Cloud Storage geschrieben werden, als der Spiegel sie kopieren kann, werden Ereignisse in einem Backlog in die Warteschlange gestellt. Dadurch dauert es länger, bis Änderungen in Managed Lustre angezeigt werden. Der Spiegel holt automatisch auf, sobald die Änderungsrate sinkt.
Die Übertragungsgeschwindigkeit wird durch Folgendes begrenzt:
Der maximale Durchsatz einer Instanz, d. h. die Instanzkapazität multipliziert mit der Leistungsstufe.
Bandbreite für ausgehenden Cloud Storage-Traffic, die auf 200 Gbit/s oder 25 GB/s pro Region und Projekt begrenzt ist. Wenn Sie eine höhere Bandbreite für ausgehenden Traffic benötigen, fordern Sie eine Kontingenterhöhung an.
Netzwerklatenz für regionsübergreifende Übertragungen. Platzieren Sie den Quell-Bucket und die Instanz in derselben Region, um eine optimale Leistung zu erzielen.
Preise
Für einen Cloud Storage-Spiegel fallen standardmäßige Cloud Storage-Gebühren an, die dem Projekt in Rechnung gestellt werden, das den Quell-Bucket enthält:
- Bei der ersten Synchronisierung werden Vorgänge der Klasse A zum Auflisten und Vorgänge der Klasse B zum Lesen im Quell-Bucket ausgeführt. Bei der kontinuierlichen Replikation werden Vorgänge der Klasse B zum Lesen ausgeführt, für die Cloud Storage-Betriebskosten anfallen.
- Beim Spiegeln von Daten aus einem Quell-Bucket in einer anderen Region als der Ihrer Managed Lustre-Instanz fallen Gebühren für die regionsübergreifende Datenübertragung an.
Hinweis
Zum Erstellen eines Cloud Storage-Spiegels ist Folgendes erforderlich:
- Eine Managed Lustre-Instanz im Status
ACTIVE. - Ein vorhandener Cloud Storage-Bucket, der als Spiegelquelle verwendet werden soll. Buckets mit aktiviertem hierarchischem Namespace, Rapid Storage-Buckets und Buckets mit aktiviertem Anforderer bezahlt werden nicht unterstützt.
Erforderliche Berechtigungen, Rollen und Ressourcen
Die folgenden IAM-Berechtigungen, -Rollen und -Ressourcen sind erforderlich, um Cloud Storage-Spiegel zu erstellen und zu verwalten.
Nutzerberechtigungen
Zum Erstellen und Verwalten von Spiegeln benötigt Ihr Nutzerkonto oder Dienstkonto die Rolle „Managed Lustre Admin“ (roles/lustre.admin).
Wenn Sie eine benutzerdefinierte Rolle verwenden, sind die folgenden Berechtigungen erforderlich:
lustre.mirrors.create, um einen Spiegel zu erstellen.lustre.mirrors.get, um einen Spiegel zu beschreiben.lustre.mirrors.list, um Spiegel aufzulisten.lustre.mirrors.update, um einen Spiegel zu aktualisieren.lustre.mirrors.delete, um einen Spiegel zu löschen.
Initialisierung des Cloud Storage-Dienst-Agents
Der Cloud Storage-Dienst-Agent muss in Ihrem Projekt vorhanden sein, damit er Bucket-Benachrichtigungsereignisse veröffentlichen kann:
gcloud storage service-agent --project=PROJECT_ID
Ersetzen Sie dabei PROJECT_ID durch die ID Ihres Projekts in Google Cloud .
Berechtigungen für Managed Lustre-Dienst-Agents
Der von Google verwaltete Managed Lustre-Dienst-Agent benötigt Zugriff auf Ihren Cloud Storage-Quell-Bucket. Eine Anleitung zum Suchen oder Initialisieren der Identität Ihres Dienst-Agents finden Sie unter Managed Lustre-Dienst-Agent.
Der Dienst-Agent benötigt die folgenden Berechtigungen für den Cloud Storage-Quell-Bucket:
storage.buckets.getstorage.buckets.updatestorage.objects.getstorage.objects.list
Erstellen Sie eine benutzerdefinierte Rolle mit den folgenden Berechtigungen:
gcloud iam roles create lustreMirrorUser \
--project=PROJECT_ID \
--title="Lustre mirror user" \
--permissions=storage.buckets.get,storage.buckets.update,storage.objects.get,storage.objects.list
Weisen Sie dem Managed Lustre-Dienst-Agenten die benutzerdefinierte Rolle für den Quell-Bucket zu:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
--member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.com" \
--role="projects/PROJECT_ID/roles/lustreMirrorUser"
Ersetzen Sie Folgendes:
- PROJECT_ID: Ihre Google Cloud Projekt-ID
- BUCKET_NAME: Der Name Ihres Cloud Storage-Quell-Buckets.
- PROJECT_NUMBER: Ihre Google Cloud -Projektnummer.
Cloud Storage-Spiegel erstellen
Sie können einen Cloud Storage-Spiegel pro Managed Lustre-Instanz erstellen.
Ein Cloud Storage-Spiegel kann nicht erstellt werden, während ein Import- oder Exportvorgang auf der Instanz ausgeführt wird.
gcloud
Führen Sie den Befehl mirrors create aus:
gcloud lustre instances mirrors create MIRROR_NAME \
--instance=INSTANCE_ID \
--location=LOCATION \
--direction=from-cloud-storage \
--gcs-path-uri="gs://BUCKET_NAME/PREFIX/" \
--lustre-path="/LUSTRE_DIRECTORY"
Wobei:
- MIRROR_NAME ist der Name für diese Spiegelressource. Muss 1 bis 63 Zeichen lang sein, darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten, muss mit einem Buchstaben beginnen und mit einem Buchstaben oder einer Ziffer enden.
- INSTANCE_ID ist die ID Ihrer Managed Lustre-Instanz.
- LOCATION ist die Zone Ihrer Instanz. Beispiel:
us-central1-a --directiongibt die Spiegelungsrichtung an. Mussfrom-cloud-storagelauten.--gcs-path-uriist der Cloud Storage-Quell-Bucket und das optionale Objektpräfix. Wenn Sie ein Objektpräfix angeben, muss der Pfad mit einem Schrägstrich enden:gs://<var>BUCKET_NAME</var>/<var>PREFIX</var>/.--lustre-pathist das Zielverzeichnis im Managed Lustre-Dateisystem. Muss ein absoluter Pfad sein, der mit/beginnt, z. B./dataoder/data/subdir. Die Standardeinstellung ist das Stammverzeichnis/. Falls das angegebene Verzeichnis nicht vorhanden ist, wird es erstellt.
Die folgenden optionalen Parameter sind verfügbar:
--deleted-files-retainedoder--no-deleted-files-retained: Steuert, ob in Cloud Storage gelöschte Dateien in Managed Lustre beibehalten werden. Der Standardwert ist--no-deleted-files-retained.--description=DESCRIPTION_TEXT: Eine optionale Beschreibung für den Spiegel.
REST
Senden Sie eine POST-Anfrage an die Methode instances.mirrors.create:
POST https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/mirrors?mirrorId=MIRROR_NAME
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/json
{
"gcsPath": {
"uri": "gs://BUCKET_NAME/PREFIX/"
},
"lustrePath": {
"path": "/LUSTRE_DIRECTORY"
},
"direction": "FROM_CLOUD_STORAGE"
}
Wobei:
- PROJECT_ID ist Ihre Google Cloud Projekt-ID.
- LOCATION ist die Zone Ihrer Managed Lustre-Instanz. Beispiel:
us-central1-a. - INSTANCE_ID ist Ihre Instanz-ID.
- MIRROR_NAME ist der Name für diese Spiegelressource. Muss 1 bis 63 Zeichen lang sein, darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten, muss mit einem Buchstaben beginnen und mit einem Buchstaben oder einer Ziffer enden.
gcsPathenthält einuri-Feld mit dem Cloud Storage-Quell-Bucket und dem optionalen Objektpräfix. Wenn Sie ein Objektpräfix angeben, muss der Pfad mit einem Schrägstrich enden:gs://<var>BUCKET_NAME</var>/<var>PREFIX</var>/.lustrePathist das Zielverzeichnis im Managed Lustre-Dateisystem. Muss ein absoluter Pfad sein, der mit/beginnt, z. B./dataoder/data/subdir. Die Standardeinstellung ist das Stammverzeichnis/. Falls das angegebene Verzeichnis nicht vorhanden ist, wird es erstellt.directiongibt die Spiegelungsrichtung an. MussFROM_CLOUD_STORAGElauten.
Der Anfragetext unterstützt außerdem die folgenden optionalen Felder:
deletedFilesRetained: Legen Sietruefest, um Dateien in Managed Lustre beizubehalten, nachdem die entsprechenden Dateien aus Cloud Storage gelöscht wurden. Der Standardwert istfalse.description: Eine optionale Beschreibung für den Spiegel.
Dateiattribute
Wenn eine Datei aus einem Cloud Storage-Bucket in eine Managed Lustre-Instanz kopiert wird, werden die Dateiattribute in der Managed Lustre-Instanz auf eine von zwei Arten festgelegt:
- Wenn das Cloud Storage-Objekt benutzerdefinierte Metadaten hat, wie unter Daten exportieren beschrieben, gilt Folgendes:
- Die UID, GID, der Modus und die
mtimeder Datei werden anhand der benutzerdefinierten Metadaten des Objekts festgelegt. - Der
atimeder Datei wird auf denselben Wert wie dermtimefestgelegt.
- Die UID, GID, der Modus und die
- Wenn das Cloud Storage-Objekt keine benutzerdefinierten Metadaten hat, gilt Folgendes:
- Die UID und GID der Datei sind auf 0 (
root) festgelegt. - Der Modus der Datei ist auf
rwxr-xr-x(755) festgelegt. - Die Werte für
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. atime,ctimeundmtimefür ein Verzeichnis werden auf den Zeitpunkt festgelegt, zu dem das Verzeichnis auf der Instanz erstellt wurde.
Cloud Storage-Spiegel verwalten
Sie können Cloud Storage-Spiegel mit dem Google Cloud CLI-Tool oder der REST API auflisten, beschreiben, aktualisieren und löschen. Wenn Sie den Quell- oder Zielpfad eines vorhandenen Spiegels ändern möchten, müssen Sie den vorhandenen Spiegel löschen und einen neuen erstellen.
Spiegel auflisten
So rufen Sie einen auf einer Instanz konfigurierten Spiegel auf:
gcloud
gcloud lustre instances mirrors list \
--instance=INSTANCE_ID \
--location=LOCATION
REST
Senden Sie eine GET-Anfrage an die Methode instances.mirrors.list:
GET https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/mirrors
Authorization: Bearer YOUR_ACCESS_TOKEN
Spiegel beschreiben
So rufen Sie die Konfiguration und den Betriebsstatus eines Spiegels auf:
gcloud
gcloud lustre instances mirrors describe MIRROR_NAME \
--instance=INSTANCE_ID \
--location=LOCATION
REST
Senden Sie eine GET-Anfrage an die Methode instances.mirrors.get:
GET https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/mirrors/MIRROR_NAME
Authorization: Bearer YOUR_ACCESS_TOKEN
Spiegelstatus
Das Feld state, das von den Befehlen list und describe zurückgegeben wird, gibt an, in welcher Phase des Lebenszyklus sich der Spiegel befindet:
| Bundesland | Beschreibung |
|---|---|
CREATING |
Die Spiegelressource wird erstellt. |
INITIAL_SYNC |
Bei der ersten Synchronisierung werden vorhandene Objekte aus Cloud Storage kopiert. |
ACTIVE |
Der Spiegel synchronisiert Änderungen, sobald sie auftreten. |
DELETING |
Der Spiegel wird gelöscht. |
Spiegel aktualisieren
Sie können die Beschreibung und die Labels eines Spiegels aktualisieren und festlegen, ob gelöschte Dateien beibehalten werden sollen.
Die Cloud Storage- und Managed Lustre-Pfade können nicht geändert werden. Wenn Sie einen Spiegel auf einen anderen Pfad verweisen möchten, löschen Sie den Spiegel und erstellen Sie einen neuen.
Wenn Sie einen Spiegel aktualisieren, wird die erste Synchronisierung nicht noch einmal ausgeführt.
gcloud
gcloud lustre instances mirrors update MIRROR_NAME \
--instance=INSTANCE_ID \
--location=LOCATION \
--description="DESCRIPTION_TEXT"
REST
Senden Sie eine PATCH-Anfrage an die Methode instances.mirrors.patch mit dem Suchparameter updateMask:
PATCH https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/mirrors/MIRROR_NAME?updateMask=description
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/json
{
"description": "DESCRIPTION_TEXT"
}
Spiegel löschen
So löschen Sie einen Spiegel:
gcloud
gcloud lustre instances mirrors delete MIRROR_NAME \
--instance=INSTANCE_ID \
--location=LOCATION
REST
Senden Sie eine DELETE-Anfrage an die Methode instances.mirrors.delete:
DELETE https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/mirrors/MIRROR_NAME
Authorization: Bearer YOUR_ACCESS_TOKEN
Wenn Sie einen Spiegel löschen, wird die zukünftige Synchronisierung zwischen Cloud Storage und Managed Lustre beendet. Dateien, die bereits nach Managed Lustre kopiert wurden, werden nicht gelöscht, wenn der Spiegel entfernt wird.
Dateiübertragungen, die beim Löschen eines Spiegels noch laufen, werden abgebrochen.
Bei unvollständigen Übertragungen können temporäre Dateien mit dem Namensformat FILENAME.cloud_transfer.UUID.NUMBER.tmp im Spiegelverzeichnis verbleiben, nachdem der Spiegel gelöscht wurde. Sie können diese Dateien löschen.
Logs ansehen
In den Spiegelungslogs werden einzelne Dateien aufgeführt, die nicht synchronisiert werden konnten.
Logs werden an Cloud Logging für die Ressource lustre.googleapis.com/Instance unter dem Lognamen mirror weitergeleitet.
So rufen Sie Logs für Spiegelvorgänge auf:
- Zum Log-Explorer
Geben Sie die folgende Abfrage ein:
resource.type="lustre.googleapis.com/Instance" logName="projects/PROJECT_ID/logs/lustre.googleapis.com%2Fmirror" resource.labels.instance_id="INSTANCE_ID"
Fehlerbehebung
PERMISSION_DENIED-Fehler im Quell-Bucket
Wenn die Spiegelung mit dem Fehler PERMISSION_DENIED fehlschlägt, Dateien nicht synchronisiert werden oder in den Logs „PERMISSION_DENIED“-Fehler angezeigt werden:
Prüfen Sie, ob der Cloud Storage-Dienst-Agent initialisiert wurde:
gcloud storage service-agent --project=PROJECT_IDPrüfen Sie, ob dem Managed Lustre-Dienst-Agent die erforderlichen Berechtigungen für den Quell-Bucket gewährt wurden. Weitere Informationen finden Sie unter Berechtigungen für Dienst-Agents gewähren.
Änderungen in Cloud Storage werden nicht in Managed Lustre repliziert.
Wenn der Spiegelstatus ACTIVE ist, aber neue oder geänderte Objekte in Cloud Storage nicht in Managed Lustre angezeigt werden, prüfen Sie, ob die Bucket-Benachrichtigungskonfiguration für Ihren Quell-Bucket vorhanden ist.
Listen Sie die Bucket-Benachrichtigungen auf:
gcloud storage buckets notifications list --bucket=BUCKET_NAMEWenn die Ausgabe leer ist, müssen Sie den vorhandenen Spiegel löschen und einen neuen erstellen:
gcloud lustre instances mirrors delete MIRROR_NAME \ --instance=INSTANCE_ID \ --location=LOCATION
Fehler aufgrund von Namenskonflikten
Wenn Sie feststellen, dass Dateien in Managed Lustre fehlen, nachdem Sie sie zu Cloud Storage hinzugefügt haben, suchen Sie in Cloud Logging nach Fehlern aufgrund von Namenskonflikten:
- Wenn ein in Cloud Storage erstelltes Objekt denselben Namen wie ein vorhandenes Verzeichnis in Managed Lustre hat, schlägt die Übertragung mit dem Fehler
file existsfehl und das vorhandene Verzeichnis wird nicht überschrieben. Bei der fehlgeschlagenen Übertragung bleibt eine temporäre Datei mit dem NamensformatFILENAME.cloud_transfer.UUID.NUMBER.tmpim übergeordneten Verzeichnis zurück. - Wenn ein in Cloud Storage erstelltes Objekt ein Pfadpräfix enthält, das mit einer vorhandenen regulären Datei in Managed Lustre übereinstimmt, schlägt die Übertragung mit dem Fehler
not a directoryfehl und die vorhandene Datei wird nicht überschrieben. Wennmodelsbeispielsweise eine vorhandene Datei in Managed Lustre ist, schlägt die Übertragung eines Objekts mit dem Namenmodels/weights.binaus Cloud Storage fehl, da das Verzeichnismodels/nicht erstellt werden kann.
Um diese Konflikte zu beheben, benennen Sie das in Konflikt stehende Verzeichnis oder die in Konflikt stehende Datei in Managed Lustre um oder löschen Sie sie, entfernen Sie alle verbleibenden .tmp-Dateien und laden Sie das Objekt noch einmal in Cloud Storage hoch, um die Synchronisierung auszulösen.
ABORTED: unable to queue the operation
Wenn Sie beim Erstellen eines Spiegels oder beim Initiieren eines On-Demand-Übertragungsjobs den Fehler ABORTED: unable to queue the operation erhalten:
- Achten Sie darauf, dass vor dem Erstellen eines Spiegels keine vorhandenen
import-data- oderexport-data-Vorgänge auf der Instanz ausgeführt werden. - Warten Sie, bis die Spiegelung erstellt und die erste Synchronisierung abgeschlossen ist, bevor Sie andere administrative Datenvorgänge auf der Instanz ausführen.
FILESYSTEM_NO_SPACE_ON_DEVICE
Wenn die Spiegelung angehalten wird und die Logs auf Speicherplatzfehler hinweisen, sind möglicherweise die Inodes oder die Festplattenkapazität Ihres Managed Lustre-Dateisystems erschöpft. Sie können nicht benötigte Dateien löschen, um Speicherplatz freizugeben, oder die Speicherkapazität erhöhen, um Ihr Dateisystem zu erweitern.