본문으로 건너뛰기

블록 스토리지

개요

블록 스토리지는 가상머신에 디스크처럼 연결하는 영구 스토리지입니다. 가상머신을 삭제해도 데이터가 유지되며, 다른 가상머신에 재연결할 수 있습니다.

블록 스토리지는 가상머신 삭제 후에도 계속 과금됩니다

가상머신을 삭제해도 연결된 블록 스토리지는 유지되며 삭제 전까지 과금됩니다. 불필요한 스토리지는 직접 삭제해야 합니다. 디스크 연결 해제 및 삭제를 참고하세요.


성능 스펙

지표스펙
대역폭170 GiB 미만: 최대 128 MiB/s · 170 GiB 이상: 최대 250 MiB/s
IOPS디스크 크기 1 GiB당 3 IOPS · 최소 100, 최대 16,000 IOPS · 1 IOPS는 최대 256 KiB
버스트 성능최대 3,000 IOPS로 1,800초 지속

블록 스토리지 생성

  1. 좌측 메뉴 블록 스토리지 > 블록 스토리지 목록에서 블록 스토리지 생성을 클릭합니다.

  2. 아래 항목을 설정합니다.

    항목설명
    블록 스토리지 이름식별 가능한 이름 (1~256자)
    스토리지 크기 (GiB)필요한 용량. 최소 10 GiB, 최대 32,768 GiB (32 TiB). 이미지 기반 생성 시 이미지 원본 크기 이상이어야 함
    영역가상머신과 동일한 영역 선택
    디스크 타입빈 디스크 (데이터 전용) / 이미지 (부팅 가능 OS 디스크) / 스냅샷 (기존 스냅샷에서 복원)
    재해 복구다른 영역에 자동 복제 (단가 더 높음)
  3. 생성을 클릭합니다.

재해 복구 설정은 가상머신과 일치해야 합니다

가상머신이 재해 복구로 생성된 경우 연결할 블록 스토리지도 재해 복구가 켜져 있어야 합니다 (불일치 시 machineDrMismatch 에러). 마찬가지로 일반 가상머신에는 일반 블록 스토리지만 연결할 수 있습니다.


기존 디스크 용량 늘리기 (리사이즈)

작업 전 가상머신을 중지해야 합니다

연결된 가상머신이 대기중 상태일 때만 수정할 수 있습니다.

  1. 대상 가상머신을 중지합니다.
  2. 블록 스토리지 목록에서 대상 스토리지를 선택합니다.
  3. 수정 버튼을 클릭합니다.
  4. 스토리지 크기 (GiB) 값을 늘려 입력합니다 (크기 감소는 불가).
  5. 저장을 클릭하고 상태가 준비됨으로 바뀌는지 확인합니다.
  6. 가상머신을 다시 실행합니다.
  7. 가상머신 접속 후 파일시스템 확장을 확인합니다.
df -h
# /dev/vda1 크기가 늘어났는지 확인

파일시스템은 재시작 후 자동으로 확장됩니다.


새 디스크 추가 연결

기존 OS 디스크 외에 데이터 전용 디스크를 추가로 연결할 수 있습니다. 가상머신 하나에 데이터 디스크는 최대 31개까지 연결할 수 있습니다.

데이터 디스크는 가상머신이 실행 중이어도 연결·해제할 수 있습니다

가상머신을 중지하지 않고 바로 작업할 수 있습니다. 단, 부팅 디스크는 가상머신을 중지한 뒤에만 해제할 수 있습니다.

1단계: 빈 블록 스토리지 생성

디스크 타입을 빈 디스크 로 선택해 데이터 전용 디스크를 생성합니다.

2단계: 가상머신에 연결

  1. 생성한 블록 스토리지 상세 페이지에서 수정을 클릭합니다.
  2. 연결된 머신 ID 필드에서 연결할 가상머신을 선택합니다.
  3. 저장을 클릭합니다.

3단계: 마운트

가상머신이 실행 중이면 저장 직후 디스크가 나타납니다. 중지 상태였다면 실행한 뒤 SSH로 접속하세요. 연결된 디스크에는 파일시스템이 없어 그대로 사용할 수 없으므로, 아래 다섯 단계로 사용 가능한 상태로 만듭니다.

아래 각 단계에서 나오는 출력은 예시입니다

Ubuntu 24.04 가상머신에 10 GiB 디스크를 연결해 실행한 결과입니다. 장치명, UUID, 용량, 블록 수, mke2fs 버전은 환경마다 다르므로 값이 그대로 일치하지 않아도 정상입니다. 확인할 부분은 각 출력 아래에 적어두었습니다.

1. 대상 디스크 확인

어떤 장치가 이번에 연결한 디스크인지 확인합니다. 이후 명령에 쓸 장치명을 여기서 얻습니다.

