RHEL에서 논리 볼륨 삭제 및 압축

Red Hat Enterprise Linux 9

VDO를 사용하여 LVM 스토리지 용량 증가

초록

이 문서에서는 LVM에서 VDO(가상 데이터 최적화 도구) 기능을 사용하여 RHEL에서 중복 및 압축된 논리 볼륨을 관리하는 방법을 설명합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.

Red Hat 문서에 관한 피드백 제공

문서 개선을 위한 의견을 보내 주십시오. 문서를 개선할 수 있는 방법에 관해 알려주십시오.

  • 특정 문구에 대한 간단한 의견 작성 방법은 다음과 같습니다.

    1. 문서가 Multi-page HTML 형식으로 표시되는지 확인합니다. 또한 문서 오른쪽 상단에 피드백 버튼이 있는지 확인합니다.
    2. 마우스 커서를 사용하여 주석 처리하려는 텍스트 부분을 강조 표시합니다.
    3. 강조 표시된 텍스트 아래에 표시되는 피드백 추가 팝업을 클릭합니다.
    4. 표시된 지침을 따릅니다.
  • Bugzilla를 통해 피드백을 제출하려면 새 티켓을 생성하십시오.

    1. Bugzilla 웹 사이트로 이동하십시오.
    2. 구성 요소로 문서를 사용합니다.
    3. 설명 필드에 문서 개선을 위한 제안 사항을 기입하십시오. 관련된 문서의 해당 부분 링크를 알려주십시오.
    4. 버그 제출을 클릭합니다.

1장. LVM에서 VDO 소개

VDO(가상 데이터 최적화 도구) 기능은 스토리지에 대한 인라인 블록 수준 중복 제거, 압축 및 씬 프로비저닝을 제공합니다. VDO를 씬 프로비저닝된 볼륨과 유사하게 LVM LV(Logical Volume) 유형으로 관리할 수 있습니다.

LVM(LVM-VDO)의 VDO 볼륨은 다음과 같은 LV로 구성됩니다.

VDO pool LV

이는 VDO LV의 데이터를 저장, 중복 제거 및 압축하는 백업 물리적 장치입니다. VDO 풀 LV는 VDO 볼륨을 디스크에 저장할 수 있는 데이터 양인 VDO 볼륨의 물리적 크기를 설정합니다.

현재 각 VDO 풀 LV는 하나의 VDO LV만 보유할 수 있습니다. 결과적으로 VDO는 각 VDO LV를 별도로 중복 제거 및 압축합니다. 즉, VDO는 여러 VDO LV 간에 공유되는 데이터를 중복 제거하거나 압축할 수 없습니다.

VDO LV
VDO 풀 LV 위에 프로비저닝된 가상 장치입니다. VDO LV는 VDO 볼륨의 프로비저닝된 논리적 크기를 설정합니다. 이 크기는 애플리케이션이 중복 제거 및 압축이 발생하기 전에 볼륨에 쓸 수 있는 데이터 양입니다.

표 1.1. LVM 및 LVM 씬 프로비저닝에서 VDO의 구성 요소 비교

 물리적 장치프로비저닝된 장치

LVM에서 VDO

VDO pool LV

VDO LV

LVM 씬 프로비저닝

씬 풀

씬 볼륨

VDO는 씬 프로비저닝되므로 파일 시스템과 애플리케이션은 사용 중인 논리적 공간만 볼 수 있으며 사용 가능한 실제 공간을 인식하지 못합니다. 스크립팅을 사용하여 실제 사용 가능한 공간을 모니터링하고, 를 임계값을 초과하는 경우 경고를 생성합니다(예: VDO 풀 LV가 80%가 가득 차면).

2장. LVM-VDO 요구사항

LVM의 VDO는 배치와 시스템 리소스에 대한 특정 요구 사항을 갖습니다.

2.1. VDO 메모리 요구 사항

각 VDO 볼륨에는 다음 두 가지 메모리 요구 사항이 있습니다.

VDO 모듈

