Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

30장. VDO 통합

30.1. VDO에 대한 기본 개요

VDO(가상 데이터 최적화 도구)는 블록 스토리지의 압축 및 중복된 풀을 쉽게 만들 수 있는 블록 가상화 기술입니다.
  • 중복 제거는 중복 블록의 여러 복사본을 제거하여 스토리지 리소스 사용을 줄이는 기술입니다.
    동일한 데이터를 두 번 이상 작성하는 대신 VDO는 각 중복 블록을 감지하고 이를 원래 블록에 대한 참조로 기록합니다. VDO는 VDO 위의 스토리지 계층에서 물리적 블록 주소로 사용하는 논리 블록 주소에서 VDO의 스토리지 계층에서 사용하는 매핑을 유지합니다.
    중복 제거 후 여러 개의 논리 블록 주소가 동일한 물리적 블록 주소에 매핑될 수 있습니다. 이러한 블록 주소를 공유 블록 이라고 합니다. 블록 공유는 스토리지 사용자에게 보이지 않으므로 VDO가 존재하지 않는 것처럼 블록을 읽고 씁니다. 공유 블록을 덮어쓰면 공유 물리적 블록에 매핑된 다른 논리 블록 주소가 수정되지 않도록 새 블록 데이터를 저장하기 위해 새 물리 블록이 할당됩니다.
  • 압축 은 로그 파일 및 데이터베이스와 같이 블록 수준 중복성을 반드시 표시하지 않는 파일 형식과 함께 작동하는 데이터 가상화 기술입니다. 자세한 내용은 30.4.8절. “압축 사용” 를 참조하십시오.
VDO 솔루션은 다음 구성 요소로 구성됩니다.
kvdo
Linux 장치 매퍼 계층에 로드하여 중복되고 압축되고 씬 프로비저닝된 블록 스토리지 볼륨을 제공하는 커널 모듈
uds
볼륨의 Universal Deduplication Service(UDS) 인덱스와 통신하는 커널 모듈이며 중복을 위해 데이터를 분석합니다.
명령줄 툴
최적화된 스토리지를 구성하고 관리하는 데 사용됩니다.

30.1.1. UDS 커널 모듈(uds)

UDS 인덱스는 VDO 제품의 기초를 제공합니다. 데이터가 새로 저장된 각 부분에 대해 이 조각이 이전에 저장된 데이터와 같은지 빠르게 확인합니다. 인덱스가 일치함을 발견하면 스토리지 시스템이 기존 항목을 내부적으로 참조하여 동일한 정보를 두 번 이상 저장하지 않도록 할 수 있습니다.
UDS 인덱스는 uds 커널 모듈로 커널 내부에서 실행됩니다.

30.1.2. VDO 커널 모듈(kvdo)

kvdo Linux 커널 모듈은 Linux 장치 매퍼 계층 내에서 블록 계층 중복 제거 서비스를 제공합니다. Linux 커널에서 장치 매퍼는 블록 스토리지 풀을 관리하기 위한 일반 프레임워크 역할을 하므로 커널 블록 인터페이스와 실제 스토리지 장치 드라이버 사이의 블록 처리 모듈을 스토리지 스택에 삽입할 수 있습니다.
kvdo 모듈은 블록 스토리지에 대해 직접 액세스하거나 XFS 또는 ext4와 같이 사용 가능한 여러 Linux 파일 시스템 중 하나를 통해 제공할 수 있는 블록 장치로 노출됩니다. kvdo 가 VDO 볼륨에서 데이터 블록을 읽기 위한 요청을 수신하면 요청된 논리 블록을 기본 물리적 블록에 매핑한 다음 요청된 데이터를 읽고 반환합니다.
kvdo 가 VDO 볼륨에 데이터 블록을 쓰기 위한 요청을 수신하면 먼저 DISCARD 또는 TRIM 요청인지 또는 데이터가 균일하게 0인지 여부를 확인합니다. 이러한 조건 중 하나가 있는 경우 kvdo 는 블록 맵을 업데이트하고 요청을 승인합니다. 그렇지 않으면 요청에 의해 사용하기 위해 물리적 블록이 할당됩니다.

30.1.2.1. VDO 쓰기 정책 개요

kvdo 모듈이 동기 모드에서 작동하는 경우:
  1. 요청에 데이터를 일시적으로 기록한 다음 요청을 승인합니다.
  2. 승인이 완료되면 VDO 인덱스로 전송되는 블록 데이터의 MurmurHash-3 서명을 컴퓨팅하여 블록을 분리하려고 시도합니다.
  3. VDO 인덱스에 동일한 서명이 있는 블록에 대한 항목이 포함된 경우 kvdo 는 표시된 블록을 읽고 두 블록의 바이트 단위로 비교하여 동일한지 확인합니다.
  4. 실제로 동일한 경우 kvdo 는 블록 맵을 업데이트하여 논리 블록이 해당 물리적 블록을 가리키고 할당된 물리적 블록을 해제하도록 합니다.
  5. VDO 인덱스에 작성된 블록의 서명에 대한 항목이 포함되어 있지 않거나 표시된 블록에 실제로 동일한 데이터가 포함되지 않은 경우 kvdo 는 블록 맵을 업데이트하여 임시 물리적 블록을 영구적으로 만듭니다.
