Créer des buckets zonaux

Cette page explique comment effectuer les opérations suivantes :

Créer un bucket dans une zone

Avant de commencer

Si ce n'est 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, le stockage rapide est sélectionné comme classe de stockage 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. Dans la Google Cloud console, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la Google Cloud console, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

  2. Dans votre environnement de développement, exécutez la gcloud storage buckets create commande :

    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 à votre bucket, conformément aux exigences de nommage. Exemple : rapid-storage-bucket.

    • BUCKET_LOCATION par une région de bucket. 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, procédez comme suit :

  1. Installez Cloud Storage FUSE. Assurez-vous d'installer la version 3.4.0 ou ultérieure de Cloud Storage FUSE.
  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 sur le point d'installation 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, installez les deux buckets, puis utilisez la commande cp pour transférer les objets.

Comparer les performances avec un test FIO

Pour comparer 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 génère une réponse semblable à la suivante :

$ 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 dans 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 génère une réponse semblable à la suivante :

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, l'agent de service du service de transfert de stockage doit disposer des autorisations IAM suivantes :

  • 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 de l'espace de stockage (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 pages suivantes :

Limites

  • Transferts compatibles :

    • Les transferts sont compatibles 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, les données du bucket de destination peuvent ne pas refléter 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 la page Créer un transfert avec le service de transfert de stockage.

Étape suivante