VDO에는 고정 38MB의 RAM과 여러 개의 변수 양이 필요합니다.

  • 구성된 블록 맵 캐시 크기 1MB당 1.15MB의 RAM입니다. 블록 맵 캐시에는 최소 150MB의 RAM이 필요합니다.
  • 1TB의 논리 공간마다 1.6MB의 RAM.
  • 볼륨에서 관리하는 1TB의 물리 스토리지당 268MB의 RAM.
UDS 인덱스

UBI(Universal Deduplication Service)에는 최소 250MB의 RAM이 필요하며 이는 중복 제거에서 사용하는 기본 양이기도 합니다. 값이 인덱스에 필요한 스토리지 크기에도 영향을 주기 때문에 VDO 볼륨을 포맷할 때 값을 구성할 수 있습니다.

UDS 인덱스에 필요한 메모리는 인덱스 유형과 중복 제거 창의 필요한 크기에 따라 결정됩니다.

인덱스 유형중복 제거 창참고

dense

1GB의 RAM당 1TB

1GB 밀도가 높은 인덱스는 일반적으로 최대 4TB의 물리적 스토리지에 충분합니다.

스파스

1GB의 RAM당 10TB

일반적으로 1GB 스파스 인덱스는 최대 40TB의 물리적 스토리지에 충분합니다.

참고

기본 설정 2GB slab 크기와 0.25 밀도 인덱스를 사용하는 VDO 볼륨의 최소 디스크 사용량에는 approx 4.7GB가 필요합니다. 이는 0% 중복 제거 또는 압축에서 쓸 수 있는 2GB의 물리적 데이터보다 약간 적습니다.

여기에서 최소 디스크 사용은 기본 slab 크기 및 dense 인덱스의 합계입니다.

UDS 분리 인덱스 지정 기능은 VDO에 권장되는 모드입니다. 이는 데이터의 temporary locality에 의존하며 메모리에서 가장 관련있는 인덱스 항목만 유지하려고 합니다. 스파스 인덱스를 사용하면 UDS가 동일한 양의 메모리를 사용하는 동안 dense보다 10배 큰 중복 제거 창을 유지할 수 있습니다.

스파스 인덱스는 가장 큰 범위를 제공하지만 밀도가 높은 인덱스는 더 많은 중복 제거 조언을 제공합니다. 동일한 양의 메모리가 있는 대부분의 워크로드의 경우 밀도가 높은 인덱스와 스파스 인덱스 간의 중복 제거 속도의 차이가 있을 수 없습니다.

2.2. VDO 스토리지 공간 요구사항

최대 256TB의 물리 스토리지를 사용하도록 VDO 볼륨을 구성할 수 있습니다. 물리 스토리지의 특정 부분만 데이터를 저장할 수 있습니다. 이 섹션에서는 VDO 관리 볼륨의 사용 가능한 크기를 결정하는 계산을 제공합니다.

VDO에는 두 가지 유형의 VDO 메타데이터와 UDS 인덱스에 대한 스토리지가 필요합니다.

  • VDO 메타데이터의 첫 번째 유형은 4GB의 물리적 스토리지 마다 약 1MB와 slab당 추가 1MB를 사용합니다.
  • VDO 메타데이터의 두 번째 유형은 논리 스토리지 의 1GB마다 약 1.25MB를 소비하며, 가장 가까운 slab으로 반올림됩니다.
  • UDS 인덱스에 필요한 스토리지 크기는 인덱스 유형 및 인덱스에 할당된 RAM 크기에 따라 다릅니다. 1GB의 RAM에 대해 밀도가 높은 UDS 인덱스는 17GB의 스토리지를 사용하며 스파스 UDS 인덱스는17GB의 스토리지를 사용합니다.

2.3. 물리 크기에 따른 VDO 요구 사항의 예

다음 표에서는 기본 볼륨의 물리적 크기에 따라 VDO의 대략적인 시스템 요구 사항을 제공합니다. 각 테이블에는 기본 스토리지 또는 백업 스토리지와 같이 의도된 배포에 적합한 요구 사항이 나열되어 있습니다.

정확한 숫자는 VDO 볼륨의 구성에 따라 다릅니다.

