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
- Dans la console Google Cloud , accédez à la page Buckets de Cloud Storage.
- Cliquez sur Créer.
- 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 :
-
Dans la section Premiers pas, procédez comme suit :
-
Saisissez un nom unique qui répond aux exigences relatives aux noms des buckets.
-
-
Dans la section Choisir où stocker vos données, procédez comme suit :
-
Sélectionnez Zone comme Type d'emplacement.
-
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.
-
-
Dans la section Choisir comment stocker vos données, la classe de stockage Stockage rapide est sélectionnée par défaut.
-
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.
-
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.
-
Cliquez sur Créer.
Ligne de commande
-
In the Google Cloud console, 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.
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_NAMEpar le nom que vous souhaitez attribuer au bucket, ce nom étant soumis à des exigences concernant l'attribution de noms. Exemple :rapid-storage-bucket.BUCKET_LOCATIONpar une région de bucket. Par exemple,us-east1.BUCKET_ZONEpar 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 :
- Installez Cloud Storage FUSE. Assurez-vous d'installer Cloud Storage FUSE version 3.4.0 ou ultérieure.
- Authentifiez les requêtes Cloud Storage FUSE.
- 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_POINTgcsfuse BUCKET_NAME MOUNT_POINT
Remplacez :
MOUNT_POINTpar le répertoire local dans lequel installer le bucket. Exemple :$HOME/example-bucketBUCKET_NAMEpar 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-bucketgcsfuse 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_NAMEest la zone dans laquelle se trouve votre bucket. Exemple :us-east4-aBUCKET_NAMEest 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.
- Installez un stockage rapide à l'aide de Cloud Storage FUSE :
mkdir $HOME/rapid-mnt
gcsfuse --max-retry-attempts=5 <bucket-name> PATH
Remplacez :
PATHpar le chemin d'accès au système de fichiers local sur lequel vous souhaitez installer le bucket.
- 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
- 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_PATHpar 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-60001msecTransfé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).
- 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 (
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'autorisationstorage.folders.createrequise.
- Vous devez attribuer le rôle Utilisateur des objets Storage (
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.