Los buckets zonales, que se ofrecen a través de Rapid Bucket, proporcionan almacenamiento de alto rendimiento, baja latencia para aplicaciones que requieren datos dentro de una zona geográfica específica.
En esta página, se describe cómo hacer lo siguiente:
Crear un bucket con una ubicación zonal.
Activar el bucket zonal en tu sistema de archivos local con Cloud Storage FUSE
Transferir datos entre un bucket existente y el bucket zonal con el Servicio de transferencia de almacenamiento.
Crea un bucket en una zona
Antes de comenzar
Si aún no lo hiciste, obtén los roles necesarios para crear buckets.
Console
- En la Google Cloud consola, ve a la página Buckets de Cloud Storage.
- Haz clic en Crear.
En la página Crear un bucket, ingresa la información de tu bucket. Después de cada uno de los siguientes pasos, haz clic en Continuar para pasar al siguiente paso:
-
En la sección Primeros pasos, haz lo siguiente:
-
Ingresa un nombre único a nivel global que cumpla con los requisitos de nombre de los buckets.
-
-
En la sección Elige dónde almacenar tus datos, haz lo siguiente:
-
Selecciona Zona como el Tipo de ubicación.
-
Usa el menú desplegable del tipo de ubicación para seleccionar una Ubicación en la que se almacenarán de forma permanente los datos de objetos de tu bucket.
-
-
En la sección Elige cómo almacenar tus datos, Rapid Storage está seleccionado como la clase de almacenamiento predeterminada.
-
En la sección Elige cómo controlar el acceso a los objetos , selecciona si tu bucket aplica o no la prevención del acceso público y elige un modelo de control de acceso para los objetos del bucket.
-
En la sección Elige cómo proteger los datos de objetos, haz lo siguiente:
-
Para elegir cómo encriptar los datos de tus objetos, haz clic en la flecha desplegable etiquetada como Encriptación de datos y haz lo siguiente:
- En la sección Tipo de clave de encriptación predeterminada, selecciona la clave de encriptación predeterminada para el bucket. Si seleccionas Clave de Cloud KMS, proporciona una clave de Cloud Key Management Service.
- En la sección Reglas de aplicación de encriptación, en Tipos de claves, selecciona qué tipos de encriptación permitir o restringir para los objetos nuevos en el bucket.
-
-
Haz clic en Crear.
Línea de comandos
-
En la Google Cloud consola de, activa Cloud Shell.
En la parte inferior de la Google Cloud consola de Cloud, se inicia una sesión de Cloud Shell en la que se muestra una ventana de línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada y con valores ya establecidos para el proyecto actual. La sesión puede tardar unos segundos en inicializarse.
En tu entorno de desarrollo, ejecuta el
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
Reemplaza lo siguiente:
BUCKET_NAMEpor el nombre que quieres asignar a tu bucket, sujeto a los requisitos de nomenclatura. Por ejemplo,rapid-storage-bucket.BUCKET_LOCATIONpor una región de bucket. Por ejemplo,us-east1.BUCKET_ZONEpor la zona en la que quieres ubicar tu bucket. Por ejemplo,us-east1-b.
Si la solicitud se realiza correctamente, el comando mostrará el siguiente mensaje:
Creating gs://rapid-storage-bucket/...
Activa el bucket zonal con Cloud Storage FUSE
Antes de comenzar
En esta sección, se supone que ya tienes acceso a Cloud Storage FUSE. Si aún no lo hiciste, realiza los siguientes pasos de requisitos previos:
- Instala Cloud Storage FUSE. Asegúrate de instalar Cloud Storage FUSE versión 3.4.0 o posterior.
- Autentica solicitudes de Cloud Storage FUSE.
- Si no creaste el bucket que quieres activar, obtén los roles necesarios para activar el bucket.
Para activar un bucket zonal con Cloud Storage FUSE, usa los siguientes comandos:
mkdir MOUNT_POINTgcsfuse BUCKET_NAME MOUNT_POINT
Reemplaza lo siguiente:
MOUNT_POINTpor el directorio local en el que se activará el bucket. Por ejemplo,$HOME/example-bucket.BUCKET_NAMEpor el nombre del bucket que se activará.
Por ejemplo, los siguientes comandos activan un bucket llamado example-rapid-storage-bucket en el punto de activación source-bucket:
mkdir $HOME/source-bucketgcsfuse example-rapid-storage-bucket $HOME/source-bucket
Si quieres transferir objetos de un bucket existente a un bucket zonal, activa ambos buckets y, luego, usa el comando cp para transferir los objetos.
Compara el rendimiento con una prueba de FIO
Para comparar la velocidad de un bucket zonal, ejecuta una prueba de FIO.
Google Kubernetes Engine
El siguiente comando aplica una configuración a tu clúster de Google Kubernetes Engine que ejecuta una prueba de FIO en un bucket de Cloud Storage. El bucket se activa en el sistema de archivos del contenedor con el controlador CSI de 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
Aquí:
ZONE_NAMEes la zona en la que se encuentra tu bucket. Por ejemplo,us-east4-a.BUCKET_NAMEes el nombre de tu bucket. Por ejemplo,my-bucket.
Si la prueba se realiza correctamente, muestra una respuesta similar a la siguiente:
$ 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 de Compute Engine
En las siguientes instrucciones, se ejecuta una prueba de FIO en una VM de Compute Engine.
- Activa un almacenamiento rápido con Cloud Storage FUSE:
mkdir $HOME/rapid-mnt
gcsfuse --max-retry-attempts=5 <bucket-name> PATH
Reemplaza lo siguiente:
PATHpor la ruta de acceso del sistema de archivos local en la que quieres activar el bucket.
- Si aún no lo hiciste, instala FIO:
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get install fio -y
- Ejecuta una prueba de ejemplo de latencia de lectura de 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
Reemplaza lo siguiente:
BUCKET_PATHpor la ruta de acceso al bucket que activaste.
Si la prueba se realiza correctamente, muestra una respuesta similar a la siguiente:
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-60001msecTransfiere datos con el Servicio de transferencia de almacenamiento
Puedes usar el Servicio de transferencia de almacenamiento para transferir datos entre buckets zonales y otros buckets de Cloud Storage.
Permisos necesarios
Las transferencias entre buckets de Cloud Storage requieren los roles de IAM que se enumeran en Permisos de transferencia sin agentes.
Además, como los buckets zonales usan un espacio de nombres jerárquico, se le deben otorgar al agente de servicio del Servicio de transferencia de almacenamiento los siguientes permisos de IAM:
Cuando la fuente es un bucket zonal:
- No se requiere ninguna acción adicional cuando se usan los roles predefinidos que se enumeran en
Permisos de transferencia sin agentes.
El permiso necesario (
storage.folders.list) ya está incluido en el rol de visualizador de objetos de almacenamiento (roles/storage.objectViewer).
- No se requiere ninguna acción adicional cuando se usan los roles predefinidos que se enumeran en
Permisos de transferencia sin agentes.
El permiso necesario (
Cuando el destino es un bucket zonal:
- Debes otorgar el rol de usuario de objetos de almacenamiento (
roles/storage.objectUser) al agente de servicio. Esto proporciona el permisostorage.folders.createnecesario.
- Debes otorgar el rol de usuario de objetos de almacenamiento (
Para obtener instrucciones sobre cómo agregar roles al agente de servicio, consulta lo siguiente:
Limitaciones
Transferencias admitidas:
- Se admiten transferencias entre buckets zonales y buckets en cualquier otra ubicación de Cloud Storage, incluidos otros buckets zonales.
Funciones no admitidas:
- Transferencias controladas por eventos
- Replicación entre bucket
- Transferencias basadas en agentes
Objetos no finalizados:
- Cuando se transfieren objetos no finalizados desde un bucket zonal, es posible que los datos del bucket de destino no reflejen los cambios realizados en los objetos mientras la transferencia está en curso.
- Los objetos de origen no finalizados se marcan como finalizados en el bucket de destino.
Crear una transferencia
Para comenzar, consulta Crea una transferencia con el Servicio de transferencia de almacenamiento.