기본 스토리지 배포

기본 스토리지 사례에서는 UDS 인덱스가 물리적 크기의 크기인 0.01%에서 25%입니다.

표 2.1. 기본 스토리지에 대한 스토리지 및 메모리 요구 사항

물리적 크기RAM 사용량: UDSRAM 사용량: VDO디스크 사용량인덱스 유형

10GB–1TB

250MB

472MB

2.5GB

dense

2–10TB

1GB

3GB

10GB

dense

250MB

22GB

스파스

11–50TB

2GB

14GB

170GB

스파스

51–100TB

3GB

27GB

255GB

스파스

101–256TB

12GB

69GB

1020GB

스파스

백업 스토리지 배포

백업 스토리지 경우 UDS 인덱스는 백업 세트의 크기를 다루지만 물리적 크기보다 크지는 않습니다. 나중에 백업 세트 또는 물리적 크기가 증가할 것으로 예상되는 경우 인덱스 크기로 인수합니다.

표 2.2. 백업 스토리지에 대한 스토리지 및 메모리 요구 사항

물리적 크기RAM 사용량: UDSRAM 사용량: VDO디스크 사용량인덱스 유형

10GB–1TB

250MB

472MB

2.5GB

dense

2–10TB

2GB

3GB

170GB

스파스

11–50TB

10GB

14GB

850GB

스파스

51–100TB

20GB

27GB

1700GB

스파스

101–256TB

26GB

69GB

3400GB

스파스

2.4. 스토리지 스택에서 LVM-VDO 배치

특정 스토리지 계층을 VDO 논리 볼륨 및 그 위에 배치해야합니다.

VDO 위에 씩 프로비저닝된 계층을 배치할 수 있지만, 이 경우 씩 프로비저닝을 보장할 수 없습니다. VDO 계층이 씬 프로비저닝되므로 씬 프로비저닝의 영향은 위의 모든 계층에 적용됩니다. VDO 볼륨을 모니터링하지 않으면 VDO보다 씩 프로비저닝된 볼륨에서 물리적 공간이 부족해질 수 있습니다.

다음 계층의 지원되는 배치는 VDO 아래에 있습니다. VDO 위에 배치하지 마십시오:

  • DM Multipath
  • DM Crypt
  • 소프트웨어 RAID(LVM 또는 MD RAID)

다음 구성은 지원되지 않습니다:

  • 루프백 장치 상단에 있는 VDO
  • VDO 상단에 있는 암호화된 볼륨
  • VDO 볼륨의 파티션
  • VDO 볼륨 위에 LVM RAID, MD RAID 또는 기타 유형과 같은 RAID
  • LVM-VDO에 Ceph Storage 배포

3장. 중복 제거 및 압축된 논리 볼륨 생성

VDO 기능을 사용하여 데이터를 중복 제거 및 압축하는 LVM 논리 볼륨을 생성할 수 있습니다.

3.1. LVM-VDO 배포 시나리오

다음을 위해 다양한 방법으로 LVM(LVM-VDO)에 VDO를 배포할 수 있습니다.

  • 블록 액세스
  • 파일 액세스
  • 로컬 스토리지
  • 원격 스토리지

LVM-VDO는 중복된 스토리지를 일반 LV(논리 볼륨)로 노출하므로 표준 파일 시스템, iSCSI 및 FC 대상 드라이버 또는 통합 스토리지로 사용할 수 있습니다.

참고

LVM-VDO에 Ceph Storage 배포는 현재 지원되지 않습니다.

KVM

Direct Attached Storage로 구성된 KVM 서버에 LVM-VDO를 배포할 수 있습니다.

KVM을 사용한 LVM-VDO 배포
파일 시스템

VDO LV 위에 파일 시스템을 생성하고 NFS 서버 또는 Samba를 사용하여 NFS 또는 CIFS 사용자에게 노출할 수 있습니다.

Deduplicated NAS
iSCSI 대상

VDO LV 전체를 iSCSI 대상으로 원격 iSCSI 이니시에이터에 내보낼 수 있습니다.

Deduplicated 블록 스토리지 대상
암호화

