전자책 출간 알림 [마이크로서비스패턴 쉽게 개발하기]

티스토리 뷰

Stratis를 이용한 로컬스토리지관리와 VDO를 이용한 압축과 중복제거를 통한 스토리지 공간 최적화에 대해 학습합니다.

Stratis를 이용한 유연한 스토리지 관리

Stratis는 LVM보다 더 편하게 스토리지를 관리할 수 있는 솔루션입니다.

주요 기능은 아래와 같습니다.

- Thin프로비저닝: 사용한만큼만 File system에 volume이 할당됩니다. 반면에 LVM은 Thick 프로비저닝이기 때문에 File system을 만들때 고정 용량이 할당됩니다.

- snapshot: 스토리지 백업 기능

- 캐싱

- 그외: RAID논리장치, 다중 경로 지정, 중복 제거, 가상 시스템 및 컨테이너 지원

 

1) 개념적 구성

물리적 block device를 바로 Pool로 만듭니다. 즉, LVM처럼 Partitioning->PV생성->VG생성의 단계를 거칠 필요 없이, 바로 Pool을 만듭니다.

LVM의 VG에서 LV를 만들듯이, Pool에서 File system을 만듭니다. 이때 용량을 미리 지정하지 않습니다. thin provisioning되기 때문에 File system에 사용량만큼 자동으로 volume이 늘어납니다. 그런데, 사용량이 줄면 volume이 자동으로 줄어들진 않습니다.

 

2) Stratis Layers

User관점에서는 block device, pool, file system layer가 있습니다.

Internal 관점에서는 Backstore, Thinpool Layer로 구성됩니다.

* dm은 Device Mapper의 약자입니다.

 

3) Stratis 설치

stratis-cli와 stratisd를 설치하여야 합니다.

stratis-cli는 CLI툴이고, stratisd가 CLI를 통한 요청을 처리하는 데몬입니다.

$ yum install -y stratis-cli stratisd

$ systemctl enable stratisd --now
$ systemctl status stratisd

stratis-cli의 버전
$ stratis --version
1.0.0

stratisd의 버전
$ stratis daemon version
1.0.3

* 참고: 2020-08-28일 현재 최신버전은 둘다 2.0.0입니다.

 

4) 명령어

stratis pool {create, list, rename, add-data, add-cache, destroy}

stratis fs {create, list, rename, snapshot, destroy}

stratis blockdev {list}

stratis daemon {list, redundancy}

 

5) Pool 생성, File system 생성 실습

- block device를 확인합니다.

/dev/vdb,vdc,vdd가 있습니다.

- pool을 생성합니다.

 

- pool에 block device를 추가합니다.

block device가 어떤 pool에 있는지와 같은 정보를 보려면 stratis blockdev list명령을 이용하십시오.

 

- file system을 생성합니다.

 

- file system을 마운트합니다.

a) UUID를 구합니다.

또는

주의할점은 stratis fs list에서 나오는 UUID를 사용하면 안된다는 겁니다.

 

b) /etc/fstab에 추가합니다.

4번째 옵션컬럼에 반드시 x-systemd.requires=stratisd.service를 추가해야 합니다. 그래야 부팅시에 stratisd를 이용하여 마운트를 합니다.

 

c) 마운트 대상 디렉토리를 만들고, mount시킵니다.

 

영구적으로 설정되었는지 확인하려면, systemctl daemon-reload하고 reboot합니다.

$ systemctl daemon-reload
$ reboot

 

- 마운트한 디렉토리에 파일을 생성하여, 동적으로 File system size가 커지는것을 확인합니다.

a) 2G짜리 파일을 만듭니다.

$ dd if=/dev/urandom of=/data1/dummy bs=1M count=2048

b) file system의 size를 확인합니다.

 

- 마운트한 디렉토리에 파일을 삭제하여, 동적으로 File system size가 줄어드는것을 확인합니다.

자동으로 줄어들지는 않네요.

 

6) snapshot 생성

snapshot은 스토리지를 백업하는 기능입니다. stratis를 이용하면 쉽게 snapshot을 만들 수 있습니다.