kvdo 가 비동기 모드에서 작동하는 경우:
  1. 데이터를 작성하지 않고 즉시 요청을 승인합니다.
  2. 그런 다음 위에서 설명한 것과 동일한 방식으로 블록을 복제하려고 시도합니다.
  3. 블록이 중복되는 경우 kvdo 는 블록 맵을 업데이트하고 할당된 블록을 해제합니다. 그렇지 않으면 할당된 블록에 데이터를 쓰고 블록 맵을 업데이트하여 물리적 블록을 영구적으로 만듭니다.

30.1.3. VDO 볼륨

VDO는 블록 장치를 백업 저장소로 사용합니다. 여기에는 하나 이상의 디스크, 파티션 또는 플랫 파일로 구성된 물리적 스토리지 집계가 포함될 수 있습니다. VDO 볼륨은 스토리지 관리 도구로 생성되는 경우 VDO는 UDS 인덱스 및 VDO 볼륨 모두에 대해 볼륨에서 공간을 예약하여 중복된 블록 스토리지를 사용자 및 애플리케이션에 제공합니다. 그림 30.1. “VDO 디스크 조직” 이 조각들이 어떻게 조합되는지를 보여줍니다.

그림 30.1. VDO 디스크 조직

VDO 디스크 조직

30.1.3.1. Slabs

VDO 볼륨의 물리적 스토리지는 여러 slabs 로 나뉘어 있으며, 각각은 물리 공간의 연속 영역입니다. 지정된 볼륨에 대한 모든 slabs는 동일한 크기이며, 이는 128MB에서 최대 32GB의 2개의 전력이 될 수 있습니다.
기본 slab 크기는 작은 테스트 시스템에서 VDO를 쉽게 평가하기 위해 2GB입니다. 단일 VDO 볼륨은 최대 8192 개의 slabs를 가질 수 있습니다. 따라서 2GB slabs를 사용하는 기본 구성에서 허용되는 최대 물리 스토리지는 16TB입니다. 32GB slabs를 사용하는 경우 허용되는 최대 물리 스토리지는 256TB입니다. 전체 slab은 메타데이터를 위해 VDO에 의해 예약되므로 사용자 데이터를 저장하는 데 사용할 수 없습니다.
Slab 크기는 VDO 볼륨의 성능에 영향을 미치지 않습니다.

표 30.1. 물리 볼륨 크기의 VDO Slab 크기 권장

물리 볼륨 크기권장 크기
10–99 GB1GB
100GB - 1TB2 GB
2-256 TB32GB
slab의 크기는 vdo create 명령에 --vdoSlabSize=megabytes 옵션을 제공하여 제어할 수 있습니다.

30.1.3.2. 물리적 크기 및 사용 가능한 물리적 크기

물리적 크기와 사용 가능한 물리적 크기는 VDO가 사용할 수 있는 블록 장치의 디스크 공간을 설명합니다.
  • 물리적 크기는 기본 블록 장치와 크기가 같습니다. VDO는 다음 용도로 이 스토리지를 사용합니다.
    • 사용자 데이터가 분할되고 압축될 수 있습니다.
    • VDO 메타데이터(예: UDS 인덱스)
  • 사용 가능한 물리적 크기는 VDO가 사용자 데이터에 사용할 수 있는 물리적 크기의 일부입니다.
    물리 크기와 같습니다. 메타데이터의 크기를 뺀 후 나머지 볼륨을 지정된 slab 크기로 slabs로 분할한 후 나머지를 뺀 값입니다.
다양한 크기의 블록 장치에서 VDO 메타데이터가 필요한 스토리지의 예는 30.2.3절. “물리 볼륨 크기의 VDO 시스템 요구 사항의 예” 를 참조하십시오.

30.1.3.3. 논리 크기

--vdoLogicalSize 옵션이 지정되지 않은 경우 논리 볼륨 크기는 기본적으로 사용 가능한 물리 볼륨 크기로 설정됩니다. 그림 30.1. “VDO 디스크 조직” 에서 VDO 중복된 스토리지 대상은 블록 장치의 상단에 완전히 있으므로 VDO 볼륨의 실제 크기는 기본 블록 장치와 동일합니다.
VDO는 현재 최대 논리 크기가 4PB인 물리 볼륨의 크기를 254배까지 지원합니다.

30.1.4. 명령줄 툴

VDO에는 구성 및 관리를 위한 다음 명령행 도구가 포함되어 있습니다.
vdo
VDO 볼륨 생성, 구성 및 제어
vdostats
사용률 및 성능 통계 제공