DM Crypt와 같은 DM(Device Mapper) 메커니즘은 VDO와 호환됩니다. VDO LV 볼륨을 암호화하면 데이터 보안을 보장할 수 있으며 VDO LV 위의 모든 파일 시스템은 여전히 중복 제거됩니다.

암호화를 사용하는 LVM-VDO
중요

VDO LV 위에 암호화 계층을 적용하면 데이터 중복 제거가 거의 발생하지 않습니다. 암호화는 VDO가 이를 중복하기 전에 중복 블록을 다르게 만듭니다.

항상 암호화 계층을 VDO LV 아래에 배치합니다.

3.2. LVM-VDO 볼륨의 물리적 및 논리적 크기

이 섹션에서는 실제 크기, 사용 가능한 실제 크기 및 VDO가 활용할 수 있는 논리적 크기에 대해 설명합니다.

물리적 크기

이는 VDO 풀에 할당된 물리 확장 영역과 동일한 크기입니다. VDO는 다음을 위해 이 스토리지를 사용합니다.

  • 중복되고 압축될 수 있는 사용자 데이터
  • VDO 메타데이터(예: UDS 인덱스)
사용 가능한 물리 크기

이는 VDO가 사용자 데이터에 사용할 수 있는 물리적 크기의 부분입니다.

실제 크기와 동일하며, slab 크기의 배수로 반올림된 메타데이터의 크기를 뺀 값입니다.

논리 크기

VDO LV가 애플리케이션에 제공하는 프로비저닝된 크기입니다. 일반적으로 사용 가능한 물리적 크기보다 큽니다. VDO는 현재 절대 최대 논리 크기가 4PB인 물리 볼륨의 크기 최대 254배까지 모든 논리적 크기를 지원합니다.

VDO LV(논리 볼륨)를 설정하면 VDO LV가 제공하는 논리 스토리지의 양을 지정합니다. 활성 VM 또는 컨테이너를 호스팅할 때 Red Hat은 10:1 논리에서 물리적 비율의 스토리지 프로비저닝을 권장합니다. 즉, 1TB의 물리적 스토리지를 활용하는 경우 10TB의 논리 스토리지로 제공할 수 있습니다.

virtual size 옵션을 지정하지 않으면 VDO는 볼륨을 1:1 비율로 프로비저닝합니다. 예를 들어, VDO LV를 20GB VDO 풀 LV 위에 배치하면 기본 인덱스 크기가 사용되는 경우 VDO는 UDS 인덱스에 대해 2.5GB를 예약합니다. 나머지 17.5GB는 VDO 메타데이터와 사용자 데이터를 위해 제공됩니다. 결과적으로 사용할 수 있는 스토리지는 17.5GB를 넘을 수 없으며, 실제 VDO 볼륨을 구성하는 메타데이터로 인해 더 적을 수 있습니다.

3.3. VDO의 Slab 크기

VDO 볼륨의 물리 스토리지는 여러 slabs로 나뉩니다. 각 slab은 물리 공간의 연속된 영역입니다. 지정된 볼륨에 대한 모든 slabs의 크기는 동일한 크기이며 128MB의 용량은 최대 32GB입니다.

기본 slab 크기는 작은 테스트 시스템에서 VDO를 쉽게 평가할 수 있도록 2GB입니다. 단일 VDO 볼륨은 최대 8192 개의 slabs을 가질 수 있습니다. 따라서 2GB slabs의 기본 구성에서 허용되는 최대 물리적 스토리지는 16TB입니다. 32GB slabs를 사용하는 경우 허용되는 최대 물리적 스토리지는 256TB입니다. VDO는 항상 메타데이터에 대해 하나 이상의 slab을 예약하므로 사용자 데이터를 저장하는 데 예약된 slab을 사용할 수 없습니다.

Slab 크기는 VDO 볼륨의 성능에 영향을 미치지 않습니다.

표 3.1. 물리 볼륨 크기별 권장 VDO slab 크기

물리 볼륨 크기권장되는 slab 크기

10-99GB

1GB

100GB - 1TB

2GB