lsblk -o NAME,SERIAL,SIZE,FSTYPE,MOUNTPOINT
출력 예시
NAME SERIAL SIZE FSTYPE MOUNTPOINT
vda ECI-OS-DISK 20G
├─vda1 19G ext4 /
├─vda15 106M vfat /boot/efi
└─vda16 913M ext4 /boot
vdb ECI-CLOUDINIT-DISK 16M vfat
vdc ECI-DISK-9c9e89921b0 10G ← 추가한 데이터 디스크

디스크는 SERIAL 칸으로 구분합니다.

SERIAL디스크
ECI-DISK- 로 시작사용자가 추가한 데이터 디스크. 뒤에 블록 스토리지 ID의 앞부분이 이어집니다
ECI-OS-DISKOS 디스크 — ⚠️ 포맷하지 마세요
ECI-CLOUDINIT-DISK가상머신 초기 설정에 사용되는 디스크 — ⚠️ 포맷하지 마세요

FSTYPE·MOUNTPOINT가 비어 있다는 것만으로 고르면 OS 디스크를 잘못 지정할 수 있습니다. 위 예시의 vda 행도 두 칸이 비어 있습니다. 이후 명령에 넣는 값은 SERIAL이 아니라 NAME 칸의 장치명이므로, 이 예시라면 {new-disk-name} 자리에 vdc 를 넣습니다.

디스크가 보이지 않으면 가상머신을 재시작하세요

연결한 뒤에도 lsblk에 나타나지 않으면 가상머신을 중지했다가 다시 시작하세요. 재시작한 뒤에는 실행 중에도 바로 연결됩니다. 자세한 내용은 디스크를 연결했는데 보이지 않아요를 참고하세요.

2. 파일시스템 생성 (포맷)

연결된 디스크는 파일시스템이 없는 원시 블록 장치이므로 그대로는 파일을 저장할 수 없습니다. 파일과 디렉터리, 메타데이터를 관리할 ext4 파일시스템을 생성합니다. 디스크당 최초 1회만 수행합니다.

mkfs는 대상 디스크의 데이터를 모두 지웁니다

아래 예시를 그대로 실행하지 말고, {new-disk-name}을 1번에서 확인한 장치명으로 바꿔 실행하세요. 처음 사용하는 빈 디스크에만 실행하세요.

1번에서 FSTYPEext4 같은 값이 보였다면 이미 포맷된 디스크입니다. 기존에 쓰던 디스크를 다시 연결한 경우이므로 이 단계를 건너뛰고 3번 마운트로 가세요. 여기서 mkfs를 실행하면 디스크의 데이터가 모두 사라집니다.

sudo mkfs.ext4 /dev/{new-disk-name}
출력 예시
mke2fs 1.47.0 (5-Feb-2023)
Discarding device blocks: done
Creating filesystem with 2617344 4k blocks and 655360 inodes
Filesystem UUID: 87e1e238-6a9a-45fb-8ccf-d39a4342aaf2
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

마지막 줄이 done으로 끝나면 파일시스템이 정상적으로 생성된 것입니다. Filesystem UUID는 포맷할 때마다 새로 만들어지므로 매번 다른 값이 나옵니다.

3. 마운트

만든 파일시스템을 /data 경로에 연결해, 그 경로에 파일을 읽고 쓸 수 있게 합니다. mount는 연결할 디렉터리가 미리 있어야 하므로 먼저 만듭니다.

sudo mkdir -p /data
sudo mount /dev/{new-disk-name} /data
df -h /data
출력 예시
Filesystem Size Used Avail Use% Mounted on
/dev/vdc 9.8G 24K 9.3G 1% /data

Mounted on/data로 나오면 정상입니다.

처음 포맷한 디스크의 최상위 디렉터리는 root 소유입니다. 일반 사용자 계정으로 파일을 만들면 Permission denied가 나므로, 매번 sudo를 붙이지 않으려면 소유자를 바꿔 두세요. 바꾼 소유자는 디스크에 기록되므로 재부팅하거나 다시 마운트해도 유지됩니다.

sudo chown $USER:$USER /data

4. 재부팅 시 자동 마운트 등록

3번의 마운트는 재부팅하면 풀립니다. 부팅할 때마다 자동으로 다시 마운트되도록 /etc/fstab에 등록합니다. 장치명은 연결 순서에 따라 달라질 수 있으므로 UUID로 등록하고, nofail을 넣으면 디스크를 연결 해제한 상태로 재부팅해도 부팅이 멈추지 않습니다.

UUID=$(sudo blkid -s UUID -o value /dev/{new-disk-name})
echo "UUID=$UUID /data ext4 defaults,nofail 0 2" | sudo tee -a /etc/fstab
출력 예시
UUID=87e1e238-6a9a-45fb-8ccf-d39a4342aaf2 /data ext4 defaults,nofail 0 2

tee가 방금 추가한 줄을 그대로 출력합니다.

5. 설정 확인

/etc/fstab에 오타가 있으면 재부팅할 때 드러나고, 그때는 접속이 막혀 복구가 번거롭습니다. 등록한 내용이 유효한지 지금 확인합니다.

