31.3.2. VDO Efficiency 테스트
31.3.2.1. 2. VDO 볼륨에 대한 읽기 및 쓰기 테스트
- VDO 볼륨에 32GB의 임의의 데이터를 씁니다.
$ dd if=/dev/urandom of=/mnt/VDOVolume/testfile bs=4096 count=8388608
- VDO 볼륨에서 데이터를 읽고 VDO 볼륨이 아닌 다른 위치에 씁니다.
$ dd if=/mnt/VDOVolume/testfile of=/home/user/testfile bs=4096
diff
을(를) 사용하여 두 파일을 비교합니다. 파일이 동일하다는 것을 보고해야 합니다.$ diff -s /mnt/VDOVolume/testfile /home/user/testfile
- 파일을 VDO 볼륨의 두 번째 위치에 복사합니다.
$ dd if=/home/user/testfile of=/mnt/VDOVolume/testfile2 bs=4096
- 세 번째 파일을 두 번째 파일과 비교합니다. 그러면 파일이 동일하다고 보고해야 합니다.
$ diff -s /mnt/VDOVolume/testfile2 /home/user/testfile
31.3.2.2. 3. VDO 볼륨 제거
- VDO 볼륨에서 생성된 파일 시스템을 마운트 해제합니다.
# umount /mnt/VDOVolume
- 명령을 실행하여 시스템에서 VDO 볼륨
cabundle0
을 제거합니다.# vdo remove --name=vdo0
- 볼륨이 제거되었는지 확인합니다. VDO 파티션의 Egress IP 목록에 목록이 없어야 합니다.
# vdo list --all | grep vdo
31.3.2.3. 4. D trainingplication 측정
- 31.3.1절. “VDO 테스트 볼륨 구성” 에서 VDO 볼륨을 생성하고 마운트합니다.
- test 데이터 세트의 복사본 10을 보관하기 위해 VDO 볼륨에서 EgressIP
1
through step10이라는 10개의 디렉터리를 생성합니다.$ mkdir /mnt/VDOVolume/vdo{01..10}
- 파일 시스템에 따라 사용된 디스크 공간의 양을 확인합니다.
$ df -h /mnt/VDOVolume Filesystem Size Used Avail Use% Mounted on /dev/mapper/vdo0 1.5T 198M 1.4T 1% /mnt/VDOVolume
결과를 표에 배치하는 것이 좋습니다.통계 베어 파일 시스템 Seed 후 10 복사 후 파일 시스템 사용 크기 198MB VDO 데이터 사용 VDO 논리 사용 - 다음 명령을 실행하여 값을 기록합니다. "데이터 블록"은 VDO에서 실행되는 물리적 장치의 사용자 데이터에 의해 사용되는 블록 수입니다. "논리 블록 사용"은 최적화 전에 사용되는 블록 수입니다. 측정의 시작점으로 사용될 것입니다.
# vdostats --verbose | grep "blocks used" data blocks used : 1090 overhead blocks used : 538846 logical blocks used : 6059434
- VDO 볼륨의 최상위 수준에 데이터 소스 파일 생성
$ dd if=/dev/urandom of=/mnt/VDOVolume/sourcefile bs=4096 count=1048576 4294967296 bytes (4.3 GB) copied, 540.538 s, 7.9 MB/s
- 사용 중인 물리적 디스크 공간의 양을 다시 검사합니다. 방금 작성한 파일에 해당하는 블록 수가 증가해야 합니다.
$ df -h /mnt/VDOVolume Filesystem Size Used Avail Use% Mounted on /dev/mapper/vdo0 1.5T 4.2G 1.4T 1% /mnt/VDOVolume
# vdostats --verbose | grep "blocks used" data blocks used : 1050093 (increased by 4GB) overhead blocks used : 538846 (Did not change) logical blocks used : 7108036 (increased by 4GB)
- 파일을 10개의 하위 디렉터리 각각에 복사합니다.
$ for i in {01..10}; do cp /mnt/VDOVolume/sourcefile /mnt/VDOVolume/vdo$i done
- 다시 한 번, 사용된 물리적 디스크 공간(데이터 블록)을 확인합니다. 이 수는 위의 6단계의 결과와 유사해야 하며 파일 시스템 저널링 및 메타데이터로 인해 약간의 증가만 사용해야 합니다.
$ df -h /mnt/VDOVolume Filesystem Size Used Avail Use% Mounted on /dev/mapper/vdo0 1.5T 45G 1.3T 4% /mnt/VDOVolume
# vdostats --verbose | grep "blocks used" data blocks used : 1050836 (increased by 3M) overhead blocks used : 538846 logical blocks used : 17594127 (increased by 41G)
- 테스트 데이터를 쓰기 전에 찾은 값에서 파일 시스템에서 사용하는 공간의 새 값을 뺀 값입니다. 파일 시스템의 관점에서 이 테스트에서 사용하는 공간의 양입니다.
- 기록된 통계에서 공간 절감을 관찰합니다.참고:다음 표에서 값이 MB/GB로 변환된 경우, "blocks"는 4,096 B입니다.
통계 베어 파일 시스템 Seed 후 10 복사 후 파일 시스템 사용 크기 198MB 4.2GB 45GB VDO 데이터 사용 4MB 4.1GB 4.1GB VDO 논리 사용 23.6 GB* 27.8 GB 68.7 GB * 1.6TB 포맷 드라이브의 파일 시스템 오버헤드
31.3.2.4. 5. 압축 측정
- 최소 10GB의 물리 및 논리 크기의 VDO 볼륨을 생성합니다. 중복 제거를 비활성화하고 압축을 활성화하는 옵션을 추가합니다.
# vdo create --name=vdo0 --device=/dev/sdb \ --vdoLogicalSize=10G --verbose \ --deduplication=disabled --compression=enabled
- 전송 전 VDO 통계를 검사합니다. 사용된 데이터 블록과 사용된 논리 블록을 기록해 둡니다( 둘 다 0이 되어야 함).
# vdostats --verbose | grep "blocks used"
- XFS 또는 ext4 파일 시스템으로 새 장치를 포맷합니다.
- XFS의 경우:
# mkfs.xfs -K /dev/mapper/vdo0
- ext4의 경우:
# mkfs.ext4 -E nodiscard /dev/mapper/vdo0
- 포맷된 장치를 마운트합니다.
# mkdir /mnt/VDOVolume # mount /dev/mapper/vdo0 /mnt/VDOVolume && \ chmod a+rwx /mnt/VDOVolume
- VDO 볼륨을 동기화하여 완료되지 않은 압축을 완료합니다.
# sync && dmsetup message vdo0 0 sync-dedupe
- VDO 통계를 다시 검사합니다. 사용된 논리 블록 - 사용되는 데이터 블록은 파일 시스템의 압축으로 저장되는 4KB 블록 수입니다. VDO는 파일 시스템 오버헤드 및 실제 사용자 데이터를 최적화합니다.
# vdostats --verbose | grep "blocks used"
/lib
의 콘텐츠를 VDO 볼륨에 복사합니다. 총 크기를 기록합니다.# cp -vR /lib /mnt/VDOVolume ... sent 152508960 bytes received 60448 bytes 61027763.20 bytes/sec total size is 152293104 speedup is 1.00
- Linux 캐시 및 VDO 볼륨을 동기화합니다.
# sync && dmsetup message vdo0 0 sync-dedupe
- VDO 통계를 다시 검사합니다. 사용되는 논리 및 데이터 블록을 확인합니다.
# vdostats --verbose | grep "blocks used"
- 사용된 논리 블록 - 사용되는 데이터 블록은
/lib
파일의 사본에 사용되는 공간 크기(4KB 블록 단위로)를 나타냅니다. - “4. D trainingplication 측정”의 표에 있는 전체 크기 - (논리적 블록 used-data 블록은 * 4096) = 압축으로 저장된 바이트를 사용했습니다.
- VDO 볼륨 제거:
# umount /mnt/VDOVolume && vdo remove --name=vdo0
31.3.2.5. 6. test VDO Compression Efficiency
- 31.3.1절. “VDO 테스트 볼륨 구성” 에서 VDO 볼륨을 생성하고 마운트합니다.
- 볼륨을 제거하지 않고 “4. D trainingplication 측정” 및 “5. 압축 측정” 에서 실험을 반복합니다. affect
stats의 공간 절감에 대한 변경
사항을 관찰합니다. - 자체 데이터 세트를 실험하십시오.
31.3.2.6. 7. TRIM 및 DISCARD 이해
씬 프로비저닝을 통해 논리적 또는 가상 스토리지 공간을 기본 물리적 스토리지보다 클 수 있습니다. 파일 시스템과 같은 애플리케이션에서는 대규모 가상 스토리지 계층에서 실행할 수 있으며 데이터 중복 제거와 같은 데이터 효율성 기술은 모든 데이터를 저장하는 데 필요한 물리적 데이터 블록 수를 줄입니다. 이러한 스토리지 비용을 절감하려면 물리적 스토리지 계층에서 애플리케이션 데이터가 삭제된 시기를 알아야 합니다.
기존 파일 시스템은 데이터를 삭제할 때 기본 스토리지를 알릴 필요가 없었습니다. 씬 프로비저닝된 스토리지에서 작동하는 파일 시스템은
TRIM
또는 DISCARD
명령을 전송하여 논리 블록이 더 이상 필요하지 않은 경우 스토리지 시스템을 알립니다. 이러한 명령은 삭제 마운트 옵션을 사용하여 블록을 삭제할 때마다 보내거나 파일 시스템에 사용되지 않는 논리 블록을 탐지하고 TRIM
또는 DISCARD
명령 형식으로 스토리지 시스템으로 정보를 전송하도록 파일 시스템에 지시하여 제어된 방식으로 보낼 수 있습니다.
중요
씬 프로비저닝의 작동 방식에 대한 자세한 내용은 Red Hat Enterprise Linux 7 논리 볼륨 관리자 관리 가이드의 씬 프로비저닝된 논리 볼륨(Thin Volumes) 을 참조하십시오.
이것이 어떻게 작동하는지 확인하려면:
- 31.3.1절. “VDO 테스트 볼륨 구성” 에 따라 새 VDO 논리 볼륨을 생성하고 마운트합니다.
- 불필요한 블록을 제거하기 위해 파일 시스템을 Trim합니다(시간이 오래 걸릴 수 있음).
# fstrim /mnt/VDOVolume
- 다음을 입력하여 아래 표에 초기 상태를 기록합니다.
$ df -m /mnt/VDOVolume
파일 시스템에서 용량이 얼마나 많이 사용되는지 확인하고 EgressIPstats를 실행하여 사용 중인 물리 및 논리적 데이터 블록 수를 확인합니다. - VDO에서 실행되는 파일 시스템에 데이터가 아닌 1GB 파일을 생성합니다.
$ dd if=/dev/urandom of=/mnt/VDOVolume/file bs=1M count=1K
그런 다음 동일한 데이터를 수집합니다. 파일 시스템은 1GB를 추가로 사용해야 하며, 사용된 데이터 블록과 논리 블록이 유사하게 증가했습니다. fstrim /mnt/VDOVolume
를 실행하고 새 파일을 생성한 후 이 항목에 영향을 미치지 않는지 확인합니다.- 1GB 파일을 삭제합니다.
$ rm /mnt/VDOVolume/file
매개 변수를 확인하고 기록합니다. 파일 시스템은 파일이 삭제되었지만 파일 삭제가 기본 스토리지와 전달되지 않았기 때문에 물리적 또는 논리 블록 수에 대한 변경 사항이 없음을 인지하고 있습니다. fstrim /mnt/VDOVolume
를 실행하고 동일한 매개변수를 기록합니다.fstrim
은 파일 시스템에서 무료 블록을 찾고 사용하지 않는 주소에 대해 TRIM 명령을 전송하며 VDO는 연관된 논리 블록을 해제하고 VDO는 TRIM을 기본 물리적 블록을 해제하도록 처리합니다.Step 파일 공간 사용(MB) 데이터 블록 사용 논리 블록 사용 initial 1GB 파일 추가 run fstrim
1GB 파일 삭제 run fstrim
이 연습에서는 기본 스토리지에 용량 사용률을 정확하게 파악할 수 있도록 TRIM 프로세스가 필요합니다.
fstrim
는 효율성을 높이기 위해 여러 블록을 한 번에 분석하는 명령줄 도구입니다. 대체 방법은 마운트 시 파일 시스템 삭제 옵션을 사용하는 것입니다. 삭제 옵션은 각 파일 시스템 블록이 삭제될 때 기본 스토리지를 업데이트하여 처리량이 느려지지만 활용도가 큰 인식을 제공합니다. 또한 TRIM 또는 DISCARD 사용되지 않는 블록이 VDO에 고유하지 않다는 것을 이해하는 것이 중요합니다. 씬 프로비저닝된 스토리지 시스템은 동일한 챌린지가 있습니다.