2-256 TB

32GB

참고

기본 설정 2GB slab 크기와 0.25 밀도 인덱스를 사용하는 VDO 볼륨의 최소 디스크 사용량에는 approx 4.7GB가 필요합니다. 이는 0% 중복 제거 또는 압축에서 쓸 수 있는 2GB의 물리적 데이터보다 약간 적습니다.

여기에서 최소 디스크 사용은 기본 slab 크기 및 dense 인덱스의 합계입니다.

lvcreate 명령에 --config 'allocation/vdo_slab_size_mb=size-in-megabytes' 옵션을 제공하여 slab 크기를 제어할 수 있습니다.

3.4. VDO 설치

이 절차에서는 VDO 볼륨을 생성, 마운트 및 관리하는 데 필요한 소프트웨어를 설치합니다.

절차

  • pxe 및 km od-kvdo 패키지를 설치합니다.

    # dnf install vdo kmod-kvdo

3.5. LVM-VDO 볼륨 생성

이 절차에서는 VDO 풀 LV에 VDO LV(논리 볼륨)를 생성합니다.

사전 요구 사항

  • VDO 소프트웨어를 설치합니다. 자세한 내용은 VDO 설치를 참조하십시오.
  • 사용 가능한 스토리지 용량이 있는 LVM 볼륨 그룹이 시스템에 있습니다.

절차

  1. VDO LV의 이름을 선택합니다(예: vdo1). 시스템의 각 VDO LV에 대해 다른 이름과 장치를 사용해야 합니다.

    다음 모든 단계에서 vdo-name 을 이름으로 교체합니다.

  2. VDO LV를 만듭니다.

    # lvcreate --type vdo \
               --name vdo-name
               --size physical-size
               --virtualsize logical-size \
               vg-name
    • vg-name 을 VDO LV를 배치하려는 기존 LVM 볼륨 그룹의 이름으로 바꿉니다.
    • logical-size 를 VDO LV가 존재할 논리 스토리지의 양으로 바꿉니다.
    • 실제 크기가 16TiB보다 크면 다음 옵션을 추가하여 볼륨의 slab 크기를 32GiB로 늘립니다.

      --config 'allocation/vdo_slab_size_mb=32768'

      16TiB보다 큰 물리적 크기에서 2GiB의 기본 slab 크기를 사용하는 경우 lvcreate 명령이 실패하고 다음 오류가 발생합니다.

      ERROR - vdoformat: formatVDO failed on '/dev/device': VDO Status: Exceeds maximum number of slabs supported

      예 3.1. 컨테이너 저장을 위한 VDO LV 생성

      예를 들어 1TB VDO 풀 LV에서 컨테이너 스토리지에 대한 VDO LV를 생성하려면 다음을 사용할 수 있습니다.

      # lvcreate --type vdo \
                 --name vdo1
                 --size 1T
                 --virtualsize 10T \
                 vg-name
      중요

      VDO 볼륨을 생성할 때 오류가 발생하면 볼륨을 제거하여 정리합니다.

  3. VDO LV에 파일 시스템을 만듭니다.

    • XFS 파일 시스템의 경우 다음을 수행합니다.

      # mkfs.xfs -K /dev/vg-name/vdo-name
    • ext4 파일 시스템의 경우:

      # mkfs.ext4 -E nodiscard /dev/vg-name/vdo-name

추가 리소스

  • lvmvdo(7) 도움말 페이지

3.6. LVM-VDO 볼륨 마운트

이 절차에서는 수동으로 또는 영속적으로 LVM-VDO 볼륨에 파일 시스템을 마운트합니다.

사전 요구 사항

