Esta página explica como fazer o seguinte:
Criar um bucket com um local zonal.
Ativar o bucket zonal no sistema de arquivos local usando Cloud Storage FUSE.
Transferir dados de um bucket atual para o bucket zonal usando o Serviço de transferência do Cloud Storage.
Criar um bucket em uma zona
Antes de começar
Se ainda não tiver feito isso, receba os papéis necessários para criar buckets.
Console
- No Google Cloud console do, acesse a página Buckets do Cloud Storage.
- Clique em Criar.
- Na página Criar um bucket, insira as informações do seu bucket. Após
cada uma das etapas a seguir, clique em Continuar para passar para a próxima
etapa:
-
Na seção Começar, faça o seguinte:
-
Insira um nome globalmente exclusivo que atenda aos requisitos de nome do bucket.
-
-
Na seção Escolha onde armazenar seus dados, faça o seguinte:
-
Selecione Zona como o tipo de local.
-
Use o menu suspenso do tipo de local para selecionar um Local em que os dados do objeto no bucket serão armazenados permanentemente.
-
-
Na seção Escolha como armazenar seus dados, o Rapid Storage é selecionado como a classe de armazenamento padrão.
-
Na seção Escolha como controlar o acesso aos objetos , selecione se o bucket aplica a prevenção de acesso público ou não e selecione um modelo de controle de acesso para os objetos do bucket.
-
Para escolher como criptografar os dados do objeto, clique na seta de expansão identificada como Criptografia de dados e faça o seguinte:
- Na seção Tipo de chave de criptografia padrão, selecione a chave de criptografia padrão do bucket. Se você selecionar Chave do Cloud KMS, forneça uma chave do Cloud Key Management Service.
- Na seção Regras de aplicação de criptografia, em Tipos de chave, selecione quais tipos de criptografia permitir ou restringir para novos objetos no bucket.
-
Clique em Criar.
Linha de comando
-
No Google Cloud console do, ative o Cloud Shell.
Na parte de baixo do Google Cloud console do Cloud, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a Google Cloud CLI já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.
No ambiente de desenvolvimento, execute o
gcloud storage buckets createcomando:gcloud storage buckets create \ gs://BUCKET_NAME --location=BUCKET_LOCATION --placement=BUCKET_ZONE \ --default-storage-class=RAPID --enable-hierarchical-namespace --uniform-bucket-level-access
Substitua:
BUCKET_NAMEpelo nome que você quer dar ao seu bucket, sujeito aos requisitos de nomenclatura. Por exemplo,rapid-storage-bucket.BUCKET_LOCATIONpor uma região do bucket. Por exemplo,us-east1.BUCKET_ZONEpela zona em que você quer localizar o bucket. Por exemplo,us-east1-b.
Se a solicitação for bem-sucedida, o comando retornará a seguinte mensagem:
Creating gs://rapid-storage-bucket/...
Ativar o bucket zonal usando o Cloud Storage FUSE
Antes de começar
Esta seção pressupõe que você já tenha acesso ao Cloud Storage FUSE. Se ainda não tiver feito isso, siga estas etapas de pré-requisito:
- Instale o Cloud Storage FUSE. Instale a versão 3.4.0 ou mais recente do Cloud Storage FUSE.
- Autentique as solicitações do Cloud Storage FUSE.
- Se você não criou o bucket que quer ativar, receba os papéis necessários para ativar o bucket.
Para ativar um bucket zonal usando o Cloud Storage FUSE, use os seguintes comandos:
mkdir MOUNT_POINTgcsfuse BUCKET_NAME MOUNT_POINT
Substitua:
MOUNT_POINTpelo diretório local para ativar o bucket. Por exemplo,$HOME/example-bucket.BUCKET_NAMEpelo nome do bucket a ser ativado.
Por exemplo, os comandos a seguir ativam um bucket chamado example-rapid-storage-bucket no ponto de ativação source-bucket:
mkdir $HOME/source-bucketgcsfuse example-rapid-storage-bucket $HOME/source-bucket
Se você quiser transferir objetos de um bucket atual para um bucket zonal, ative os dois buckets e use o comando cp para transferir os objetos.
Comparar o desempenho com um teste FIO
Para comparar a velocidade de um bucket zonal, execute um teste FIO.
Google Kubernetes Engine
O comando a seguir aplica uma configuração ao cluster do Google Kubernetes Engine que executa um teste FIO em um bucket do Cloud Storage. O bucket é ativado no sistema de arquivos do contêiner usando o driver CSI do FUSE para 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
Em que:
ZONE_NAMEé a zona em que o bucket está localizado. Por exemplo,us-east4-a.BUCKET_NAMEé o nome do bucket. Por exemplo,my-bucket.
Se o teste for bem-sucedido, ele vai gerar uma resposta semelhante a esta:
$ 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 do Compute Engine
As instruções a seguir executam um teste FIO em uma VM do Compute Engine.
- Ative um armazenamento rápido usando o Cloud Storage FUSE:
mkdir $HOME/rapid-mnt
gcsfuse --max-retry-attempts=5 <bucket-name> PATH
Substitua:
PATHpelo caminho do sistema de arquivos local em que você quer ativar o bucket.
- Se ainda não tiver feito isso, instale o FIO:
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get install fio -y
- Execute um teste de latência de leitura do FIO de exemplo:
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
Substitua:
BUCKET_PATHpelo caminho para o bucket ativado.
Se o teste for bem-sucedido, ele vai gerar uma resposta semelhante a esta:
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-60001msecTransferir dados com o Serviço de transferência do Cloud Storage
É possível usar o Serviço de transferência do Cloud Storage para transferir dados entre buckets zonais e outros buckets do Cloud Storage.
Permissões necessárias
As transferências entre buckets do Cloud Storage exigem os papéis do IAM listados em Permissões de transferência sem agente.
Além disso, como os buckets zonais usam o namespace hierárquico, o agente de serviço do Serviço de transferência do Cloud Storage precisa receber as seguintes permissões do IAM:
Quando a origem é um bucket zonal:
- Nenhuma ação adicional é necessária ao usar os papéis predefinidos listados em
Permissões de transferência sem agente.
A permissão necessária (
storage.folders.list) já está incluída no papel Leitor de objetos do Storage (roles/storage.objectViewer).
- Nenhuma ação adicional é necessária ao usar os papéis predefinidos listados em
Permissões de transferência sem agente.
A permissão necessária (
Quando o destino é um bucket zonal:
- Você precisa conceder o papel Usuário de objetos do Storage (
roles/storage.objectUser) ao agente de serviço. Isso fornece a permissãostorage.folders.createnecessária.
- Você precisa conceder o papel Usuário de objetos do Storage (
Para instruções sobre como adicionar papéis ao agente de serviço, consulte:
Limitações
Transferências aceitas :
- As transferências são aceitas entre buckets zonais e buckets em qualquer outro local do Cloud Storage, incluindo outros buckets zonais.
Recursos não aceitos :
- Transferências baseadas em eventos
- Replicação entre buckets
- Transferências baseadas em agentes
Objetos não finalizados :
- Ao transferir objetos não finalizados de um bucket zonal, os dados no bucket de destino podem não refletir as mudanças feitas nos objetos enquanto a transferência está em andamento.
- Os objetos de origem não finalizados são marcados como finalizados no bucket de destino.
Criar uma transferência
Para começar, consulte Criar uma transferência com o Serviço de transferência do Cloud Storage.