I bucket a livello di zona, offerti tramite Rapid Bucket, forniscono uno spazio di archiviazione ad alte prestazioni e a bassa latenza per le applicazioni che richiedono dati all'interno di una zona geografica specifica.
Questa pagina descrive come:
Crea un bucket con una località a livello di zona.
Monta il bucket a livello di zona nel file system locale utilizzando Cloud Storage FUSE.
Trasferisci i dati tra un bucket esistente e il bucket a livello di zona utilizzando Storage Transfer Service.
Crea un bucket in una zona
Prima di iniziare
Se non l'hai ancora fatto, ottieni i ruoli richiesti per creare i bucket.
Console
- Nella console Google Cloud , vai alla pagina Bucket in Cloud Storage.
- Fai clic su Crea.
Nella pagina Crea un bucket, inserisci le informazioni del bucket. Dopo ciascuno dei seguenti passaggi, fai clic su Continua per procedere con il passaggio successivo:
-
Nella sezione Inizia, segui questi passaggi:
-
Inserisci un nome globalmente univoco che soddisfi i requisiti per i nomi dei bucket.
-
-
Nella sezione Scegli dove archiviare i tuoi dati, segui questi passaggi:
-
Seleziona Zona come Tipo di località.
-
Utilizza il menu a discesa del tipo di località per selezionare una località in cui verranno archiviati in modo permanente i dati degli oggetti all'interno del bucket.
-
-
Nella sezione Scegli come archiviare i tuoi dati, Rapid Storage è selezionata come classe di archiviazione predefinita.
-
Nella sezione Scegli come controllare l'accesso agli oggetti, segui questi passaggi:
-
Seleziona se il bucket applica la prevenzione dell'accesso pubblico.
-
Seleziona Uniforme per abilitare l'accesso uniforme a livello di bucket nel bucket.
-
Facoltativamente, configura il filtro IP per il bucket.
-
-
Nella sezione Scegli come proteggere i dati degli oggetti, segui questi passaggi:
-
Per scegliere come criptare i dati degli oggetti, fai clic sulla freccia di espansione con l'etichetta Crittografia dei dati e segui questi passaggi:
- Nella sezione Tipo di chiave di crittografia predefinito, seleziona la chiave di crittografia predefinita per il bucket. Se selezioni Chiave Cloud KMS, fornisci una chiave Cloud Key Management Service.
- Nella sezione Regole di applicazione della crittografia, per Tipi di chiavi, seleziona quali tipi di crittografia consentire o limitare per i nuovi oggetti nel bucket.
-
-
Fai clic su Crea.
Riga di comando
-
Nella console Google Cloud , attiva Cloud Shell.
Nella parte inferiore della console Google Cloud , viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
Nell'ambiente di sviluppo, esegui il comando
gcloud storage buckets create:gcloud storage buckets create \ gs://BUCKET_NAME --location=BUCKET_LOCATION --placement=BUCKET_ZONE \ --default-storage-class=RAPID --enable-hierarchical-namespace --uniform-bucket-level-access
Sostituisci:
BUCKET_NAMEcon il nome che vuoi assegnare al bucket, soggetto ai requisiti di denominazione. Ad esempiorapid-storage-bucket.BUCKET_LOCATIONcon una regione del bucket. Ad esempio:us-east1.BUCKET_ZONEcon la zona in cui vuoi posizionare il bucket. Ad esempio,us-east1-b.
Se la richiesta ha esito positivo, il comando restituisce il seguente messaggio:
Creating gs://rapid-storage-bucket/...
Monta il bucket a livello di zona utilizzando Cloud Storage FUSE
Prima di iniziare
Questa sezione presuppone che tu abbia già accesso a Cloud Storage FUSE. Se non l'hai ancora fatto, esegui i seguenti passaggi preliminari:
- Installa Cloud Storage FUSE. Assicurati di installare Cloud Storage FUSE versione 3.4.0 o successive.
- Autentica le richieste di Cloud Storage FUSE.
- Se non hai creato il bucket che vuoi montare, ottieni i ruoli richiesti per montare il bucket.
Per montare un bucket a livello di zona utilizzando Cloud Storage FUSE, utilizza i seguenti comandi:
mkdir MOUNT_POINTgcsfuse BUCKET_NAME MOUNT_POINT
Sostituisci:
MOUNT_POINTcon la directory locale in cui montare il bucket. Ad esempio,$HOME/example-bucket.BUCKET_NAMEcon il nome del bucket da montare.
Ad esempio, i seguenti comandi montano un bucket denominato
example-rapid-storage-bucket nel punto di montaggio source-bucket:
mkdir $HOME/source-bucketgcsfuse example-rapid-storage-bucket $HOME/source-bucket
Se vuoi trasferire oggetti da un bucket esistente a un bucket a livello di zona, monta entrambi i bucket e utilizza il comando cp per trasferire gli oggetti.
Esegui il benchmark delle prestazioni con un test FIO
Per eseguire il benchmark della velocità di un bucket a livello di zona, esegui un test FIO.
Google Kubernetes Engine
Il comando seguente applica una configurazione al cluster Google Kubernetes Engine che esegue un test FIO su un bucket Cloud Storage. Il bucket viene montato sul file system del container utilizzando il driver CSI FUSE per GKE.
$ 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
Dove:
ZONE_NAMEè la zona in cui si trova il bucket. Ad esempio,us-east4-a.BUCKET_NAMEè il nome del bucket. Ad esempio,my-bucket.
Se il test ha esito positivo, l'output è simile al seguente:
$ 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
VM di Compute Engine
Le seguenti istruzioni eseguono un test FIO su una VM di Compute Engine.
- Monta Rapid Storage utilizzando Cloud Storage FUSE:
mkdir $HOME/rapid-mnt
gcsfuse --max-retry-attempts=5 BUCKET_NAME PATH
Sostituisci:
BUCKET_NAMEcon il nome del bucket.PATHcon il percorso del file system locale in cui vuoi montare il bucket.
- Se non l'hai ancora fatto, installa FIO:
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get install fio -y
- Esegui un test di latenza di lettura FIO di esempio:
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
Sostituisci:
BUCKET_PATHcon il percorso del bucket che hai montato.
Se il test ha esito positivo, l'output è simile al seguente:
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-60001msecTrasferisci i dati con Storage Transfer Service
Puoi utilizzare Storage Transfer Service per trasferire dati tra bucket a livello di zona e altri bucket Cloud Storage.
Autorizzazioni obbligatorie
I trasferimenti tra bucket Cloud Storage richiedono i ruoli IAM elencati in Autorizzazioni per i trasferimenti senza agenti.
Inoltre, poiché i bucket a livello di zona utilizzano lo spazio dei nomi gerarchico, all'agente di servizio Storage Transfer Service devono essere concesse le seguenti autorizzazioni IAM:
Quando l'origine è un bucket a livello di zona:
- Non è richiesta alcuna azione aggiuntiva quando utilizzi i ruoli predefiniti elencati in Autorizzazioni per il trasferimento senza agente.
L'autorizzazione necessaria (
storage.folders.list) è già inclusa nel ruolo Visualizzatore oggetti Storage (roles/storage.objectViewer).
- Non è richiesta alcuna azione aggiuntiva quando utilizzi i ruoli predefiniti elencati in Autorizzazioni per il trasferimento senza agente.
L'autorizzazione necessaria (
Quando la destinazione è un bucket a livello di zona:
- Devi concedere il ruolo Storage Object User (
roles/storage.objectUser) all'agente di servizio. In questo modo viene fornita l'autorizzazionestorage.folders.createrichiesta.
- Devi concedere il ruolo Storage Object User (
Per istruzioni su come aggiungere ruoli all'agente di servizio, consulta:
Limitazioni
Trasferimenti supportati:
- I trasferimenti sono supportati tra bucket a livello di zona e bucket in qualsiasi altra località di Cloud Storage, inclusi altri bucket a livello di zona.
Funzionalità non supportate:
- Trasferimenti basati su eventi
- Replica tra bucket
- Trasferimenti basati su agenti
Oggetti non finalizzati:
- Quando trasferisci oggetti non finalizzati da un bucket a livello di zona, i dati nel bucket di destinazione potrebbero non riflettere le modifiche agli oggetti apportate durante il trasferimento.
- Gli oggetti di origine non finalizzati vengono contrassegnati come finalizzati nel bucket di destinazione.
Crea un trasferimento
Per iniziare, consulta Crea un trasferimento con Storage Transfer Service.