OS [Storage / Filesystem] VDO(Virtual Data Optimizer)란 무엇인가?
페이지 정보
작성자 osgusu 아이디로 검색 전체게시물 댓글 0건 조회 1,343회 좋아요 0회 작성일 23-07-23 14:59본문
- VDO(Virtual Data Optimizer)는 Red Hat 리눅스에서 데이터 압축 및 중복제거를 수행하는 툴입니다. 중복제거란 데이터를 블록 단위로 나누어서 중복되는 블록 중 하나만 저장하는 기술로 실제 저장되는 데이터를 극단적으로 줄일 수 있습니다.
그림으로 설명하자면 아래와 같습니다.
. Reduce zero blocks : 제로가 아닌 데이터 블록 만 수집
. Eliminates 4KB duplicate blocks : Data의 중복성은 VDO에서 제공되는UDS 커널 모듈에서 유지 관리
. Compresses remaining blocks : LZ4 압축이 개별 데이터 블록에 적용 압축된 Data블록은 고정 길이(4KB) 포장되어 미디어에 저장
Ø 이번에는 레이어를 그림으로 설명 하자면 아래와 같습니다.
. 우리가 기존에 사용하던 LVM 이전에 만들어줘야합니다. 그리고 기존과 동일하게 LVM -> FS -> 마운트 하여 사용하면됩니다.
쉽게 설명하여 레이어가 한 단계 더 생긴것입니다.
>>>> 좀 더 자세히 알아가보도록 하겠습니다.
. VDO 사용 모드에는 2가지 방법이 있습니다.
(1) 'sync' 모드: VDO 장치에 대한 쓰기가 기본 스토리지가 작성되었을 때 ack되어 데이터를 영구적으로 기록합니다.
그런 다음 중복 제거/압축이 완료됩니다.
(2) 'async' 모드: 영구 저장소에 쓰기 전에 쓰기가 승인됩니다. VDO는 async 모드에서도 위 계층의 플러시 요청을 따릅니다. 따라서 async 모드는 휘발성 쓰기 되돌림 캐시가 있는 다른 장치와 동일하게 데이터를 안전하게 처리할 수 있습니다.
(3) 'auto' 모드: 기본값이며, 기본 스토리지의 기능에 따라 'async' 또는 ''sync' 선택
Ø >>>>>> 그럼 이제 실제로 VDO 테스트를 해 보도록하겠습니다.
1. 1. VDO 설치
# dnf install vdo kmod-kvdo
# systemctl enable --now vdo
# vdo create --device /dev/vdb1 --vdoLogicalSize 200G --name vdo1
Creating VDO vdo1
The VDO volume can address 96 GB in 48 data slabs, each 2 GB.
It can grow to address at most 16 TB of physical storage in 8192 slabs.
If a larger maximum size might be needed, use bigger slabs.
Starting VDO vdo1
Starting compression on VDO vdo1
VDO instance 0 volume is ready at /dev/mapper/vdo1
-----------------------------------------------------------------------
✓ 단일 물리 볼륨 용량은 최대 256TB
✓ 단일 논리 볼륨 용량 제약은 최대 4PB
-----------------------------------------------------------------------
2. 2. LVM 및 파일시스템 단계
# pvcreate /dev/mapper/vdo1
Physical volume "/dev/mapper/vdo1" successfully created.
# vgcreate testvg /dev/mapper/vdo1
Volume group "testvg" successfully created
# lvcreate -l 100%FREE -n testlv testvg
Logical volume "testlv" created.
# mkfs.xfs -K /dev/testvg/testlv
. mkfs 명령과 함께 사용되는 "-K"는 파일 시스템 생성 시 블록 폐기 요청을 전송하지 않음으로써 XFS 파일 시스템의 포맷 속도를 높인다. VDO 볼륨이 방금 생성되었기 때문에 이미 0으로 초기화되었습니다.
3. 3. 마운트 단계
# vi /etc/fstab
/dev/testvg/testlv /mnt/testlv xfs defaults,_netdev,x-systemd.device-timeout=0,x-systemd.requires=vdo.service 0 0
# mount -a
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/testvg-testlv 200G 1.5G 199G 1% /mnt/testlv
/dev/mapper/nonevdo-nonevdo 100G 746M 100G 1% /mnt/nonevdo
# vdo status | egrep 'Deduplication|Compression|write policy'
Compression: enabled
Configured write policy: auto
Deduplication: enabled
write policy: async
# vdostats --human-readable
Device Size Used Available Use% Space saving%
/dev/mapper/vdo1 100.0G 4.1G 95.9G 4% N/A
The output of "vdostats -- hu" shows:
User available space (in my case, 95.9GB)
UDS metadata space (in my case, 4.1GB)
Storage savings (in my case, 99%)
4. 4. VDO 사용해보기 - 기능 테스트 단계
중복 제거 테스트 : 1G테스트 파일을 총 5개 생성합니다
# cd /mnt/testlv
# dd if=/dev/urandom of=dd.file1 count=1024 bs=1024k
# dd if=/dev/urandom of=dd.file2 count=1024 bs=1024k
# dd if=/dev/urandom of=dd.file3 count=1024 bs=1024k
# dd if=/dev/urandom of=dd.file4 count=1024 bs=1024k
# dd if=/dev/urandom of=dd.file5 count=1024 bs=1024k
# df -hP
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/testvg-testlv 200G 6.5G 194G 4% /mnt/testlv
# vdostats --human-readable
Device Size Used Available Use% Space saving%
/dev/mapper/vdo1 100.0G 9.1G 90.9G 9% 1%
Ø 파일을 100개 만들어 보겠습니다.
# for i in {1..100}; do cp -v dd.file1 cp.file$i; done
'dd.file1' -> 'cp.file1'
'dd.file1' -> 'cp.file2'
'dd.file1' -> 'cp.file3'
'dd.file1' -> 'cp.file4'
'dd.file1' -> 'cp.file5'
………….
………..
# df -hP
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/testvg-testlv 200G 107G 94G 54% /mnt/testlv
/dev/mapper/nonevdo-nonevdo 100G 100G 20K 100% /mnt/nonevdo
. df 명령어로 보면 100가 늘어난것을 확인됩니다.
# vdostats --human-readable
Device Size Used Available Use% Space saving%
/dev/mapper/vdo1 100.0G 9.3G 90.7G 9% 97%
. 하지만 실제로 vdostats로 보면 큰 변화가 없습니다. 그이유는 중복된 파일은 늘어나지 않는것입니다.
쉽게 VDO의 기능에 대해 알수있게 되었습니다.
그럼 성능은???? 어떻게 될까요???
File system backend
|
Deploy to file system
|
Copy on file system
|
XFS onto of normal LVM volume
|
28 sec
|
35 sec
|
XFS on VDO device, async mode
|
55 sec
|
58 sec
|
XFS on VDO device, sync mode
|
71 sec
|
92 sec
|
. VDO에 쓰는 속도는 일반 백엔드보다 느립니다. 여기 백엔드는 하드디스크였고, 예를 들어 SSD를 백엔드로 사용할 경우 그 영향은 더 낮습니다.
. 테스트를 통해 확인했을 때 VM이나 컨테이너의 경우 가장 높은 중복제거율을 볼 수 있었고 그림 파일, 오피스파일 등에서는 낮은 중복제거율을 볼 수 있었습니다.
그럼 VDO을 어디에 사용하면 좋을까요?? 고민해봤습니다.
. 사실 VDO는 레드햇이 제공은 하지만 Technology Preview 이기때문에 기술지원은 되지 않습니다.
그래서 운영에 사용하고자 한다면 저는 로그, 소스, 백업데이터 저장용으로 사용하기에 용이할것으로 생각이 되어집니다.
[VDO 장.단점]
장점 : 중복 제거 및 압축 기능을 이용하여 스토리지 공간 활용도가 높아지며, 주로 VM 및 컨테이너환경에서 높은 효율
단점 : 일반적인 스토리지에 비해 성능 저하가 발생
혹, 이와관련하여 궁금한점 있으시면 QnA게시판을 통해 질문 해주시면 성심성의껏 답변 드리도록 하겠습니다 .
긴글 읽어 주셔서 감사합니다.
참고한 링크:
https://www.slideshare.net/GlusterCommunity/data-reduction-for-gluster-with-vdo
댓글목록
등록된 댓글이 없습니다.