*NHN Cloud, 사용자 가이드를 읽으며 학습 및 실습 기록을 위하여 작성함.
블록 스토리지(Block Storage)
인스턴스 기본 디스크 외에 추가로 연결하여 사용할 수 있는 가상의 디스크.
(서버에 추가로 디스크를 장착하는 것과 비슷하게 이해하면 쉬움)
1.상세 내용
- 연결된 인스턴스를 삭제해도 블록 스토리지는 삭제되지 않는다.
- 블록 스토리지는 여러 개의 인스턴스에서 동시에 연결하여 사용할 수 있다.
- 연결이 해제된 블록 스토리지는 다른 인스턴스에 연결하여 사용할 수 있다.
- 블록 스토리지는 동일 프로젝트 내에 같은 가용성 영역(AZ, Availability Zone) 안에 있는 인스턴스에만 연결할 수 있다.
(중요 및 주의 사항)
※ "복제" 기능을 통해 다른 리전(Region), 다른 가용성 영역(AZ) 으로 블록스토리지를 복제할 수 있다.
※ 복제 기능은 일회성이며 그 이후 원본 블록 스토리지의 변동 사항은 반영되지 않는다.
※ 복제를 진행하려면 스토리지 내 최소 100KB 이상의 여유 공간이 필요하다.
2.활용
- 기본 디스크의 저장 공간이 부족할 때 블록 스토리지를 추가로 장착하여 인스턴스의 저장 공간을 늘일 수 있다.
- 인스턴스를 삭제하기 전에 인스턴스의 기본 디스크에 있는 데이터를 영구 보관하기 위해 블록 스토리지를 장착하고 데이터를 복사할 수 있다.
3. 작업 순서
(1) 블록 스토리지를 생성.
(2) 대상 인스턴스에 연결.
(3) 블록 스토리지 파티션 작업, 포맷, 마운트
블록 스토리지는 인스턴스 실행 중에도 연결할 수 있습니다. 연결된 블록 스토리지는 빈 디스크이므로 사용하기 전에 인스턴스의 운영체제에 따라 파티션 작업, 포맷, 마운트 작업을 직접 진행해야 한다.
4. 실습 - Linux Instance
(1) 블록 스토리지를 생성.
(2) 대상 인스턴스에 연결
(3) 블록 스토리지 파티션 작업, 포맷, 마운트
* root 권한으로 진행해야 함.
(3-1) 연결된 블록 스토리지 확인
$ lsblk
블록 스토리지가 인스턴스에 연결되면 빈 디스크 장치로 등록됩니다. 등록된 디스크 목록은 리눅스의 lsblk 명령어로 확인할 수 있습니다
(3-2) 파티션 작업
$ fdisk /dev/vde
다음와 같이 fdisk 유틸리티를 이용하여 디스크 전체를 파티션 하나로 만듭니다. 필요에 따라 디스크 하나를 여러 파티션으로 나눌 수도 있습니다.
(3-3) 파티션 생성 확인.
$ lsblk
(3-4) 파티션 포맷.
$ mkfs -t ext4 /dev/vde1
vdb 디스크에 vdb1이라는 파티션이 생성된 것을 확인할 수 있습니다.
Linux에서는 mkfs 명령어를 사용합니다. 파티션을 포맷할 때 반드시 사용할 파일 시스템을 지정해야 합니다.
(3-5) 디스크 마운트
파일 시스템까지 만든 디스크에는 마운트 과정을 거쳐야 접근 가능.
간편하게 mount 명령어로 디스크를 마운트할 수 있으나 인스턴스가 재부팅될 경우, 마운트 해제(umount) 된다.
( $ mount /dev/vde1 /mnt )
/etc/fstab 파일에 마운트 할 디스크를 기술하여 인스턴스 부팅 과정에서 자동으로 마운트 되도록 한다.
(3-5-1) 마운트 할 디스크의 장치 고유 ID 확인.
$ blkid /dev/vde1
(3-5-2) 마운트 할 대상 디렉토리 생성
$ mkdir -p /mnt/vde
(3-5-3) /etc/fstab 파일에 마운트 할 디스크를 기술.
$ echo "UUID=a4cf8cd1-55f4-41f4-a039-5f342f1163b1 /mnt/vde ext4 defaults,nodev,noatime,nofail 1 2">>/etc/fstab
* 볼륨 마운트에 실패하더라도 부팅이 될 수 있도록 nofail 옵션 추가.
(3-5-4) /etc/fstab 파일의 내용을 반영.
$ mount -a
(3-5-5) 정상적으로 마운트 되었는지 확인.
$ df -h
스크립트를 이용하여 한 번에 진행하기.
#!/bin/bash
DEVICES=(`lsblk -s -d -o name,type | grep disk | awk '{print $1}'`)
for DEVICE_NAME in ${DEVICES[@]}
do
MOUNT_DIR=/mnt/$DEVICE_NAME
FS_TYPE=ext4
mkdir -p $MOUNT_DIR
echo -e "n\np\n1\n\n\nw" | fdisk /dev/$DEVICE_NAME
PART_NAME="/dev/${DEVICE_NAME}1"
mkfs -t $FS_TYPE $PART_NAME > /dev/null
UUID=`blkid $PART_NAME -o export | grep "^UUID=" | cut -d'=' -f 2`
echo "UUID=$UUID $MOUNT_DIR $FS_TYPE defaults,nodev,noatime,nofail 1 2" >> /etc/fstab
mount -a
done
블록 스토리지 스냅숏
블록 스토리지 스냅숏 기능을 이용하면 사용자가 직접 블록 스토리지의 데이터를 복사하는 것보다 빠르게 블록 스토리지를 백업할 수 있다. 블록 스토리지가 인스턴스에 연결되어 있는 상태에서도 블록 스토리지의 스냅숏을 생성할 수 있지만, 데이터의 정합성과 안정성을 보장하기 위해 인스턴스에서 연결을 해제하고 블록 스토리지 스냅숏을 생성하는 것을 권장.
안정성 향상을 위해 블록 스토리지를 인스턴스에서 연결 해제하기 전에 마운트 해제(umount)를 한다.
블록 스토리지의 스냅숏은 읽기 전용으로 되어 있으므로 인스턴스에 직접 연결하여 사용할 수 없다. 스냅숏을 사용하려면 스냅숏으로부터 블록 스토리지를 생성하고, 생성된 블록 스토리지를 인스턴스에 연결한다.
블록 스토리지 스냅숏을 갖는 블록 스토리지는 삭제할 수 없다. 블록 스토리지를 삭제하려면 그 블록 스토리지의 모든 스냅숏을 해제해야 한다.
1. 실습 - Snapshot 생성하여 블록 스토리지 생성 후 마운트.
(1) 마운트 해제(umount)
(2) 연결 해제(umount) - [Storage] > [Block Storage] 탭에서 진행.
(3) 스냅숏 생성
(4) 스냅숏으로 블록 스토리지 생성. [Storage] > [Snapshot] 에서 진행.
(5) 블록 스토리지 생성 확인
(6) 인스턴스에 연결 후, 마운트하여 데이터 확인.
블록 스토리지 삭제
- 인스턴스에 연결되어 있는 블록 스토리지는 삭제할 수 없습니다. 먼저 연결을 해제합니다.
- 스냅숏을 가지고 있는 블록 스토리지는 삭제할 수 없습니다. 블록 스토리지의 스냅숏을 모두 삭제합니다.
한번 삭제된 블록 스토리지는 다시 복구할 수 없습니다.
의도하지 않은 블록 스토리지로 부팅되는 문제
의도치 않게 추가한 블록 스토리지가 / 에 마운트 될 경우.
Reference
'NHN Cloud' 카테고리의 다른 글
[NHN Cloud(공공기관용)] WAF(Web Application Firewall) SSL VPN 연결 후 SSH 혹은 Web UI 접속 (0) | 2022.06.17 |
---|---|
[NHN Cloud] WAF(Web Application Firewall) (0) | 2022.06.07 |
[NHN Cloud] CentOS 7 인스턴스에 GUI 환경으로 접속. (0) | 2022.05.24 |