本頁面說明如何執行下列操作:
建立具有可用區位置的值區。
使用 Cloud Storage FUSE 將區域 bucket 掛接到本機檔案系統。
使用 Storage 移轉服務,在現有值區和區域值區之間移轉資料。
在可用區建立 bucket
事前準備
如果您尚未取得建立值區所需的角色,請先完成這項作業。
控制台
- 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。
- 點選 「Create」(建立)。
在「建立 bucket」頁面中,輸入 bucket 資訊。完成下列每個步驟後,請按一下「繼續」前往下一個步驟:
-
在「開始使用」部分,執行下列操作:
-
輸入符合值區名稱要求的全域不重複名稱。
-
-
在「Choose where to store your data」(選擇資料的儲存位置) 部分,執行下列操作:
-
使用位置類型下拉式選單,選取要永久儲存 bucket 內物件資料的位置。
-
在「選擇資料儲存方式」部分,系統會選取「Rapid Storage」做為預設儲存空間級別。
-
在「選取如何控制物件的存取權」部分,選取 bucket 是否強制執行禁止公開存取,並為 bucket 物件選取存取控管模型。
-
在「選擇保護物件資料的方式」部分,執行下列操作:
-
如要選擇如何加密物件資料,請按一下標示為「資料加密」的 展開箭頭,然後執行下列操作:
- 在「預設加密金鑰類型」部分,選取 bucket 的預設加密金鑰。如果選取「Cloud KMS key」(Cloud KMS 金鑰),請提供 Cloud Key Management Service 金鑰。
- 在「加密機制強制執行規則」部分,針對「金鑰類型」,選取要允許或限制 bucket 中新物件使用的加密類型。
-
-
點選「建立」。
指令列
-
在 Google Cloud 控制台中啟用 Cloud Shell。
Google Cloud 主控台底部會開啟一個 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已針對您目前的專案設定好相關值。工作階段可能要幾秒鐘的時間才能初始化。
在開發環境中執行
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 掛接區域 bucket
事前準備
本節假設您已可存取 Cloud Storage FUSE。如果尚未完成下列必要步驟,請先執行:
- 安裝 Cloud Storage FUSE。 請務必安裝 Cloud Storage FUSE 3.4.0 以上版本。
- 驗證 Cloud Storage FUSE 要求。
- 如果您未建立要掛接的值區,請取得掛接值區所需的角色。
如要使用 Cloud Storage FUSE 掛接區域 bucket,請使用下列指令:
mkdir MOUNT_POINTgcsfuse BUCKET_NAME MOUNT_POINT
更改項目:
MOUNT_POINT,這是要掛接 bucket 的本機目錄。例如:$HOME/example-bucket。BUCKET_NAME替換為要掛接的值區名稱。
舉例來說,下列指令會將名為 example-rapid-storage-bucket 的值區掛接至 source-bucket 掛接點:
mkdir $HOME/source-bucketgcsfuse example-rapid-storage-bucket $HOME/source-bucket
如要將現有 bucket 中的物件轉移至區域 bucket,請掛接這兩個 bucket,然後使用 cp 指令轉移物件。
使用 FIO 測試基準化效能
如要測試區域值區的速度,請執行 FIO 測試。
Google Kubernetes Engine
下列指令會將設定套用至 Google Kubernetes Engine 叢集,針對 Cloud Storage bucket 執行 FIO 測試。bucket 會使用 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 VM
下列操作說明會在 Compute Engine VM 上執行 FIO 測試。
- 使用 Cloud Storage FUSE 掛接快速儲存空間:
mkdir $HOME/rapid-mnt
gcsfuse --max-retry-attempts=5 <bucket-name> PATH
更改項目:
PATH,並將其替換為要掛接值區的本機檔案系統路徑。
- 如果尚未安裝 FIO,請安裝:
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get install fio -y
- 執行 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 移轉服務轉移資料
您可以使用 Storage 移轉服務,在區域 bucket 和其他 Cloud Storage bucket 之間移轉資料。
所需權限
在 Cloud Storage bucket 之間轉移資料時,需要無代理程式轉移權限中列出的 IAM 角色。
此外,由於區域值區使用階層式命名空間,因此必須授予 Storage 移轉服務服務代理下列 IAM 權限:
如果來源是可用區值區:
- 使用「無代理程式轉移權限」中列出的預先定義角色時,無須採取其他動作。Storage 物件檢視者 (
roles/storage.objectViewer) 角色已包含必要權限 (storage.folders.list)。
- 使用「無代理程式轉移權限」中列出的預先定義角色時,無須採取其他動作。Storage 物件檢視者 (
如果目的地是區域值區:
- 您必須將「Storage 物件使用者」角色 (
roles/storage.objectUser) 授予服務代理。這樣做可提供必要的storage.folders.create權限。
- 您必須將「Storage 物件使用者」角色 (
如需將角色新增至服務代理程式的操作說明,請參閱:
限制
支援的轉移方式:
- 系統支援在區域 bucket 與任何其他 Cloud Storage 位置的 bucket 之間進行轉移,包括其他區域 bucket。
不支援的功能:
- 以事件為依據的轉移作業
- 跨 bucket 複製
- 透過代理程式移轉
未完成的物件:
- 從區域值區轉移未完成的物件時,目的地值區中的資料可能不會反映轉移作業進行期間對物件所做的變更。
- 目標值區中未完成的來源物件會標示為已完成。
建立移轉作業
如要開始使用,請參閱「使用 Storage 移轉服務建立移轉作業」。