创建可用区级存储分区

通过 Rapid Bucket 提供的可用区级存储桶为需要在特定地理可用区内存储数据的应用提供高性能、低延迟的存储。

本页面介绍了如何执行以下操作:

在可用区中创建存储桶

准备工作

如果您尚未获取创建存储桶所需的角色,请先获取。

控制台

  1. 在 Cloud de Confiance 控制台中,转到 Cloud Storage 存储桶页面。

    进入“存储桶”

  2. 点击 创建。
  3. 在创建存储桶页面上,输入您的存储桶信息。完成以下每一步后,点击继续以继续执行后续步骤:

    1. 在开始使用部分中,执行以下操作:

    2. 在选择数据存储位置部分中,执行以下操作:

      1. 选择可用区作为位置类型。

      2. 使用位置类型的下拉菜单选择一个位置,用于永久存储存储桶中的对象数据。

    3. 在选择数据存储方式部分中,Rapid Storage 已被选为默认存储类别。

    4. 在选择如何控制对对象的访问权限部分中,执行以下操作:

      1. 选择存储桶是否强制执行禁止公开访问。

      2. 选择统一,以对存储桶启用统一存储桶级访问权限。

      3. (可选)为存储桶配置 IP 过滤。

    5. 在选择如何保护对象数据部分中,执行以下操作:

      • 如需选择如何加密对象数据,请点击标有数据加密的 展开箭头,然后执行以下操作:

  4. 点击创建。

命令行

  1. 在 Cloud de Confiance 控制台中,激活 Cloud Shell。

    激活 Cloud Shell

    Cloud Shell 会话随即会在 Cloud de Confiance 控制台的底部启动,并显示命令行提示符。Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境。该会话可能需要几秒钟时间来完成初始化。

  2. 在开发环境中,运行 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

    将

    • 将 BUCKET_NAME 替换为您要为存储桶指定的名称(须遵循命名要求)。例如 rapid-storage-bucket。

    • 将 BUCKET_LOCATION 替换为存储桶区域。例如 us-east1。

    • 将 BUCKET_ZONE 替换为您要将存储桶放置在其中的可用区。例如 us-east1-b。

    如果请求成功,该命令将返回以下消息:

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

使用 Cloud Storage FUSE 装载可用区级存储桶

准备工作

本部分假定您已经有权访问 Cloud Storage FUSE。如果您尚未执行以下前提条件步骤,请执行这些步骤:

  1. 安装 Cloud Storage FUSE。 请确保您安装的是 Cloud Storage FUSE 3.4.0 版或更高版本。
  2. 对 Cloud Storage FUSE 请求进行身份验证。
  3. 如果您没有创建要装载的存储桶,请获取装载存储桶所需的角色。

如需使用 Cloud Storage FUSE 装载可用区级存储桶,请使用以下命令:

mkdir MOUNT_POINT
gcsfuse BUCKET_NAME MOUNT_POINT

将

  • 将 MOUNT_POINT 替换为要将存储桶装载到的本地目录。例如 $HOME/example-bucket。

  • 将 BUCKET_NAME 替换为要装载的存储桶的名称。

例如,以下命令会将名为 example-rapid-storage-bucket 的存储桶装载到 source-bucket 装载点:

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

如果您想将对象从现有存储桶转移到可用区级存储桶,请装载这两个存储桶,然后使用 cp 命令转移对象。

通过 FIO 测试对性能进行基准化分析

如需对可用区级存储桶的速度进行基准测试,请运行 FIO 测试。

Google Kubernetes Engine

以下命令会将配置应用于 Google Kubernetes Engine 集群,该集群会针对 Cloud Storage 存储桶运行 FIO 测试。该存储桶使用适用于 GKE 的 FUSE CSI 驱动程序装载到容器的文件系统。

$ 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

其中:

  • ZONE_NAME 是存储桶所在的可用区。例如 us-east4-a。

  • BUCKET_NAME 是您的存储桶的名称。 例如 my-bucket。

如果测试成功,则会输出类似于以下内容的响应:

$ 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

Compute Engine 虚拟机

以下说明在 Compute Engine 虚拟机上运行 FIO 测试。

  1. 使用 Cloud Storage FUSE 装载 Rapid Storage:
mkdir $HOME/rapid-mnt
gcsfuse --max-retry-attempts=5 BUCKET_NAME PATH

将

  • BUCKET_NAME 替换为存储桶的名称。

  • 将 PATH 替换为要将存储桶装载到的本地文件系统路径。

  1. 如果您尚未安装 FIO,请进行安装:
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get install fio -y
  1. 运行 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

将

  • 将 BUCKET_PATH 替换为您装载的存储桶的路径。

如果测试成功,则会输出类似于以下内容的响应:

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

使用 Storage Transfer Service 转移数据

您可以使用 Storage Transfer Service 在可用区级存储桶与其他 Cloud Storage 存储桶之间转移数据。

所需权限

在 Cloud Storage 存储桶之间转移数据需要无代理转移权限中列出的 IAM 角色。

此外,由于可用区级存储桶使用分层命名空间,因此必须向 Storage Transfer Service 服务代理授予以下 IAM 权限:

  • 如果来源是可用区级存储桶:

    • 使用无代理转移权限中列出的预定义角色时,无需执行任何其他操作。Storage Object Viewer (roles/storage.objectViewer) 角色中已包含必要的权限 (storage.folders.list)。
  • 如果目标位置是可用区级存储桶:

    • 您必须向服务代理授予 Storage Object User (roles/storage.objectUser) 角色。这会提供所需的 storage.folders.create 权限。

如需了解如何向服务代理添加角色,请参阅:

限制

  • 支持的转移作业:

    • 支持在可用区级存储桶与任何其他 Cloud Storage 位置(包括其他可用区级存储桶)中的存储桶之间进行转移。
  • 不支持的功能:

    • 事件驱动型转移作业
    • 跨存储桶复制
    • 基于代理的转移
  • 未完成的对象:

    • 从可用区级存储桶传输未最终确定的对象时,目标存储桶中的数据可能无法反映在传输过程中对对象所做的更改。
    • 未最终确定的源对象在目标存储桶中会被标记为已最终确定。

创建传输作业

如需开始使用,请参阅使用 Storage Transfer Service 创建转移作业。

后续步骤