절차

  • LVM-VDO 볼륨에 파일 시스템을 수동으로 마운트하려면 다음을 사용합니다.

    # mount /dev/vg-name/vdo-name mount-point
  • 부팅 시 자동으로 마운트되도록 파일 시스템을 구성하려면 /etc/fstab 파일에 행을 추가합니다.

    • XFS 파일 시스템의 경우 다음을 수행합니다.

      /dev/vg-name/vdo-name mount-point xfs defaults 0 0
    • ext4 파일 시스템의 경우:

      /dev/vg-name/vdo-name mount-point ext4 defaults 0 0

    LVM-VDO 볼륨이 네트워크를 필요로 하는 블록 장치에 있는 경우(예: iSCSI) _netdev 마운트 옵션을 추가합니다. 네트워크가 필요한 iSCSI 및 기타 블록 장치의 경우 _netdev 마운트 옵션에 대한 정보는 systemd.mount(5) 도움말 페이지를 참조하십시오.

추가 리소스

  • systemd.mount(5) 도움말 페이지

3.7. LVM-VDO 볼륨의 압축 및 중복 제거 설정 변경

이 절차에서는 VDO 풀 LV(논리 볼륨)의 압축 및 중복 제거를 활성화 또는 비활성화합니다.

참고

압축 및 중복 제거는 기본적으로 활성화되어 있습니다.

사전 요구 사항

  • 시스템에 LVM-VDO 볼륨이 있습니다.

절차

  1. 논리 볼륨에서 압축 및 중복 제거가 활성화되었는지 확인하려면 다음을 수행하십시오.

    # lvs -o+vdo_compression,vdo_deduplication
  2. 실행 중인 VDOPoolLV의 중복 제거 인덱스의 압축 상태 및 상태를 확인합니다.

    # lvs -o+vdo_compression_state,vdo_index_state

    vdo_index_stateerror,close,opening, Close,online , offline 으로 표시할 수 있습니다.

  3. VDOPoolLV의 압축을 활성화하거나 비활성화하려면 다음을 수행합니다.

    # lvchange --compression y|n  vg-name/vdopoolname
  4. VDOPoolLV에 대한 중복 제거를 활성화하거나 비활성화하려면 다음을 수행합니다.

    # lvchange --deduplication y|n vg-name/vdopoolname

추가 리소스

  • lvmvdo(7) 도움말 페이지

3.8. 가상 데이터 최적화 도구로 씬 프로비저닝 관리

VDO 볼륨의 실제 공간 사용이 100%에 접근 중인 조건을 해결하기 위해 물리적 공간의 미래 확장을 준비하도록 씬 프로비저닝된 VDO 볼륨을 구성할 수 있습니다. lvcreate 작업에서 -l 100%FREE 를 사용하는 대신 '95%FREE'를 사용하여 나중에 필요한 경우 복구할 수 있는 일부 여유 공간이 있는지 확인합니다. 다음 절차에서는 다음 문제를 해결하는 방법을 설명합니다.

  • 볼륨 공간이 부족합니다
  • 파일 시스템이 읽기 전용 모드로 전환
  • 볼륨에서 보고한 ENOSPC
참고

VDO 볼륨에서 높은 물리적 공간 사용량을 처리하는 가장 좋은 방법은 사용하지 않는 파일을 삭제하고 이러한 사용되지 않은 파일에서 사용하는 블록을 온라인 삭제 또는 fstrim 프로그램을 사용하여 삭제하는 것입니다. VDO 볼륨의 물리적 공간은 기본 slab 크기가 2GB인 VDO 볼륨의 경우 16TB 또는 최대 slab 크기가 32GB인 VDO 볼륨의 경우 16TB인 8192 slabs로만 확장할 수 있습니다.

다음 모든 단계에서 myvg 및 my vdo 를 볼륨 그룹과 VDO 이름으로 각각 바꿉니다.

사전 요구 사항

  1. lvm2,vdokmod-kvdo 패키지를 설치했습니다.
  2. 사용 가능한 스토리지 용량이 있는 LVM 볼륨 그룹이 시스템에 있습니다.
  3. lvcreate --type vdo --name myvdo myvg -L logical-size-of-pool --virtualsize virtual-size-of-vdo 명령을 사용하는 씬 프로비저닝 VDO 볼륨. 자세한 내용은 LVM-VDO 볼륨 생성을 참조하십시오.