a) snapshot 생성: stratis fs snapshot <pool> <source file system> <target file system>

$ stratis fs snapshot pool1 fs1 fs1_snap_20200828
$ stratis fs list

b) mounting

아래와 같이 /data1의 파일들이 백업되어 있는것을 볼 수 있습니다.

 

 

7) file system, pool 삭제

file system을 삭제하려면 먼저 umount로 mounting을 해제해야 합니다.

$ umount /data1 /data1_20200828
$ ls -al /data1

 

그리고, file system을 삭제한 후 pool을 삭제할 수 있습니다.

 

VDO를 이용한 스토리지 공간 최적화

VDO(Virtual Data Optimizer)는 제로블록제거, 중복제거, 압축을 통해 스토리지 공간을 최적화해주는 툴입니다.

VDO에 대한 자세한 설명은 아래 링크를 참조하세요 .

www.slideshare.net/secret/2MPGSylcAnoGZz

 

1) VDO 기능

VDO 기능

[출처] 제7회 난공불락 인프라 세미나 by 권진영(gc757489@qluesys.com)

VM, 컨테이너, 공유디렉토리에서는 매우 높은 중복제거율을 보입니다.

단점으로는 성능이 30~40%떨어진다는 것인데, 백업과 같이 성능이 크게 중요하지 않은 스토리지에는 충분히 사용할 수 있을것 같습니다.

2) VDO 생성 구조

VDO는 아래와 같이 여러 유형으로 생성될 수 있습니다. VDO 볼륨을 이용하여 LVM볼륨을 만들 수도 있습니다.

 

3) VDO 설치

vdo와 kmod-kvdo를 설치해야 합니다. daemon으로 실행할건 없습니다.

 

4) VDO 명령

주요 명령만 설명합니다. 전체 명령은 vdo -h를 이용하십시오.

- VDO볼륨 생성: vdo create -n <volume name> --device <block device> --vdoLogicalSize <megabytes>

- VDO볼륨 리스트: vdo list

- VDO볼륨 상태: vdo status -n <volume name>

- VDO옵션 조정: vdo {enableCompression,disableCompression, enableDeduplication, disableDeduplication} -n <volume name>

- VDO볼륨 삭제: vdo remove -n <volume name>

- VDO볼륨 통계 보기 : vdostats {--human-readable, --verbose} <volume path> 

 

5) VDO Volume 생성

a) lsblk로 사용 가능한 block device를 구합니다.

b) VDO volume을 생성합니다. 논리볼륨사이즈를 50G로 합니다.

$ vdo create -n vdo1 --device /dev/vdb --vdoLogicalSize 50G

device명의 경로는 /dev/<volume>이 아니라 /dev/mapper/<volume>입니다.

c) File system을 생성합니다.

 

d) mount를 합니다.

영구설정하려면 /etc/fstab에 추가합니다.

이때도 옵션으로 x-systemd.requires=vdo.service를 반드시 추가해 줘야 합니다.

/dev/mapper/vdo1 /mnt/vdo1 xfs defaults,x-systemd.requires=vdo.service 0 0 

 

e) 중복제거, 압축 옵션을 확인합니다.

이 옵션들은 기본으로 enable 되어 있습니다.

만약, disable 되어 있으면 vdo enableCompression , vdo enableDeduplication으로 활성화 합니다.

 

6) VDO Volume의 스토리지 최적화 테스트

똑같은 파일의 복사본을 마운트된 디렉토리에 복사하여 디스크 절약율을 봅니다.

a) 약 4G의 파일을 복사하고, 사용량과 Saving률을 봅니다.

 

b) 똑같은 파일의 사본을 복사하고, 다시 체크합니다.

동일한 파일이므로, 중복 제거 및 압축이 되어 사용량은 변하지 않고 Saving율만 47%로 올라 갑니다.

 

7) VDO 볼륨 삭제

먼저 unmount를 하고 나서 삭제할 수 있습니다.

댓글

전자책 출간 알림 [마이크로서비스패턴 쉽게 개발하기]