sudo mount -a

아무것도 출력되지 않으면 정상입니다.

여기까지 마치면 /data 아래에 저장하는 파일이 추가한 디스크에 기록되며, 재부팅해도 자동으로 마운트됩니다.


디스크 연결 해제 및 삭제

연결 해제(detach)는 가상머신에서 디스크를 분리할 뿐이며 과금은 계속됩니다. 과금을 멈추려면 삭제까지 진행해야 합니다.

삭제한 블록 스토리지는 복구할 수 없습니다

필요한 데이터는 삭제 전에 스냅샷으로 백업하세요.

1단계: 가상머신에서 마운트 해제

분리하기 전에 반드시 가상머신 안에서 먼저 정리해야 합니다. 마운트된 상태로 분리하면 기록 중이던 데이터가 유실될 수 있습니다. /etc/fstab 항목도 함께 지우세요. nofail로 등록했다면 남겨둬도 부팅은 정상 진행되지만, 연결되지 않은 디스크의 UUID를 가리키는 항목이 그대로 남습니다. 이후 같은 경로에 다른 디스크를 연결하면 마운트 지점이 중복됩니다.

# 1) 마운트 해제
sudo umount /data

# 2) fstab 등록 제거 — 없는 디스크를 가리키는 항목이 남지 않도록 합니다.
sudo sed -i '\|/data|d' /etc/fstab
target is busy 오류가 나면

해당 디렉터리를 사용 중인 프로세스가 있다는 뜻입니다. 셸의 현재 위치가 /data 안인 경우가 가장 흔하므로 cd /로 빠져나온 뒤 다시 시도하세요. 그래도 안 되면 sudo lsof /data로 사용 중인 프로세스를 확인해 정리하세요. 강제로 분리하면 데이터가 손상될 수 있습니다.

정리가 끝났는지 확인합니다.

findmnt /data
cat /etc/fstab
출력 예시
LABEL=cloudimg-rootfs / ext4 discard,commit=30,errors=remount-ro 0 1
LABEL=BOOT /boot ext4 defaults 0 2
LABEL=UEFI /boot/efi vfat umask=0077 0 1

findmnt가 아무것도 출력하지 않고 /etc/fstab/data 줄이 없으면 정상입니다.

/data는 빈 디렉터리로 남습니다. 파일이 지워진 것이 아니라 디스크가 분리되어 보이지 않을 뿐이며, 다시 마운트하거나 다른 가상머신에 연결하면 그대로 있습니다. 디렉터리가 필요 없으면 sudo rmdir /data로 지우세요.

2단계: 가상머신에서 연결 해제

가상머신에서 디스크를 분리합니다. 디스크와 데이터는 그대로 남아 다른 가상머신에 다시 연결할 수 있습니다.

  1. 블록 스토리지 상세 페이지에서 수정을 클릭합니다.
  2. 연결된 머신 ID 필드를 비웁니다.
  3. 저장을 클릭합니다.

데이터 디스크는 가상머신이 실행 중이어도 해제할 수 있습니다. 부팅 디스크는 가상머신을 중지한 뒤에만 해제할 수 있습니다.

가상머신에서 디스크가 분리되었는지 확인합니다.

lsblk -o NAME,SERIAL,SIZE,FSTYPE,MOUNTPOINT

해제한 디스크의 행(SERIALECI-DISK-로 시작하는 행)이 목록에서 제외되면 분리가 완료된 것입니다. 목록에 남아 있다면 콘솔의 저장이 아직 반영되지 않은 상태이므로, 처리가 끝난 뒤 다시 실행하세요.

3단계: 블록 스토리지 삭제

디스크와 데이터를 완전히 제거해 과금을 중단합니다. 디스크를 계속 보관하려면 이 단계를 생략하세요.

  1. 블록 스토리지 목록에서 대상 스토리지를 선택합니다.
  2. 삭제를 클릭하고, 확인을 위해 스토리지 이름을 입력합니다.

삭제가 완료되면 과금이 중단됩니다.

연결된 상태에서 바로 삭제할 수도 있습니다

삭제 창에서 확인 버튼이 연결 해제 후 삭제로 바뀌며, 연결 해제와 삭제가 순서대로 실행됩니다. 이 경우에도 1단계 마운트 해제는 먼저 해두세요.

다만 가상머신이 실행 중이라면 중지한 뒤 삭제하세요. 실행 중에는 연결 해제가 비동기로 처리되어 삭제와 경합할 수 있습니다. 자세한 내용은 자원 삭제 FAQ를 참고하세요.


스냅샷으로 백업

블록 스토리지의 특정 시점을 스냅샷으로 저장할 수 있습니다.

  • 블록 스토리지 상세 페이지에서 스냅샷 생성 버튼을 클릭합니다.
  • 스냅샷에서 새 볼륨을 생성해 복원하거나 다른 가상머신에 연결할 수 있습니다.

자세한 내용은 스냅샷을 참고하세요.


다음 단계