절차

  1. 씬 프로비저닝된 VDO 볼륨에 대한 최적의 논리적 크기 결정

    # vdostats myvg-vpool0-vpool
    
    Device               1K-blocks Used     Available  Use% Space saving%
    myvg-vpool0-vpool   104856576  29664088 75192488   28%   69%

    공간 절약 비율을 계산하려면 다음 공식을 사용합니다.

    Savings ratio = 1 / (1 - Space saving%)

    이 예에서는 다음과 같습니다.

    • 약 80GB의 데이터 세트에는 약 3.22:1개의 공간 절약률이 있습니다.
    • 동일한 공간 절약 기능이 있는 더 많은 데이터가 VDO 볼륨에 기록되면 데이터 집합 크기를 비율에 곱하면 256GB의 잠재적인 논리적 크기가 생성됩니다.
    • 이 숫자를 200GB까지 상향 조정하면 공간 절약률이 동일한 경우 실제 여유 공간의 안전한 여백으로 논리적 크기가 생성됩니다.
  2. VDO 볼륨의 여유 물리 공간을 모니터링합니다.

    # vdostats myvg-vpool0-vpool

    이 명령은 주기적으로 실행하여 VDO 볼륨의 사용된 실제 공간과 사용 가능한 실제 공간을 모니터링합니다.

  3. 선택 사항: 사용 가능한 /usr/share/doc/vdo/examples/monitor/monitor_check_vdostats_physicalSpace.pl 스크립트를 사용하여 VDO 볼륨의 실제 공간 사용에 대한 경고를 확인합니다.

    # /usr/share/doc/vdo/examples/monitor/monitor_check_vdostats_physicalSpace.pl myvg-vpool0-vpool
  4. VDO 볼륨을 생성할 때 dmeventd 모니터링 서비스는 VDO 볼륨의 물리적 공간 사용을 모니터링합니다. VDO 볼륨이 생성 또는 시작될 때 기본적으로 활성화됩니다.

    journalctl 명령을 사용하여 VDO 볼륨을 모니터링하는 동안 로그에서 dmeventd 의 출력을 확인합니다.

    lvm[8331]: Monitoring VDO pool myvg-vpool0-vpool.
    ...
    
    lvm[8331]: WARNING: VDO pool myvg-vpool0-vpool is now 84.63% full.
    lvm[8331]: WARNING: VDO pool myvg-vpool0-vpool is now 91.01% full.
    lvm[8331]: WARNING: VDO pool myvg-vpool0-vpool is now 97.34% full.
  5. 사용 가능한 실제 공간이 거의 없는 VDO 볼륨을 해결합니다. VDO 볼륨에 물리적 공간을 추가할 수 있지만 볼륨 공간을 확장하기 전에 볼륨 공간이 가득 차면 볼륨에 대한 I/O를 일시적으로 중지해야 할 수 있습니다.

    볼륨에 대한 I/O를 일시적으로 중지하려면 다음 단계를 실행합니다. 여기서 VDO 볼륨 myvdo 에는 /users/homeDir 경로에 마운트된 파일 시스템이 포함됩니다.

    1. 파일 시스템을 중단합니다.

      # xfs_freeze -f /users/homeDir
      
      # vgextend myvg /dev/vdc2
      
      # lvextend -l new_size myvg/vpool0-name
      
      # xfs_freeze -u /users/homeDir
    2. 파일 시스템을 마운트 해제합니다.

      # umount /users/homeDir
      
      # vgextend myvg /dev/vdc2
      
      # lvextend -l new_size myvg/vpool0-name
      
      # mount -o discard /dev/myvg/myvdo /users/homeDir
      참고

      캐시된 데이터가 있는 파일 시스템을 마운트 해제하거나 해제하면 캐시된 데이터가 작성되어 VDO 볼륨의 물리 공간이 채워질 수 있습니다. VDO 볼륨에서 사용 가능한 물리적 공간에 대한 모니터링 임계값을 설정할 때 캐시된 파일 시스템 데이터의 최대 양을 고려하십시오.

  6. 파일 시스템에서 더 이상 사용되지 않는 블록은 fstrim 유틸리티를 사용하여 정리할 수 있습니다. VDO 볼륨 위에 마운트된 파일 시스템에 대해 fstrim 을 실행하면 해당 볼륨에 대한 실제 공간이 증가할 수 있습니다. fstrim 유틸리티는 VDO 볼륨으로 삭제를 보내며 이전에 사용된 블록에 대한 참조를 제거하는 데 사용됩니다. 이러한 블록 중 하나를 단일 참조하면 실제 공간을 사용할 수 있습니다.

    1. VDO 통계를 확인하여 현재 사용 가능한 공간을 확인하십시오.

      # vdostats --human-readable myvg-vpool0-vpool
      
       Device             Size  Used  Available Use%  Space saving%
      myvg-vpool0-vpool  100.0G 95.0G 5.0G      95%   73%
    2. 사용되지 않는 블록 폐기:

      # fstrim /users/homeDir
    3. VDO 볼륨의 여유 물리 공간을 확인합니다.

      # vdostats --human-readable myvg-vpool0-vpool
      
      
       Device             Size    Used   Available Use%  Space saving%
      myvg-vpool0-vpool  100.0G   30.0G  70.0G     30%    43%

      이 예에서는 파일 시스템에서 fstrim 을 실행한 후 삭제가 VDO 볼륨에서 사용할 물리적 공간의 65G를 반환할 수 있었습니다.

      참고

      중복 제거 및 압축 수준이 낮은 볼륨을 폐기하면 중복 제거 및 압축 수준이 높은 볼륨을 삭제하는 것보다 물리적 공간을 회수할 수 있습니다. 중복 제거 및 압축 수준이 높은 볼륨에는 아직 사용되지 않은 블록을 삭제하는 것보다 물리적 공간을 회수하기 위해 더 광범위한 클린업이 필요할 수 있습니다.

