Créer des buckets zonaux

Cette page explique comment effectuer les opérations suivantes :

  • Créez un bucket avec une zone.

  • Installez le bucket zonal sur votre système de fichiers local à l'aide de Cloud Storage FUSE.

  • Transférez des données d'un bucket existant vers le bucket zonal à l'aide du service de transfert de stockage.

Créer un bucket dans une zone

Avant de commencer

Si vous ne l'avez pas déjà fait, obtenez les rôles requis pour créer des buckets.

Console

  1. Dans la console Google Cloud , accédez à la page Buckets de Cloud Storage.

    Accéder à la page Buckets

  2. Cliquez sur  Créer.
  3. Sur la page Créer un bucket, saisissez les informations concernant votre bucket. Après chacune des étapes suivantes, cliquez sur Continuer pour passer à la prochaine étape :
    1. Dans la section Premiers pas, procédez comme suit :

    2. Dans la section Choisir où stocker vos données, procédez comme suit :

      1. Sélectionnez Zone comme Type d'emplacement.

      2. Utilisez le menu déroulant du type d'emplacement pour sélectionner un emplacement où les données d'objets de votre bucket seront stockées de manière permanente.

    3. Dans la section Choisir comment stocker vos données, la classe de stockage Stockage rapide est sélectionnée par défaut.

    4. Dans la section Choisissez comment contrôler l'accès aux objets, indiquez si votre bucket applique ou non la protection contre l'accès public et sélectionnez un modèle de contrôle des accès pour les objets de votre bucket.

    5. Pour choisir comment vos données d'objet seront chiffrées, cliquez sur la flèche de développement  intitulée Chiffrement des données, puis sélectionnez une méthode de chiffrement des données.

  4. Cliquez sur Créer.

Ligne de commande

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Dans votre environnement de développement, exécutez la commande 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

    Remplacez :

    • BUCKET_NAME par le nom que vous souhaitez attribuer au bucket, ce nom étant soumis à des exigences concernant l'attribution de noms. Exemple : rapid-storage-bucket.

    • BUCKET_LOCATION par une région de bucket. Par exemple, us-east1.

    • BUCKET_ZONE par la zone dans laquelle vous souhaitez localiser votre bucket. Exemple :us-east1-b

    Si la requête aboutit, la commande renvoie le message suivant :

    Creating gs://rapid-storage-bucket/...

Installer le bucket zonal à l'aide de Cloud Storage FUSE

Avant de commencer

Cette section suppose que vous avez déjà accès à Cloud Storage FUSE. Si ce n'est pas déjà fait, suivez les étapes préalables suivantes :

  1. Installez Cloud Storage FUSE. Assurez-vous d'installer Cloud Storage FUSE version 3.4.0 ou ultérieure.
  2. Authentifiez les requêtes Cloud Storage FUSE.
  3. Si vous n'avez pas créé le bucket que vous souhaitez installer, obtenez les rôles requis pour l'installer.

Pour installer un bucket zonal à l'aide de Cloud Storage FUSE, utilisez les commandes suivantes :

mkdir MOUNT_POINT
gcsfuse BUCKET_NAME MOUNT_POINT

Remplacez :

  • MOUNT_POINT par le répertoire local dans lequel installer le bucket. Exemple :$HOME/example-bucket

  • BUCKET_NAME par le nom du bucket à installer.

Par exemple, les commandes suivantes installent un bucket nommé example-rapid-storage-bucket dans le point de montage source-bucket :

mkdir $HOME/source-bucket
gcsfuse example-rapid-storage-bucket $HOME/source-bucket

Si vous souhaitez transférer des objets d'un bucket existant vers votre nouveau bucket zonal, associez les deux buckets, puis utilisez la commande cp pour transférer les objets.

Comparer les performances avec un test FIO

Pour évaluer la vitesse d'un bucket zonal, exécutez un test FIO.

Google Kubernetes Engine

La commande suivante applique une configuration à votre cluster Google Kubernetes Engine qui exécute un test FIO sur un bucket Cloud Storage. Le bucket est installé sur le système de fichiers du conteneur à l'aide du pilote CSI FUSE pour 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

Où :

  • ZONE_NAME est la zone dans laquelle se trouve votre bucket. Exemple :us-east4-a

  • BUCKET_NAME est le nom du bucket. Exemple : my-bucket.

Si le test réussit, il renvoie une réponse semblable à celle-ci :

$ 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 Compute Engine

Les instructions suivantes exécutent un test FIO sur une VM Compute Engine.

  1. Installez un stockage rapide à l'aide de Cloud Storage FUSE :
mkdir $HOME/rapid-mnt
gcsfuse --max-retry-attempts=5 <bucket-name> PATH

Remplacez :

  • PATH par le chemin d'accès au système de fichiers local sur lequel vous souhaitez installer le bucket.
  1. Si ce n'est pas déjà fait, installez FIO :
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get install fio -y
  1. Exécutez un exemple de test de latence en lecture 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

Remplacez :

  • BUCKET_PATH par le chemin d'accès au bucket que vous avez installé.

Si le test réussit, il renvoie une réponse semblable à celle-ci :

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-60001msec

Transférer des données avec le service de transfert de stockage

Vous pouvez utiliser le service de transfert de stockage pour transférer des données entre des buckets zonaux et d'autres buckets Cloud Storage.

Autorisations requises

Les transferts entre des buckets Cloud Storage nécessitent les rôles IAM listés dans Autorisations de transfert sans agent.

De plus, comme les buckets zonaux utilisent un espace de noms hiérarchique, les autorisations IAM suivantes doivent être accordées à l'agent de service service de transfert de stockage :

  • Lorsque la source est un bucket zonal :

    • Aucune action supplémentaire n'est requise lorsque vous utilisez les rôles prédéfinis listés dans Autorisations de transfert sans agent. L'autorisation nécessaire (storage.folders.list) est déjà incluse dans le rôle Lecteur des objets de l'espace de stockage (roles/storage.objectViewer).
  • Lorsque la destination est un bucket zonal :

    • Vous devez attribuer le rôle Utilisateur des objets Storage (roles/storage.objectUser) à l'agent de service. Cela fournit l'autorisation storage.folders.create requise.

Pour savoir comment ajouter des rôles à l'agent de service, consultez les ressources suivantes :

Limites

  • Transferts acceptés :

    • Les transferts sont possibles entre les buckets zonaux et les buckets situés dans n'importe quel autre emplacement Cloud Storage, y compris d'autres buckets zonaux.
  • Fonctionnalités non compatibles :

    • Transferts basés sur des événements
    • Réplication entre buckets
    • Transferts basés sur un agent
  • Objets non finalisés :

    • Lorsque vous transférez des objets non finalisés depuis un bucket zonal, il est possible que les données du bucket de destination ne reflètent pas les modifications apportées aux objets pendant le transfert.
    • Les objets sources non finalisés sont marqués comme finalisés dans le bucket de destination.

Créer un transfert

Pour commencer, consultez Créer un transfert avec le service de transfert de stockage.

Étapes suivantes