영역 버킷 만들기

이 페이지에서는 다음 작업을 수행하는 방법을 설명합니다.

영역에서 버킷 만들기

시작하기 전에

아직 버킷을 만드는 데 필요한 역할을 가져오지 않았다면, 가져옵니다.

콘솔

  1. Google Cloud 콘솔에서 Cloud Storage 버킷 페이지로 이동합니다.

    버킷으로 이동

  2. 만들기를 클릭합니다.
  3. 버킷 만들기 페이지에서 버킷 정보를 입력합니다. 다음 각 단계를 완료한 후 계속을 클릭하여 다음 단계로 진행합니다.
    1. 시작하기 섹션에서 다음을 수행합니다.

    2. 데이터 저장 위치 선택 섹션에서 다음을 수행합니다.

      1. 위치 유형으로 영역선택합니다.

      2. 위치 유형의 드롭다운 메뉴를 사용하여 버킷 내 객체 데이터가 영구적으로 저장될 위치 를 선택합니다.

    3. 데이터 저장 방법 선택 섹션에서 Rapid 스토리지가 기본 스토리지 클래스로 선택됩니다.

    4. 객체 액세스를 제어하는 방식 선택 섹션에서 버킷이 공개 액세스 방지를 적용할지 여부를 선택하고 버킷의 객체에 대한 액세스 제어 모델을 선택합니다.

    5. 객체 데이터가 암호화되는 방식을 선택하려면 확장 화살표를 클릭하고 데이터 암호화라는 라벨이 표시된 데이터 암호화 방법을 선택합니다.

  4. 만들기 를 클릭합니다.

명령줄

  1. 콘솔에서 Cloud Shell을 활성화합니다. Google Cloud

    Cloud Shell 활성화

    콘솔 하단에 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Google Cloud Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

  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

    다음을 바꿉니다.

    요청이 성공하면 명령어에서 다음과 같은 메시지를 반환합니다.

    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

다음 명령어는 Cloud Storage 버킷에 대해 FIO 테스트를 실행하는 Google Kubernetes Engine 클러스터에 구성을 적용합니다. 버킷 은 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 테스트를 실행합니다.

  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 권한이 부여되어야 합니다.

서비스 에이전트에 역할을 추가하는 방법은 다음을 참조하세요.

제한사항

  • 지원되는 전송:

    • 영역 버킷과 다른 영역 버킷을 포함한 다른 Cloud Storage 위치의 버킷 간에 전송이 지원됩니다.
  • 지원되지 않는 기능:

    • 이벤트 기반 전송
    • 버킷 간 복제
    • 에이전트 기반 전송
  • 최종 확정되지 않은 객체:

    • 영역 버킷에서 최종 확정되지 않은 객체를 전송할 때 대상 버킷의 데이터는 전송이 진행되는 동안 객체에 적용된 변경사항을 반영하지 않을 수 있습니다.
    • 최종 확정되지 않은 소스 객체는 대상 버킷에서 최종 확정된 것으로 표시됩니다.

전송 만들기

시작하려면 Storage Transfer Service로 전송 만들기를 참조하세요.

다음 단계