4장. LVM-VDO 볼륨의 Trim 옵션

VDO 볼륨에 사용되지 않은 공간을 알려주는 삭제 옵션을 사용하여 파일 시스템을 마운트할 수 있습니다. 또 다른 옵션은 온디맨드 삭제 또는 mount -o discard 명령을 즉시 삭제하는 fstrim 애플리케이션을 사용하는 것입니다.

fstrim 애플리케이션을 사용하는 경우 관리자는 mount -o discard 명령을 사용하여 가능한 경우 공간을 즉시 복구할 수 있도록 추가 프로세스를 예약하고 모니터링해야 합니다.

현재 fstrim 애플리케이션을 사용하여 이 옵션의 성능 영향이 매우 심각할 수 있으므로 삭제 마운트 옵션 대신 사용하지 않는 블록을 삭제하는 것이 좋습니다. 이러한 이유로 nodiscard 가 기본값입니다.

4.1. VDO에서 삭제 마운트 옵션 활성화

이 절차에서는 VDO 볼륨에서 삭제 옵션을 활성화합니다.

사전 요구 사항

  • 시스템에 LVM-VDO 볼륨이 있습니다.

절차

  • 볼륨에서 삭제를 활성화합니다.

    # mount -o discard /dev/vg-name/vdo-name mount-point

추가 리소스

  • XFS(5), mount(8)lvmvdo(7) 도움말 페이지

4.2. 주기적인 TRIM 작업 설정

이 절차에서는 시스템에서 예약된 TRIM 작업을 활성화합니다.

사전 요구 사항

  • 시스템에 LVM-VDO 볼륨이 있습니다.

절차

  • 타이머를 활성화하고 시작합니다.

    # systemctl enable --now fstrim.timer

검증

  • 타이머가 활성화되었는지 확인합니다.

    # systemctl list-timers fstrim.timer

    예 4.1. 확인 절차의 가능한 출력

    # systemctl list-timers fstrim.timer
    NEXT                         LEFT         LAST  PASSED  UNIT         ACTIVATES
    Mon 2021-05-10 00:00:00 EDT  5 days left  n/a   n/a     fstrim.timer fstrim.service
참고

fstrim.timer 가 마운트된 모든 파일 시스템에서 실행되므로 VDO 볼륨에 대한 참조가 표시되지 않습니다.

추가 리소스

  • fstrim(8) 도움말 페이지