En esta página, se describe cómo hacer lo siguiente:
Crea un bucket con una ubicación zonal.
Activa el bucket zonal en tu sistema de archivos local con Cloud Storage FUSE.
Transfiere 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 consola de Google Cloud , 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 avanzar 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, se selecciona Almacenamiento rápido 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.
-
Para elegir cómo se encriptarán los datos de tus objetos, haz clic en la flecha desplegable etiquetada como Encriptación de datos y selecciona un método de encriptación de datos.
-
Haz clic en Crear.
Línea de comandos
-
En la consola de Google Cloud , activa Cloud Shell.
En la parte inferior de la consola de Google Cloud , se inicia una sesión de Cloud Shell que muestra una ventana emergente con una 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 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
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_LOCATIONcon una región del bucket Por ejemplo,us-east1.BUCKET_ZONEpor la zona en la que deseas 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, sigue estos pasos de requisitos previos:
- Instala Cloud Storage FUSE. Asegúrate de instalar la versión 3.4.0 o posterior de Cloud Storage FUSE.
- Autentica solicitudes de Cloud Storage FUSE.
- Si no creaste el bucket que deseas activar, obtén los roles necesarios para activarlo.
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-bucketBUCKET_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 deseas transferir objetos de un bucket existente a tu nuevo 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 de 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-aBUCKET_NAMEes el nombre de tu depósito. Por ejemplo,my-bucket.
Si la prueba se realiza correctamente, se genera 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 al sistema de archivos local en el que deseas 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 latencia de lectura de FIO de ejemplo:
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, se genera 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 indican en Permisos de transferencia sin agente.
Además, dado que 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, sucede lo siguiente:
- No se requiere ninguna acción adicional cuando se usan los roles predefinidos que se indican en Permisos de transferencia sin agente.
El permiso necesario (
storage.folders.list) ya está incluido en el rol de visualizador de objetos de Storage (roles/storage.objectViewer).
- No se requiere ninguna acción adicional cuando se usan los roles predefinidos que se indican en Permisos de transferencia sin agente.
El permiso necesario (
Cuando el destino es un bucket zonal, sucede lo siguiente:
- Debes otorgar el rol de usuario de objetos de almacenamiento (
roles/storage.objectUser) al agente de servicio. Esto proporciona el permisostorage.folders.createrequerido.
- Debes otorgar el rol de usuario de objetos de almacenamiento (
Para obtener instrucciones sobre cómo agregar roles al agente de servicio, consulta los siguientes recursos:
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 basadas en eventos
- Replicación entre buckets
- 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.