Esta página explica como fazer o seguinte:
Crie um bucket com um local zonal.
Monte o bucket zonal no sistema de arquivos local usando o Cloud Storage FUSE.
Transfira dados entre um bucket atual e 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 as funções necessárias para criar buckets.
Console
- No console do Google Cloud , 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 prosseguir 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 de 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 de objetos no bucket serão armazenados permanentemente.
-
-
Na seção Escolher como armazenar seus dados, o Rapid Storage é selecionado como a classe de armazenamento padrão.
-
Na seção Escolha como controlar o acesso a objetos, selecione se o bucket aplica ou não a prevenção de acesso público e selecione um modelo de controle de acesso para os objetos do bucket.
-
Na seção Escolha como proteger os dados do objeto, faça o seguinte:
-
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 console do Google Cloud , ative o Cloud Shell.
Na parte de baixo do console Google Cloud , uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud 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 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
Substitua:
BUCKET_NAMEcom o nome que você quer dar ao bucket, sujeito a requisitos de nomenclatura. Por exemplo,rapid-storage-bucket.BUCKET_LOCATIONcom uma região do bucket. Por exemplo,us-east1.BUCKET_ZONEcom a 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/...
Ative o bucket zonal usando o Cloud Storage FUSE
Antes de começar
Nesta seção, presumimos que você já tenha acesso ao Cloud Storage FUSE. Se você ainda não fez 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.
- Autenticar solicitações do Cloud Storage FUSE.
- Se você não criou o bucket que quer montar, receba os papéis necessários para montar o bucket.
Para montar um bucket zonal usando o Cloud Storage FUSE, use os seguintes comandos:
mkdir MOUNT_POINTgcsfuse BUCKET_NAME MOUNT_POINT
Substitua:
MOUNT_POINTcom o diretório local para ativar o bucket. Por exemplo,$HOME/example-bucket.BUCKET_NAMEcom o nome do bucket a ser montado.
Por exemplo, os comandos a seguir montam um bucket chamado
example-rapid-storage-bucket no ponto de montagem source-bucket:
mkdir $HOME/source-bucketgcsfuse example-rapid-storage-bucket $HOME/source-bucket
Se você quiser transferir objetos de um bucket para um
bucket zonal, monte os dois e use o comando cp para transferir
os objetos.
Comparativo de mercado do 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 de 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 do FIO em uma VM do Compute Engine.
- Monte um armazenamento rápido usando o Cloud Storage FUSE:
mkdir $HOME/rapid-mnt
gcsfuse --max-retry-attempts=5 <bucket-name> PATH
Substitua:
PATHcom o caminho do sistema de arquivos local em que você quer ativar o bucket.
- Se você ainda não fez isso, instale o FIO:
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get install fio -y
- Execute um exemplo de teste de latência de leitura do FIO:
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 que você montou.
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
Use 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 as funções do IAM listadas 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:
- Conceda o papel de Usuário de objetos do Storage (
roles/storage.objectUser) ao agente de serviço. Isso fornece a permissãostorage.folders.createnecessária.
- Conceda o papel de Usuário de objetos do Storage (
Para instruções sobre como adicionar papéis ao agente de serviço, consulte:
Limitações
Transferências compatíveis:
- As transferências são compatíveis entre buckets zonais e buckets em qualquer outro local do Cloud Storage, incluindo outros buckets zonais.
Recursos não compatíveis:
- 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.