Zonale Buckets, die über Rapid Bucket angeboten werden, bieten leistungsstarken Speicher mit geringer Latenz für Anwendungen, die Daten innerhalb einer bestimmten geografischen Zone benötigen.
Auf dieser Seite wird Folgendes beschrieben:
Erstellen Sie einen Bucket mit einem zonalen Standort.
Stellen Sie den zonalen Bucket mit Cloud Storage FUSE in Ihrem lokalen Dateisystem bereit.
Übertragen Sie Daten mit dem Storage Transfer Service von einem vorhandenen Bucket in den zonalen Bucket.
Bucket in einer Zone erstellen
Hinweis
Falls noch nicht geschehen, weisen Sie sich die erforderlichen Rollen zum Erstellen von Buckets zu.
Console
- Wechseln Sie in der Google Cloud Console unter „Cloud Storage“ zur Seite Buckets.
- Klicken Sie auf Erstellen.
Geben Sie auf der Seite Bucket erstellen die Bucket-Informationen ein. Klicken Sie nach jedem der folgenden Schritte auf Weiter, um mit dem nächsten Schritt fortzufahren:
-
Führen Sie im Abschnitt Einstieg die folgenden Schritte aus:
-
Geben Sie einen global eindeutigen Namen ein, der den Anforderungen für Bucket-Namen entspricht.
-
-
Gehen Sie im Bereich Speicherort für Daten auswählen so vor:
-
Wählen Sie Zone als Standorttyp aus.
-
Wählen Sie im Drop-down-Menü für den Standorttyp einen Speicherort aus, an dem die Objektdaten in Ihrem Bucket dauerhaft gespeichert werden sollen.
-
-
Im Abschnitt Art der Datenspeicherung auswählen ist „Rapid Storage“ als Standardspeicherklasse ausgewählt.
-
Führen Sie im Bereich Zugriff auf Objekte steuern die folgenden Schritte aus:
-
Wählen Sie aus, ob für Ihren Bucket die Verhinderung des öffentlichen Zugriffs erzwungen wird.
-
Wählen Sie Einheitlich aus, um den einheitlichen Zugriff auf Bucket-Ebene für den Bucket zu aktivieren.
-
Optional können Sie die IP-Filterung für den Bucket konfigurieren.
-
-
Gehen Sie im Bereich Auswählen, wie Objektdaten geschützt werden so vor:
-
Wenn Sie auswählen möchten, wie Ihre Objektdaten verschlüsselt werden sollen, klicken Sie auf den Erweiterungspfeil mit dem Label Datenverschlüsselung und gehen Sie so vor:
- Wählen Sie im Abschnitt Standardverschlüsselungsschlüsseltyp den Standardverschlüsselungsschlüssel für den Bucket aus. Wenn Sie Cloud KMS-Schlüssel auswählen, geben Sie einen Cloud Key Management Service-Schlüssel an.
- Wählen Sie im Abschnitt Regeln für die Verschlüsselungserzwingung unter Schlüsseltypen die Verschlüsselungstypen aus, die für neue Objekte im Bucket zugelassen oder eingeschränkt werden sollen.
-
-
Klicken Sie auf Erstellen.
Befehlszeile
-
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
Führen Sie in Ihrer Entwicklungsumgebung den Befehl
gcloud storage buckets createaus:gcloud storage buckets create \ gs://BUCKET_NAME --location=BUCKET_LOCATION --placement=BUCKET_ZONE \ --default-storage-class=RAPID --enable-hierarchical-namespace --uniform-bucket-level-access
Ersetzen Sie:
BUCKET_NAMEdurch den Namen, den Sie dem Bucket gemäß den Benennungsanforderungen geben möchten. Beispiel:rapid-storage-bucket.BUCKET_LOCATIONdurch eine Bucket-Region. Beispiel:us-east1BUCKET_ZONEdurch die Zone, in der sich der Bucket befinden soll. Beispiel:us-east1-b.
Wenn die Anfrage erfolgreich ist, gibt der Befehl die folgende Meldung zurück:
Creating gs://rapid-storage-bucket/...
Zonalen Bucket mit Cloud Storage FUSE bereitstellen
Hinweis
In diesem Abschnitt wird davon ausgegangen, dass Sie bereits Zugriff auf Cloud Storage FUSE haben. Führen Sie die folgenden erforderlichen Schritte aus, falls noch nicht geschehen:
- Cloud Storage FUSE installieren Installieren Sie Cloud Storage FUSE Version 3.4.0 oder höher.
- Cloud Storage FUSE-Anfragen authentifizieren
- Wenn Sie den Bucket, den Sie bereitstellen möchten, nicht erstellt haben, holen Sie sich die erforderlichen Rollen zum Bereitstellen des Buckets.
Verwenden Sie die folgenden Befehle, um einen zonalen Bucket mit Cloud Storage FUSE bereitzustellen:
mkdir MOUNT_POINTgcsfuse BUCKET_NAME MOUNT_POINT
Ersetzen Sie:
MOUNT_POINTdurch das lokale Verzeichnis, in dem der Bucket bereitgestellt werden soll. Beispiel:$HOME/example-bucket.BUCKET_NAMEdurch den Namen des Buckets, den Sie bereitstellen möchten.
Mit den folgenden Befehlen wird beispielsweise ein Bucket mit dem Namen example-rapid-storage-bucket am Bereitstellungspunkt source-bucket bereitgestellt:
mkdir $HOME/source-bucketgcsfuse example-rapid-storage-bucket $HOME/source-bucket
Wenn Sie Objekte aus einem vorhandenen Bucket in einen zonalen Bucket übertragen möchten, hängen Sie beide Buckets an und verwenden Sie dann den Befehl cp, um die Objekte zu übertragen.
Leistung mit einem FIO-Test benchmarken
Führen Sie einen FIO-Test aus, um die Geschwindigkeit eines zonalen Buckets zu messen.
Google Kubernetes Engine
Mit dem folgenden Befehl wird eine Konfiguration auf Ihren Google Kubernetes Engine-Cluster angewendet, die einen FIO-Test für einen Cloud Storage-Bucket ausführt. Der Bucket wird mit dem FUSE-CSI-Treiber für GKE im Dateisystem des Containers bereitgestellt.
$ cat << EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
name: fio
namespace: default
annotations:
gke-gcsfuse/volumes: "true"
spec:
containers:
- name: fio
image: mayadata/fio
command: ["/bin/ash", "-c", "--"]
args:
- |
fio --name=read_latency_test --filename=/data/fio --filesize=1G --time_based=1 --ramp_time=10s --runtime=1m --ioengine=libaio --direct=1 --verify=0 --randrepeat=0 --bs=4K --iodepth=1 --rw=randread --disable_slat=1 --disable_clat=1 --lat_percentiles=1 --numjobs=1
volumeMounts:
- name: fio-bucket
mountPath: /data
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: topology.kubernetes.io/zone
operator: In
values:
- ZONE_NAME
serviceAccountName: default
volumes:
- name: fio-bucket
csi:
driver: gcsfuse.csi.storage.gke.io
volumeAttributes:
bucketName: "BUCKET_NAME"
gcsfuseLoggingSeverity: warning
restartPolicy: Never
EOF
Wobei:
ZONE_NAMEist die Zone, in der sich der Bucket befindet. Beispiel:us-east4-a.BUCKET_NAMEist der Name des Buckets. Beispiel:my-bucket.
Wenn der Test erfolgreich ist, wird eine Antwort wie die folgende ausgegeben:
$ kubectl logs fio
Defaulted container "fio" out of: fio, gke-gcsfuse-sidecar (init)
read_latency_test: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=1
fio-3.36
Starting 1 process
read_latency_test: (groupid=0, jobs=1): err= 0: pid=11: Mon Mar 3 20:38:14 2025
read: IOPS=591, BW=2365KiB/s (2422kB/s)(139MiB/60001msec)
lat (usec): min=867, max=181966, avg=1685.32, stdev=2695.84
lat percentiles (usec):
| 1.00th=[ 1074], 5.00th=[ 1188], 10.00th=[ 1254], 20.00th=[ 1336],
| 30.00th=[ 1401], 40.00th=[ 1467], 50.00th=[ 1549], 60.00th=[ 1614],
| 70.00th=[ 1713], 80.00th=[ 1844], 90.00th=[ 2057], 95.00th=[ 2278],
| 99.00th=[ 3064], 99.50th=[ 3654], 99.90th=[ 8717], 99.95th=[ 73925],
| 99.99th=[131597]
bw ( KiB/s): min= 1290, max= 2736, per=100.00%, avg=2365.51, stdev=244.10, samples=120
iops : min= 322, max= 684, avg=591.34, stdev=61.10, samples=120
cpu : usr=0.81%, sys=1.61%, ctx=36011, majf=0, minf=36
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued rwts: total=35473,0,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
READ: bw=2365KiB/s (2422kB/s), 2365KiB/s-2365KiB/s (2422kB/s-2422kB/s), io=139MiB (145MB), run=60001-60001msec
Compute Engine-VM
In der folgenden Anleitung wird ein FIO-Test auf einer Compute Engine-VM ausgeführt.
- Rapid Storage mit Cloud Storage FUSE bereitstellen:
mkdir $HOME/rapid-mnt
gcsfuse --max-retry-attempts=5 BUCKET_NAME PATH
Ersetzen Sie:
BUCKET_NAMEdurch den Namen des Buckets.PATHdurch den Pfad des lokalen Dateisystems, in dem Sie den Bucket bereitstellen möchten.
- Installieren Sie FIO, falls noch nicht geschehen:
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get install fio -y
- Führen Sie einen Beispiel-FIO-Leselatenztest aus:
fio --name=read_latency_test \
--filename=BUCKET_PATH/1G --filesize=1G \
--time_based=1 --ramp_time=10s --runtime=1m \
--ioengine=libaio --direct=1 --verify=0 --randrepeat=0 \
--bs=4K --iodepth=1 --rw=randread --numjobs=1
Ersetzen Sie:
BUCKET_PATHdurch den Pfad zum bereitgestellten Bucket.
Wenn der Test erfolgreich ist, wird eine Antwort wie die folgende ausgegeben:
read_latency_test: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=1
fio-3.33
Starting 1 process
Jobs: 1 (f=1): [f(1)][100.0%][eta 00m:00s]
read_latency_test: (groupid=0, jobs=1): err= 0: pid=78399: Tue Feb 11 21:14:35 2025
read: IOPS=622, BW=2490KiB/s (2550kB/s)(146MiB/60001msec)
slat (usec): min=108, max=13857, avg=1596.92, stdev=243.32
clat (nsec): min=1539, max=141717, avg=5872.92, stdev=3230.74
lat (usec): min=112, max=13866, avg=1602.80, stdev=244.13
clat percentiles (nsec):
| 1.00th=[ 2960], 5.00th=[ 3856], 10.00th=[ 4320], 20.00th=[ 4704],
| 30.00th=[ 4896], 40.00th=[ 5088], 50.00th=[ 5280], 60.00th=[ 5536],
| 70.00th=[ 5856], 80.00th=[ 6240], 90.00th=[ 7072], 95.00th=[ 8512],
| 99.00th=[21120], 99.50th=[26240], 99.90th=[40704], 99.95th=[51968],
| 99.99th=[75264]
bw ( KiB/s): min= 2024, max= 2672, per=100.00%, avg=2491.15, stdev=105.69, samples=120
iops : min= 506, max= 668, avg=622.77, stdev=26.41, samples=120
lat (usec) : 2=0.06%, 4=6.21%, 10=89.91%, 20=2.61%, 50=1.15%
lat (usec) : 100=0.05%, 250=0.01%
cpu : usr=0.67%, sys=1.79%, ctx=37361, majf=0, minf=37
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued rwts: total=37355,0,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
READ: bw=2490KiB/s (2550kB/s), 2490KiB/s-2490KiB/s (2550kB/s-2550kB/s), io=146MiB (153MB), run=60001-60001msecDaten mit Storage Transfer Service übertragen
Mit dem Storage Transfer Service können Sie Daten zwischen zonalen Buckets und anderen Cloud Storage-Buckets übertragen.
Erforderliche Berechtigungen
Für Übertragungen zwischen Cloud Storage-Buckets sind die IAM-Rollen erforderlich, die unter Berechtigungen für die Übertragung ohne Agent aufgeführt sind.
Da zonale Buckets einen hierarchischen Namespace verwenden, müssen dem Storage Transfer Service-Dienst-Agent außerdem die folgenden IAM-Berechtigungen gewährt werden:
Wenn die Quelle ein zonaler Bucket ist:
- Wenn Sie die vordefinierten Rollen verwenden, die unter Berechtigungen für die agentenlose Übertragung aufgeführt sind, sind keine weiteren Maßnahmen erforderlich.
Die erforderliche Berechtigung (
storage.folders.list) ist bereits in der Rolle „Storage-Objekt-Betrachter“ (roles/storage.objectViewer) enthalten.
- Wenn Sie die vordefinierten Rollen verwenden, die unter Berechtigungen für die agentenlose Übertragung aufgeführt sind, sind keine weiteren Maßnahmen erforderlich.
Die erforderliche Berechtigung (
Wenn das Ziel ein zonaler Bucket ist:
- Sie müssen dem Dienst-Agent die Rolle „Storage-Objekt-Nutzer“ (
roles/storage.objectUser) zuweisen. Dadurch wird die erforderliche Berechtigungstorage.folders.creategewährt.
- Sie müssen dem Dienst-Agent die Rolle „Storage-Objekt-Nutzer“ (
Eine Anleitung zum Hinzufügen von Rollen zum Dienst-Agent finden Sie hier:
- Zugriff auf eine Quelle konfigurieren: Cloud Storage
- Zugriff auf eine Senke konfigurieren: Cloud Storage
Beschränkungen
Unterstützte Übertragungen:
- Übertragungen werden zwischen zonalen Buckets und Buckets an jedem anderen Cloud Storage-Standort unterstützt, einschließlich anderer zonaler Buckets.
Nicht unterstützte Funktionen:
- Ereignisgesteuerte Übertragungen
- Bucket-übergreifende Replikation
- Agentenbasierte Übertragungen
Nicht abgeschlossene Objekte:
- Wenn Sie nicht abgeschlossene Objekte aus einem zonalen Bucket übertragen, spiegeln die Daten im Ziel-Bucket möglicherweise nicht die Änderungen an den Objekten wider, die während der Übertragung vorgenommen werden.
- Nicht finalisierte Quellobjekte werden im Ziel-Bucket als finalisiert markiert.
Übertragung erstellen
Weitere Informationen finden Sie unter Übertragung mit dem Storage Transfer Service erstellen.