创建可用区级存储分区

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

  • 创建具有区域级位置的存储桶。

  • 使用 Cloud Storage FUSE 将区域级存储桶装载到本地文件系统。

  • 转移数据,使用 Storage Transfer Service 在现有存储桶和区域级存储桶之间转移数据。

在区域中创建存储桶

准备工作

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

控制台

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

    进入“存储桶”

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

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

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

      1. 选择区域 作为位置类型

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

    3. 选择数据存储方式 部分中,系统默认选择 Rapid Storage 作为 存储类别

    4. 选择如何控制对对象的访问权限 部分中,选择 存储桶是否强制执行 禁止公开访问,然后为存储桶 对象选择访问权限控制模型

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

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

        • 默认加密密钥类型 部分中,选择存储桶的默认加密密钥 。如果您选择 Cloud KMS 密钥,请提供 Cloud Key Management Service 密钥
        • 加密强制执行规则 部分中,对于密钥类型,请选择 允许或限制存储桶中新对象的加密类型。
  4. 点击 创建

命令行

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

    激活 Cloud Shell

    Cloud Shell 会话随即会在控制台的底部启动,并显示命令行提示符。 Google Cloud 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 存储:
mkdir $HOME/rapid-mnt
gcsfuse --max-retry-attempts=5 <bucket-name> PATH

  • 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.folders.list) 已包含在 Storage Object Viewer (roles/storage.objectViewer) 角色中。
  • 当目标是区域级存储桶时:

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

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

限制

  • 支持的转移

    • 支持在区域级存储分区与任何其他 Cloud Storage 位置(包括其他区域级存储分区)中的存储分区之间转移数据。
  • 不支持的功能

    • 事件驱动型转移
    • 跨存储桶复制
    • 基于代理的转移
  • 未最终确定的对象

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

创建传输作业

如需了解使用入门,请参阅使用 Storage Transfer Service 创建传输作业

后续步骤