36.2. VDO 유지 관리


VDO 볼륨을 배포한 후 특정 작업을 수행하여 유지 관리하거나 최적화할 수 있습니다. 다음 작업 중 일부는 VDO 볼륨이 올바르게 작동하려면 필요합니다.

사전 요구 사항

36.2.1. VDO 볼륨에서 여유 공간 관리

VDO는 씬 프로비저닝된 블록 스토리지 대상입니다. 이로 인해 VDO 볼륨에서 공간 사용량을 적극적으로 모니터링하고 관리해야 합니다.

36.2.1.1. VDO 볼륨의 물리 및 논리적 크기

VDO는 다음과 같은 방법으로 물리적, 사용 가능한 물리적 크기 및 논리 크기를 활용합니다.

물리적 크기

이는 기본 블록 장치와 크기가 동일합니다. VDO는 다음 용도로 이 스토리지를 사용합니다.

  • 사용자 데이터가 분할되고 압축될 수 있습니다.
  • VDO 메타데이터(예: UDS 인덱스)
사용 가능한 물리적 크기

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

물리 크기와 같습니다. 메타데이터의 크기를 뺀 후 나머지 볼륨을 지정된 slab 크기로 slabs로 분할한 후 나머지를 뺀 값입니다.

논리 크기

이는 VDO 볼륨이 애플리케이션에 제공하는 프로비저닝된 크기입니다. 일반적으로 사용 가능한 물리적 크기보다 큽니다. --vdoLogicalSize 옵션이 지정되지 않은 경우 논리 볼륨의 프로비저닝이 이제 1:1 비율로 프로비저닝됩니다. 예를 들어 VDO 볼륨이 20GB 블록 장치 위에 배치된 경우 UDS 인덱스(기본 인덱스 크기가 사용되는 경우) 2.5GB가 예약되어 있습니다. 나머지 17.5GB는 VDO 메타데이터 및 사용자 데이터에 제공됩니다. 결과적으로 사용할 수 있는 스토리지는 17.5GB를 초과하지 않으며 실제 VDO 볼륨을 구성하는 메타데이터로 인해 줄어들 수 있습니다.

VDO는 현재 최대 논리 크기가 4PB인 물리 볼륨의 크기를 254배까지 지원합니다.

그림 36.5. VDO 디스크 조직

VDO 디스크 조직

이 그림에서 VDO 중복된 스토리지 대상은 블록 장치의 상단에 완전히 배치되므로 VDO 볼륨의 물리적 크기는 기본 블록 장치와 같습니다.

추가 리소스

36.2.1.2. VDO의 씬 프로비저닝

VDO는 씬 프로비저닝된 블록 스토리지 대상입니다. VDO 볼륨에서 사용하는 물리 공간의 양은 스토리지 사용자에게 제공되는 볼륨의 크기와 다를 수 있습니다. 이러한 차이를 사용하여 스토리지 비용을 절감할 수 있습니다.

공간 부족 조건

기록된 데이터가 예상 최적화 속도를 얻지 못하는 경우 스토리지 공간이 예기치 않게 실행되지 않도록 주의해야 합니다.

논리 블록(가상 스토리지)의 수가 물리적 블록 수를 초과할 때마다 파일 시스템 및 애플리케이션이 예기치 않게 공간이 부족해질 수 있습니다. 이러한 이유로 VDO를 사용하는 스토리지 시스템은 VDO 볼륨에서 사용 가능한 풀의 크기를 모니터링하는 방법을 제공해야 합니다.

EgressIP stats 유틸리티를 사용하여 이 사용 가능한 풀의 크기를 확인할 수 있습니다. 이 유틸리티의 기본 출력에는 Linux df 유틸리티와 유사한 형식으로 실행 중인 모든 VDO 볼륨에 대한 정보가 나열됩니다. 예를 들면 다음과 같습니다.

Device                1K-blocks   Used        Available   Use%
/dev/mapper/vdo-name  211812352   105906176   105906176   50%

VDO 볼륨의 물리적 스토리지 용량이 거의 가득 차면 VDO는 다음과 같이 시스템 로그에 경고를 보고합니다.

Oct  2 17:13:39 system lvm[13863]: Monitoring VDO pool vdo-name.
Oct  2 17:27:39 system lvm[13863]: WARNING: VDO pool vdo-name is now 80.69% full.
Oct  2 17:28:19 system lvm[13863]: WARNING: VDO pool vdo-name is now 85.25% full.
Oct  2 17:29:39 system lvm[13863]: WARNING: VDO pool vdo-name is now 90.64% full.
Oct  2 17:30:29 system lvm[13863]: WARNING: VDO pool vdo-name is now 96.07% full.
참고

이러한 경고 메시지는 lvm2-monitor 서비스가 실행 중인 경우에만 표시됩니다. 기본적으로 활성화되어 있습니다.

공간 부족 조건을 방지하는 방법

무료 풀의 크기가 특정 수준 아래로 떨어지면 다음을 통해 조치를 취할 수 있습니다.

  • 데이터 삭제. 이렇게 하면 삭제된 데이터가 중복되지 않을 때마다 공간이 확보됩니다. 데이터를 삭제하면 삭제가 실행된 후에만 공간을 확보합니다.
  • 물리적 스토리지 추가
중요

VDO 볼륨에서 물리적 공간을 모니터링하여 공간 부족 상황을 방지합니다. 물리적 블록이 부족하면 VDO 볼륨에서 최근에 기록되지 않은 데이터가 손실될 수 있습니다.

씬 프로비저닝 및 TRIM 및 DISCARD 명령

씬 프로비저닝의 스토리지 절감을 활용하려면 물리적 스토리지 계층에서 데이터가 삭제되는 시기를 알아야 합니다. 씬 프로비저닝된 스토리지에서 작동하는 파일 시스템은 TRIM 또는 DISCARD 명령을 전송하여 논리 블록이 더 이상 필요하지 않은 경우 스토리지 시스템에 알립니다.

TRIM 또는 DISCARD 명령을 보내는 몇 가지 방법을 사용할 수 있습니다.

  • discard 마운트 옵션을 사용하면 파일 시스템에서 블록이 삭제될 때마다 이러한 명령을 보낼 수 있습니다.
  • fstrim 과 같은 유틸리티를 사용하여 제어된 방식으로 명령을 보낼 수 있습니다. 이 유틸리티는 파일 시스템에 사용되지 않는 논리 블록을 감지하고 TRIM 또는 DISCARD 명령 형태로 스토리지 시스템으로 정보를 전송하도록 지시합니다.

사용하지 않는 블록에서 TRIM 또는 DISCARD 를 사용할 필요는 VDO에 고유하지 않습니다. 씬 프로비저닝된 스토리지 시스템은 모두 동일한 문제가 있습니다.

36.2.1.3. VDO 모니터링

이 절차에서는 VDO 볼륨에서 사용 및 효율성 정보를 얻는 방법을 설명합니다.

사전 요구 사항

  • VDO 소프트웨어를 설치합니다. VDO 설치를 참조하십시오.

절차

  • EgressIP stats 유틸리티를 사용하여 VDO 볼륨에 대한 정보를 가져옵니다.

    # vdostats --human-readable
    
    Device                   1K-blocks    Used     Available    Use%    Space saving%
    /dev/mapper/node1osd1    926.5G       21.0G    905.5G       2%      73%
    /dev/mapper/node1osd2    926.5G       28.2G    898.3G       3%      64%

추가 리소스

  • 시스템의 vdostats(8) 도움말 페이지

36.2.1.4. 파일 시스템에서 VDO용 공간 회수

이 절차에서는 파일 시스템을 호스팅하는 VDO 볼륨에서 스토리지 공간을 회수합니다.

VDO는 파일 시스템이 DISCARD,TRIM 또는 UNMAP 명령을 사용하여 블록을 자유롭게 통신하는 경우 공간을 회수할 수 없습니다.

절차

  • VDO 볼륨의 파일 시스템에서 삭제 작업을 지원하는 경우 활성화합니다. 사용되지 않는 블록 분리를 참조하십시오.
  • DISCARD,TRIM 또는 UNMAP 를 사용하지 않는 파일 시스템의 경우 여유 공간을 수동으로 회수할 수 있습니다. 바이너리 0으로 구성된 파일을 저장하여 사용 가능한 공간을 채우고 해당 파일을 삭제합니다.

36.2.1.5. 파일 시스템없이 VDO용 공간 회수

이 절차에서는 파일 시스템 없이 블록 스토리지 대상으로 사용되는 VDO 볼륨에서 스토리지 공간을 회수합니다.

절차

  • blkdiscard 유틸리티를 사용합니다.

    예를 들어 단일 VDO 볼륨은 위에 LVM을 배포하여 여러 하위 볼륨으로 분할할 수 있습니다. 논리 볼륨 프로비저닝을 해제하기 전에 blkdiscard 유틸리티를 사용하여 이전에 해당 논리 볼륨에서 사용한 공간을 확보합니다.

    LVM은 REQ_DISCARD 명령을 지원하고 공간을 확보하기 위해 적절한 논리 블록 주소에서 VDO로 요청을 전달합니다. 다른 볼륨 관리자를 사용하는 경우 REQ_DISCARD 를 지원하거나 SCSI 장치의 경우 UNMAP 또는 ATA 장치의 경우 TRIM 을 지원해야 합니다.

추가 리소스

  • 시스템의 blkdiscard(8) 도움말 페이지

36.2.1.6. 파이버 채널 또는 이더넷 네트워크에서 VDO를 위한 공간 회수

이 절차에서는 LIO 또는 SCST와 같은 SCSI 대상 프레임워크를 사용하여 파이버 채널 스토리지 패브릭에서 호스트에 프로비저닝된 VDO 볼륨(또는 볼륨의 일부)의 스토리지 공간을 회수합니다.

절차

  • SCSI 이니시에이터는 UNMAP 명령을 사용하여 씬 프로비저닝된 스토리지 대상의 공간을 확보할 수 있지만, 이 명령에 대한 지원을 알리도록 SCSI 대상 프레임워크를 구성해야 합니다. 일반적으로 이러한 볼륨은 씬 프로비저닝을 활성화하여 수행됩니다.

    다음 명령을 실행하여 Linux 기반 SCSI 이니시에이터에서 UNMAP 에 대한 지원을 확인합니다.

    # sg_vpd --page=0xb0 /dev/device

    출력에서 Maximum unmap LBA 개수 값이 0보다 큰지 확인합니다.

36.2.2. VDO 볼륨 시작 또는 중지

지정된 VDO 볼륨 또는 모든 VDO 볼륨 및 관련 UDS 인덱스를 시작하거나 중지할 수 있습니다.

36.2.2.1. VDO 볼륨 시작 및 활성화

시스템 부팅 중에 EgressIP systemd 장치는 활성화된 대로 구성된 모든 VDO 장치를 자동으로 시작합니다.

Egress IP systemd 장치가 설치될 때 기본적으로 설치 및 활성화됩니다. 이 유닛은 시스템 시작 시 EgressIP start --all 명령을 자동으로 실행하여 활성화된 모든 VDO 볼륨을 가져옵니다.

또한 EgressIP create 명령에 --activate=disabled 옵션을 추가하여 자동으로 시작하지 않는 VDO 볼륨을 생성할 수도 있습니다.

시작 순서

일부 시스템은 LVM 볼륨을 VDO 볼륨 위에 두 개 이상 저장할 수 있습니다. 이러한 시스템에서는 적절한 순서로 서비스를 시작해야 합니다.

  1. LVM의 하위 계층을 먼저 시작해야 합니다. 대부분의 시스템에서 이 계층을 시작하는 것은 LVM 패키지가 설치될 때 자동으로 구성됩니다.
  2. 그런 다음 cabundle systemd 장치를 시작해야 합니다.
  3. 마지막으로 실행 중인 VDO 볼륨 상단에서 LVM 볼륨 또는 기타 서비스를 시작하려면 추가 스크립트를 실행해야 합니다.

볼륨을 중지하는 데 걸리는 시간

VDO 볼륨을 중지하려면 스토리지 장치의 속도와 볼륨에서 써야 하는 데이터 양에 따라 시간이 걸립니다.

  • 볼륨은 항상 UDS 인덱스의 1GiB마다 1GiB 정도를 씁니다.
  • 볼륨은 블록 맵 캐시 크기와 slab당 최대 8MiB와 동일한 데이터의 양을 기록합니다.
  • 볼륨에서 모든 미해결 IO 요청 처리를 완료해야 합니다.

36.2.2.2. VDO 볼륨 시작

이 절차에서는 지정된 VDO 볼륨 또는 시스템의 모든 VDO 볼륨을 시작합니다.

절차

  • 지정된 VDO 볼륨을 시작하려면 다음을 사용합니다.

    # vdo start --name=my-vdo
  • 모든 VDO 볼륨을 시작하려면 다음을 사용하십시오.

    # vdo start --all

추가 리소스

  • 시스템의 VDO(8) 도움말 페이지

36.2.2.3. VDO 볼륨 중지

이 절차에서는 시스템의 지정된 VDO 볼륨 또는 모든 VDO 볼륨을 중지합니다.

절차

  1. 볼륨을 중지합니다.

    • 지정된 VDO 볼륨을 중지하려면 다음을 사용합니다.

      # vdo stop --name=my-vdo
    • 모든 VDO 볼륨을 중지하려면 다음을 사용합니다.

      # vdo stop --all
  2. 볼륨이 디스크에 데이터 쓰기를 완료할 때까지 기다립니다.

추가 리소스

  • 시스템의 VDO(8) 도움말 페이지

36.2.3. 시스템 부팅 시 VDO 볼륨 자동 시작

VDO 볼륨은 시스템 부팅 시 자동으로 시작되도록 구성할 수 있습니다. 자동 시작을 비활성화할 수도 있습니다.

36.2.3.1. VDO 볼륨 시작 및 활성화

시스템 부팅 중에 EgressIP systemd 장치는 활성화된 대로 구성된 모든 VDO 장치를 자동으로 시작합니다.

Egress IP systemd 장치가 설치될 때 기본적으로 설치 및 활성화됩니다. 이 유닛은 시스템 시작 시 EgressIP start --all 명령을 자동으로 실행하여 활성화된 모든 VDO 볼륨을 가져옵니다.

또한 EgressIP create 명령에 --activate=disabled 옵션을 추가하여 자동으로 시작하지 않는 VDO 볼륨을 생성할 수도 있습니다.

시작 순서

일부 시스템은 LVM 볼륨을 VDO 볼륨 위에 두 개 이상 저장할 수 있습니다. 이러한 시스템에서는 적절한 순서로 서비스를 시작해야 합니다.

  1. LVM의 하위 계층을 먼저 시작해야 합니다. 대부분의 시스템에서 이 계층을 시작하는 것은 LVM 패키지가 설치될 때 자동으로 구성됩니다.
  2. 그런 다음 cabundle systemd 장치를 시작해야 합니다.
  3. 마지막으로 실행 중인 VDO 볼륨 상단에서 LVM 볼륨 또는 기타 서비스를 시작하려면 추가 스크립트를 실행해야 합니다.

볼륨을 중지하는 데 걸리는 시간

VDO 볼륨을 중지하려면 스토리지 장치의 속도와 볼륨에서 써야 하는 데이터 양에 따라 시간이 걸립니다.

  • 볼륨은 항상 UDS 인덱스의 1GiB마다 1GiB 정도를 씁니다.
  • 볼륨은 블록 맵 캐시 크기와 slab당 최대 8MiB와 동일한 데이터의 양을 기록합니다.
  • 볼륨에서 모든 미해결 IO 요청 처리를 완료해야 합니다.

36.2.3.2. VDO 볼륨 활성화

이 절차에서는 VDO 볼륨을 활성화하여 자동으로 시작할 수 있습니다.

절차

  • 특정 볼륨을 활성화하려면 다음을 수행합니다.

    # vdo activate --name=my-vdo
  • 모든 볼륨을 활성화하려면 다음을 수행합니다.

    # vdo activate --all

추가 리소스

  • 시스템의 VDO(8) 도움말 페이지

36.2.3.3. VDO 볼륨 비활성화

이 절차에서는 VDO 볼륨이 자동으로 시작되지 않도록 비활성화합니다.

절차

  • 특정 볼륨을 비활성화하려면 다음을 수행합니다.

    # vdo deactivate --name=my-vdo
  • 모든 볼륨을 비활성화하려면 다음을 수행합니다.

    # vdo deactivate --all

추가 리소스

  • 시스템의 VDO(8) 도움말 페이지

36.2.4. VDO 쓰기 모드 선택

기본 블록 장치에 필요한 내용에 따라 VDO 볼륨에 대한 쓰기 모드를 구성할 수 있습니다. 기본적으로 VDO는 쓰기 모드를 자동으로 선택합니다.

36.2.4.1. VDO 쓰기 모드

VDO는 다음과 같은 쓰기 모드를 지원합니다.

sync

VDO가 동기화 모드인 경우 위의 계층에서는 쓰기 명령이 영구 스토리지에 데이터를 쓰는 것으로 가정합니다. 그 결과, 파일 시스템 또는 애플리케이션이 FLUSH를 발행하거나 FUA(단위 액세스) 요청을 강제 실행하여 데이터가 중요한 시점에서 영구화되도록 할 필요가 없습니다.

VDO는 쓰기 명령이 완료될 때 기본 스토리지로 데이터가 영구 스토리지에 기록되도록만 동기화 모드로 설정해야 합니다. 즉, 스토리지에 휘발성 쓰기 캐시가 없거나 캐시를 통한 쓰기가 있어야 합니다.

async

VDO가 async 모드에 있는 경우 VDO는 쓰기 명령을 승인할 때 데이터가 영구 스토리지에 기록된다는 것을 보장하지 않습니다. 파일 시스템 또는 애플리케이션에는 각 트랜잭션의 중요 시점에 데이터 지속성을 보장하기 위해 FLUSH 또는 FUA 요청을 발행해야 합니다.

쓰기 명령이 완료될 때 기본 저장소가 영구 스토리지에 기록된다는 것을 보장하지 않는 경우 VDO는 async 모드로 설정해야 합니다. 즉, 스토리지에 휘발성 쓰기 백 캐시가 있는 경우입니다.

async-unsafe

이 모드는 async 와 동일한 속성을 가지고 있지만 Atomicity, Consistency, Isolation, Durability (ACID)와 호환되지 않습니다. async와 비교하여 async -unsafe 의 성능이 향상됩니다.

주의

ACID 컴플라이언스 준수를 가정하는 애플리케이션 또는 파일 시스템이 VDO 볼륨 위에서 작동하는 경우 async-unsafe mode로 인해 예기치 않은 데이터가 손실될 수 있습니다.

auto
자동 모드는 각 장치의 특성에 따라 동기화 또는 async 를 자동으로 선택합니다. 이는 기본 옵션입니다.

36.2.4.2. VDO 쓰기 모드의 내부 처리

VDO의 쓰기 모드는 동기화async 입니다. 다음 정보는 이러한 모드의 작업에 대해 설명합니다.

kvdo 모듈이 동기 (동시 )모드로작동하는 경우:

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

kvdo 가 비동기(async) 모드로 작동하는 경우:

  1. 데이터를 작성하지 않고 즉시 요청을 승인합니다.
  2. 그런 다음 위에서 설명한 것과 동일한 방식으로 블록을 복제하려고 시도합니다.
  3. 블록이 중복되는 경우 kvdo 는 블록 맵을 업데이트하고 할당된 블록을 해제합니다. 그렇지 않으면 요청에 데이터를 쓰고 블록 맵을 업데이트하여 물리적 블록을 영구적으로 만듭니다.

36.2.4.3. VDO 볼륨에서 쓰기 모드 확인

이 절차에서는 선택한 VDO 볼륨의 활성 쓰기 모드를 나열합니다.

절차

  • 다음 명령을 사용하여 VDO 볼륨에서 사용하는 쓰기 모드를 확인합니다.

    # vdo status --name=my-vdo

    출력 목록은 다음과 같습니다.

    • 동기화,async 또는 auto에서 선택한 옵션인 구성된 쓰기 정책
    • VDO에서 적용한 특정 쓰기 모드인 쓰기 정책 ( sync 또는 async)

36.2.4.4. 휘발성 캐시 확인

이 절차에서는 블록 장치에 휘발성 캐시가 있는지 여부를 결정합니다. 정보를 사용하여 동기화async VDO 쓰기 모드 중에서 선택할 수 있습니다.

절차

  1. 다음 방법 중 하나를 사용하여 장치에 쓰기 캐시가 있는지 확인합니다.

    • /sys/block/block-device/device/scsi_disk/identifier/cache_type sysfs 파일을 읽습니다. 예를 들면 다음과 같습니다.

      $ cat '/sys/block/sda/device/scsi_disk/7:0:0:0/cache_type'
      
      write back
      $ cat '/sys/block/sdb/device/scsi_disk/1:2:0:0/cache_type'
      
      None
    • 또는 위에 언급된 장치에 쓰기 캐시가 있는지 아니면 커널 부팅 로그에 없음을 확인할 수 있습니다.

      sd 7:0:0:0: [sda] Write cache: enabled, read cache: enabled, does not support DPO or FUA
      sd 1:2:0:0: [sdb] Write cache: disabled, read cache: disabled, supports DPO and FUA
  2. 이전 예에서:

    • 장치 sda 쓰기 캐시가 있음을 나타냅니다. 동기화 모드를 사용합니다.
    • 장치 sdb 는 나중 쓰기 캐시가 없음을 나타냅니다. 동기화 모드를 사용합니다.

    cache_type 값이 None 이거나 을 통해 쓰는 경우 동기화 쓰기 모드를 사용하도록 VDO를 구성해야 합니다.

36.2.4.5. VDO 쓰기 모드 설정

이 절차에서는 VDO 볼륨에 대한 쓰기 모드를 기존 볼륨 또는 새 볼륨을 만들 때 설정합니다.

중요

잘못된 쓰기 모드를 사용하면 정전 후, 시스템 충돌 또는 디스크와의 연결이 예기치 않은 손실이 발생할 수 있습니다.

사전 요구 사항

절차

  • 기존 VDO 볼륨에서 쓰기 모드를 설정하거나 새 볼륨을 생성할 때 사용할 수 있습니다.

    • 기존 VDO 볼륨을 수정하려면 다음을 사용합니다.

      # vdo changeWritePolicy --writePolicy=sync|async|async-unsafe|auto \
                              --name=vdo-name
    • VDO 볼륨을 생성할 때 쓰기 모드를 지정하려면 EgressIP create 명령에 --writePolicy=sync|async|async|async-unsafe|auto 옵션을 추가합니다.

36.2.5. 불명확한 종료 후 VDO 볼륨 복구

불명확한 종료 후 VDO 볼륨을 복구하여 계속 작동할 수 있습니다. 이 작업은 대부분 자동화됩니다. 또한 프로세스의 실패로 인해 VDO 볼륨이 성공적으로 생성되지 않은 후 정리할 수 있습니다.

36.2.5.1. VDO 쓰기 모드

VDO는 다음과 같은 쓰기 모드를 지원합니다.

sync

VDO가 동기화 모드인 경우 위의 계층에서는 쓰기 명령이 영구 스토리지에 데이터를 쓰는 것으로 가정합니다. 그 결과, 파일 시스템 또는 애플리케이션이 FLUSH를 발행하거나 FUA(단위 액세스) 요청을 강제 실행하여 데이터가 중요한 시점에서 영구화되도록 할 필요가 없습니다.

VDO는 쓰기 명령이 완료될 때 기본 스토리지로 데이터가 영구 스토리지에 기록되도록만 동기화 모드로 설정해야 합니다. 즉, 스토리지에 휘발성 쓰기 캐시가 없거나 캐시를 통한 쓰기가 있어야 합니다.

async

VDO가 async 모드에 있는 경우 VDO는 쓰기 명령을 승인할 때 데이터가 영구 스토리지에 기록된다는 것을 보장하지 않습니다. 파일 시스템 또는 애플리케이션에는 각 트랜잭션의 중요 시점에 데이터 지속성을 보장하기 위해 FLUSH 또는 FUA 요청을 발행해야 합니다.

쓰기 명령이 완료될 때 기본 저장소가 영구 스토리지에 기록된다는 것을 보장하지 않는 경우 VDO는 async 모드로 설정해야 합니다. 즉, 스토리지에 휘발성 쓰기 백 캐시가 있는 경우입니다.

async-unsafe

이 모드는 async 와 동일한 속성을 가지고 있지만 Atomicity, Consistency, Isolation, Durability (ACID)와 호환되지 않습니다. async와 비교하여 async -unsafe 의 성능이 향상됩니다.

주의

ACID 컴플라이언스 준수를 가정하는 애플리케이션 또는 파일 시스템이 VDO 볼륨 위에서 작동하는 경우 async-unsafe mode로 인해 예기치 않은 데이터가 손실될 수 있습니다.

auto
자동 모드는 각 장치의 특성에 따라 동기화 또는 async 를 자동으로 선택합니다. 이는 기본 옵션입니다.

36.2.5.2. VDO 볼륨 복구

불명확한 종료 후 VDO 볼륨이 다시 시작되면 VDO는 다음 작업을 수행합니다.

  • 볼륨의 메타데이터 일관성을 확인합니다.
  • 필요한 경우 복구하기 위해 메타데이터의 일부를 다시 작성합니다.

다시 빌드는 자동이며 사용자 개입이 필요하지 않습니다.Rebuilds are automatic and do not require user intervention.

VDO는 활성 쓰기 모드에 따라 다른 쓰기를 다시 빌드할 수 있습니다.

sync
VDO가 동기 스토리지에서 실행 중이고 쓰기 정책이 동기화 로 설정된 경우 볼륨에 기록된 모든 데이터가 완전히 복구됩니다.
async
쓰기 정책이 async 인 경우 내구성이 없는 경우 일부 쓰기가 복구되지 않을 수 있습니다. 이 작업은 VDO a FLUSH 명령 또는 FUA (force Unit Access) 플래그로 태그가 지정된 쓰기 I/O를 전송하여 수행됩니다. fsync,fdatasync,sync 또는 unmount와 같은 데이터 무결성 작업을 호출하여 사용자 모드에서 이 작업을 수행할 수 있습니다.

두 가지 모드에서는 인식할 수 없거나 플러시 뒤에 포함되지 않은 쓰기를 다시 빌드할 수도 있습니다.

자동 및 수동 복구

VDO 볼륨이 복구 운영 모드로 전환되면 VDO는 다시 온라인 상태가 된 후 unclean VDO 볼륨을 자동으로 다시 작성합니다. 이를 온라인 복구 라고 합니다.

VDO가 VDO 볼륨을 성공적으로 복구할 수 없는 경우 볼륨을 볼륨을 재시작해도 지속되는 읽기 전용 운영 모드로 배치합니다. 다시 빌드를 강제 적용하여 문제를 수동으로 수정해야 합니다.

추가 리소스

36.2.5.3. VDO 운영 모드

이 섹션에서는 VDO 볼륨이 정상적으로 작동하는지 또는 오류를 복구하고 있는지 여부를 나타내는 모드를 설명합니다.

EgressIP stats --verbose device 명령을 사용하여 VDO 볼륨의 현재 작동 모드를 표시할 수 있습니다. 출력의 운영 모드 특성을 참조하십시오.

normal
기본 작동 모드입니다. 다음 상태 중 하나가 다른 모드를 강제 적용하지 않는 한 VDO 볼륨은 항상 일반 모드입니다. 새로 생성된 VDO 볼륨은 일반 모드로 시작됩니다.
복구

VDO 볼륨이 종료되기 전에 모든 메타데이터를 저장하지 않으면 다음에 시작할 때 복구 모드로 자동 전환됩니다. 이 모드로 전환하는 일반적인 이유는 정전이 갑작스럽거나 기본 스토리지 장치의 문제입니다.

VDO는 복구 모드에서는 장치의 각 물리적 데이터 블록에 대한 참조 수를 수정하고 있습니다. 회복은 일반적으로 오래 걸리지 않습니다. 시간은 VDO 볼륨의 크기, 기본 스토리지 장치가 얼마나 빠른지, VDO가 동시에 처리하는 다른 요청 수에 따라 달라집니다. VDO 볼륨 기능은 일반적으로 다음과 같은 예외와 함께 작동합니다.

  • 처음에는 볼륨에서 쓰기 요청에 사용할 수 있는 공간의 양이 제한될 수 있습니다. 메타데이터가 더 많이 복구됨에 따라 더 많은 여유 공간을 사용할 수 있게 됩니다.
  • VDO 볼륨이 복구되는 동안 작성된 데이터는 데이터가 아직 복구되지 않은 볼륨의 일부에 있는 경우 충돌 전에 기록된 데이터에 대해 중복되지 않을 수 있습니다. VDO는 볼륨을 복구하는 동안 데이터를 압축할 수 있습니다. 여전히 압축 블록을 읽거나 덮어 쓸 수 있습니다.
  • 온라인 복구 중에는 특정 통계를 사용할 수 없습니다 : 예를 들어 사용 중인 블록블록은 무료입니다. 다시 빌드가 완료되면 이러한 통계를 사용할 수 있습니다.
  • 읽기 및 쓰기에 대한 응답 시간은 지속적인 복구 작업으로 인해 일반적인 것보다 느려질 수 있습니다.

복구 모드에서 VDO 볼륨을 안전하게 종료할 수 있습니다. 복구를 종료하기 전에 복구가 완료되지 않으면 다음에 시작할 때 장치가 복구 모드로 전환됩니다.

VDO 볼륨은 자동으로 복구 모드를 종료하고 모든 참조 수를 수정한 경우 일반 모드로 이동합니다. 관리자 조치가 필요하지 않습니다. 자세한 내용은 36.2.5.4절. “VDO 볼륨 복구 온라인”의 내용을 참조하십시오.

읽기 전용

VDO 볼륨이 치명적인 내부 오류가 발생하면 읽기 전용 모드로 전환됩니다. 읽기 전용 모드로 인해 메타데이터 손상 또는 백업 스토리지 장치가 읽기 전용이 될 수 있는 이벤트입니다. 이 모드는 오류 상태입니다.

읽기 전용 모드에서는 데이터가 정상적으로 작동하지만 데이터 쓰기가 항상 실패합니다. VDO 볼륨은 관리자가 문제를 해결할 때까지 읽기 전용 모드로 유지됩니다.

읽기 전용 모드에서 VDO 볼륨을 안전하게 종료할 수 있습니다. 모드는 일반적으로 VDO 볼륨을 다시 시작한 후에도 지속됩니다. 드문 경우지만 VDO 볼륨은 백업 스토리지 장치에 읽기 전용 상태를 기록할 수 없습니다. 이러한 경우 VDO는 대신 복구를 시도합니다.

볼륨이 읽기 전용 모드에 있으면 볼륨의 데이터가 손실되거나 손상되지 않았음을 보장할 수 없습니다. 이러한 경우 Red Hat은 읽기 전용 볼륨에서 데이터를 복사하고 백업에서 볼륨을 복원할 수 있도록 권장합니다.

데이터 손상의 위험이 허용되면 VDO 볼륨 메타데이터를 오프라인 다시 빌드하여 볼륨을 온라인 상태로 가져와서 사용 가능하게 만들 수 있습니다. 데이터의 무결성을 보장할 수 없습니다. 자세한 내용은 36.2.5.5절. “VDO 볼륨 메타데이터의 오프라인 다시 빌드 강제 적용”의 내용을 참조하십시오.

36.2.5.4. VDO 볼륨 복구 온라인

이 절차에서는 불명확한 종료 후 메타데이터를 복구하기 위해 VDO 볼륨에서 온라인 복구를 수행합니다.

절차

  1. VDO 볼륨이 아직 시작되지 않은 경우 다음을 시작합니다.

    # vdo start --name=my-vdo

    추가 단계는 필요하지 않습니다. 복구는 백그라운드에서 실행됩니다.

  2. 사용 중인 블록과 같은 볼륨 통계에 의존하는 경우 사용 가능한 블록이 될 때까지 기다립니다.

36.2.5.5. VDO 볼륨 메타데이터의 오프라인 다시 빌드 강제 적용

이 절차에서는 불명확한 종료 후 복구할 VDO 볼륨 메타데이터의 강제 오프라인 재빌드를 수행합니다.

주의

이 절차에서는 볼륨에서 데이터가 손실될 수 있습니다.

사전 요구 사항

  • VDO 볼륨이 시작됩니다.

절차

  1. 볼륨이 읽기 전용 모드인지 확인합니다. 명령 출력의 운영 모드 특성을 참조하십시오.

    # vdo status --name=my-vdo

    볼륨이 읽기 전용 모드가 아닌 경우 오프라인에서 강제로 다시 빌드할 필요가 없습니다. 36.2.5.4절. “VDO 볼륨 복구 온라인” 에 설명된 대로 온라인 복구를 수행합니다.

  2. 실행 중인 경우 볼륨을 중지합니다.

    # vdo stop --name=my-vdo
  3. --forceRebuild 옵션을 사용하여 볼륨을 다시 시작합니다.

    # vdo start --name=my-vdo --forceRebuild

36.2.5.6. 성공적으로 생성된 VDO 볼륨 제거

이 절차에서는 intermediate 상태에서 VDO 볼륨을 정리합니다. 볼륨을 생성할 때 오류가 발생하면 볼륨이 중간 상태에 남아 있습니다. 예를 들면 다음과 같은 상황이 발생할 수 있습니다.

  • 시스템 충돌
  • 전원 실패
  • 관리자가 실행 중인 VNI create 명령을 인터럽트합니다.

절차

  • 정리하려면 --force 옵션을 사용하여 실패한 볼륨을 제거합니다.

    # vdo remove --force --name=my-vdo

    관리자가 볼륨이 생성되지 않았기 때문에 시스템 구성을 변경하여 충돌이 발생할 수 있으므로 --force 옵션이 필요합니다.

    --force 옵션을 사용하지 않으면 다음 메시지와 함께 EgressIP remove 명령이 실패합니다.

    [...]
    A previous operation failed.
    Recovery from the failure either failed or was interrupted.
    Add '--force' to 'remove' to perform the following cleanup.
    Steps to clean up VDO my-vdo:
    umount -f /dev/mapper/my-vdo
    udevadm settle
    dmsetup remove my-vdo
    vdo: ERROR - VDO volume my-vdo previous operation (create) is incomplete

36.2.6. UDS 인덱스 최적화

UDS 인덱스의 특정 설정을 구성하여 시스템에 최적화할 수 있습니다.

중요

VDO 볼륨을 만든 후에는 UDS 인덱스의 속성을 변경할 수 없습니다.

36.2.6.1. VDO 볼륨의 구성 요소

VDO는 블록 장치를 백업 저장소로 사용합니다. 여기에는 하나 이상의 디스크, 파티션 또는 플랫 파일로 구성된 물리적 스토리지 집계가 포함될 수 있습니다. 스토리지 관리 도구가 VDO 볼륨을 생성할 때 VDO는 UDS 인덱스 및 VDO 볼륨을 위한 볼륨 공간을 예약합니다. UDS 인덱스 및 VDO 볼륨은 서로 상호 작용하여 중복된 블록 스토리지를 제공합니다.

그림 36.6. VDO 디스크 조직

VDO 디스크 조직

VDO 솔루션은 다음 구성 요소로 구성됩니다.

kvdo

Linux 장치 매퍼 계층에 로드되는 커널 모듈은 중복되고 압축되며 씬 프로비저닝된 블록 스토리지 볼륨을 제공합니다.

kvdo 모듈은 블록 장치를 노출합니다. 블록 스토리지를 위해 이 블록 장치에 직접 액세스하거나 XFS 또는 ext4와 같은 Linux 파일 시스템을 통해 제공할 수 있습니다.

kvdo 가 VDO 볼륨에서 데이터의 논리 블록을 읽기 위한 요청을 수신하면 요청된 논리 블록을 기본 물리적 블록에 매핑한 다음 요청된 데이터를 읽고 반환합니다.

kvdo 가 VDO 볼륨에 데이터 블록을 쓰기 위한 요청을 수신하면 먼저 요청이 DISCARD 또는 TRIM 요청인지 또는 데이터가 균일하게 0인지 여부를 확인합니다. 이러한 조건 중 하나가 true이면 kvdo 는 블록 맵을 업데이트하고 요청을 승인합니다. 그렇지 않으면 VDO는 데이터를 처리하고 최적화합니다.

UDS

볼륨의 Universal Deduplication Service(UDS) 인덱스와 통신하는 커널 모듈이며 중복을 위해 데이터를 분석합니다. 새로운 데이터의 각 부분에 대해 UDS는 이전에 저장된 데이터 조각과 동일한지 빠르게 결정합니다. 인덱스가 일치하는 항목을 찾으면 스토리지 시스템은 동일한 정보를 두 번 이상 저장하지 않도록 기존 항목을 내부적으로 참조할 수 있습니다.

UDS 인덱스는 uds 커널 모듈로 커널 내부에서 실행됩니다.

명령줄 툴
최적화된 스토리지를 구성하고 관리하는 데 사용됩니다.

36.2.6.2. UDS 인덱스

VDO는 UDS라는 고성능 중복 제거 인덱스를 사용하여 데이터의 중복 블록을 감지합니다.

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

UDS 인덱스는 uds 커널 모듈로 커널 내부에서 실행됩니다.

중복 제거 창 은 인덱스에서 기억하는 이전에 작성된 블록 수입니다. 중복 제거 창의 크기를 구성할 수 있습니다. 지정된 창 크기의 경우 인덱스에는 특정 양의 RAM과 특정 양의 디스크 공간이 필요합니다.For a given window size, the index requires a specific amount of RAM and a specific amount of disk space. 일반적으로 창 크기는 --indexMem=size 옵션을 사용하여 인덱스 메모리 크기를 지정하여 결정됩니다. 그런 다음 VDO는 자동으로 사용할 디스크 공간의 양을 결정합니다.

UDS 인덱스는 다음 두 부분으로 구성되어 있습니다.

  • 컴팩트한 표현은 고유한 블록당 최대 하나의 항목을 포함하는 메모리에서 사용됩니다.
  • 오류가 발생하면 인덱스에 표시된 관련 블록 이름을 순서대로 기록하는 디스크상의 구성 요소입니다.

UDS는 캐시를 포함하여 메모리의 항목당 평균 4바이트를 사용합니다.

on-disk 구성 요소는 UDS에 전달된 바인딩된 데이터 기록을 유지 관리합니다. UDS는 이 중복 제거 창에 가장 최근에 확인된 블록의 이름이 포함된 데이터에 대한 중복 제거 조언을 제공합니다. 중복 제거 창을 사용하면 UDS가 대규모 데이터 리포지토리를 인덱싱하는 데 필요한 메모리 양을 제한하면서 데이터를 가능한 한 효율적으로 인덱싱할 수 있습니다. 중복 제거 창의 경계 특성에도 불구하고, 중복 제거가 높은 수준의 중복 제거도 있는 대부분의 데이터 세트는 높은 수준의 일시적인 지역성을 나타냅니다. 즉, 거의 동시에 작성된 블록 세트 중에서 대부분의 중복 제거가 발생합니다. 또한 일반적으로 기록되는 데이터는 오래 전에 작성된 데이터보다 최근에 기록된 데이터를 복제할 가능성이 높습니다. 따라서 특정 시간 간격에 대한 지정된 워크로드의 경우 UDS가 가장 최근 데이터 또는 모든 데이터만 인덱싱하는지의 중복 제거 속도는 종종 동일합니다.

중복된 데이터는 일시적인 지역성을 나타내는 경향이 있기 때문에 스토리지 시스템의 모든 블록을 인덱싱할 필요가 거의 없습니다. 이로 인해 인덱스 메모리 비용이 중복 제거로 인한 스토리지 비용을 절감할 수 없었습니다. 인덱스 크기 요구 사항은 데이터 수집 비율과 더 밀접하게 관련이 있습니다. 예를 들어 전체 용량이 100TB이지만 주당 1TB의 수집 속도를 사용하는 스토리지 시스템을 고려해 보십시오. 4TB의 중복 제거 기간을 통해 UDS는 지난 한 달 이내에 작성된 데이터 중에서 가장 중복되는 중복을 감지할 수 있습니다.

36.2.7. VDO에서 중복 제거 활성화 또는 비활성화

경우에 따라 볼륨에서 읽고 쓰는 기능을 유지하면서 VDO 볼륨에 작성된 데이터의 중복 제거를 일시적으로 비활성화할 수 있습니다. 중복 제거를 비활성화하면 후속 쓰기가 중복되는 것을 방지하지만 이미 중복된 데이터는 그대로 유지됩니다.

36.2.7.1. VDO에서 중복 제거

중복 제거는 중복 블록의 여러 복사본을 제거하여 스토리지 리소스 사용을 줄이는 기술입니다.

동일한 데이터를 두 번 이상 작성하는 대신 VDO는 각 중복 블록을 감지하고 이를 원래 블록에 대한 참조로 기록합니다. VDO는 VDO 위의 스토리지 계층에서 물리적 블록 주소로 사용하는 논리 블록 주소에서 VDO의 스토리지 계층에서 사용하는 매핑을 유지합니다.

중복 제거 후 여러 개의 논리 블록 주소를 동일한 물리적 블록 주소에 매핑할 수 있습니다. 이를 공유 블록이라고 합니다. 블록 공유는 스토리지 사용자에게 보이지 않으므로 VDO가 존재하지 않는 것처럼 블록을 읽고 씁니다.

공유 블록을 덮어쓰는 경우 VDO는 새 블록 데이터를 저장하기 위해 새 물리적 블록을 할당하여 공유 물리적 블록에 매핑된 다른 논리 블록 주소가 수정되지 않도록 합니다.

36.2.7.2. VDO 볼륨에서 중복 제거 활성화

이 절차에서는 연결된 UDS 인덱스를 다시 시작하고 중복 제거가 다시 활성화되었음을 VDO 볼륨에 알립니다.

참고

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

절차

  • VDO 볼륨에서 중복 제거를 다시 시작하려면 다음 명령을 사용합니다.

    # vdo enableDeduplication --name=my-vdo

36.2.7.3. VDO 볼륨에서 중복 제거 비활성화

이 절차에서는 연결된 UDS 인덱스를 중지하고 중복 제거가 더 이상 활성화되지 않았음을 VDO 볼륨에 알립니다.

절차

  • VDO 볼륨에서 중복 제거를 중지하려면 다음 명령을 사용합니다.

    # vdo disableDeduplication --name=my-vdo
  • introduces create 명령에 --deduplication=disabled 옵션을 추가하여 새 VDO 볼륨을 만들 때 중복 제거를 비활성화할 수도 있습니다.

36.2.8. VDO에서 압축 활성화 또는 비활성화

VDO는 데이터 압축을 제공합니다. 이를 비활성화하면 성능을 극대화하고 압축할 가능성이 없는 데이터 처리 속도를 높일 수 있습니다. 다시 활성화하면 공간 절약이 증가할 수 있습니다.

36.2.8.1. VDO의 압축

VDO는 블록 수준 중복 제거 외에도 HIOPS Compression™ 기술을 사용하여 인라인 블록 수준 압축을 제공합니다.

VDO 볼륨 압축은 기본적으로 켜져 있습니다.

중복 제거는 가상 머신 환경과 백업 애플리케이션에 적합한 솔루션이지만 압축은 일반적으로 로그 파일 및 데이터베이스와 같은 블록 수준 중복성을 표시하지 않는 체계적이고 구조화되지 않은 파일 형식으로 매우 잘 작동합니다.

압축은 중복으로 확인되지 않은 블록에서 작동합니다. VDO가 처음으로 고유 데이터를 볼 때 데이터를 압축합니다. 이미 저장된 데이터의 후속 사본은 추가 압축 단계없이 중복됩니다.

압축 기능은 여러 압축 작업을 한 번에 처리할 수 있는 병렬화된 패키징 알고리즘을 기반으로 합니다. 블록을 처음 저장하고 요청자에게 응답을 보낸 후, 최상의 패킹 알고리즘은 압축 시 단일 물리적 블록에 적합할 수 있는 여러 블록을 찾습니다. 특정 물리 블록이 추가 압축 블록을 보유할 가능성이 없다고 판단되면 스토리지에 기록되고 압축되지 않은 블록이 해제되어 재사용됩니다.

압축 및 패키징 작업을 요청자에게 이미 응답한 후 압축 및 패키징 작업을 수행하면 압축을 사용하면 대기 시간이 최소화됩니다.

36.2.8.2. VDO 볼륨에서 압축 활성화

이 절차를 통해 VDO 볼륨에서 압축을 사용하면 공간 절약을 높일 수 있습니다.

참고

압축은 기본적으로 활성화되어 있습니다.

절차

  • 다시 시작하려면 다음 명령을 사용하십시오.

    # vdo enableCompression --name=my-vdo

36.2.8.3. VDO 볼륨에서 압축 비활성화

이 절차에서는 VDO 볼륨에서 압축을 중지하여 성능을 극대화하거나 압축하지 않은 데이터 처리 속도를 향상시킵니다.

절차

  • 기존 VDO 볼륨에서 압축을 중지하려면 다음 명령을 사용합니다.

    # vdo disableCompression --name=my-vdo
  • 또는 새 볼륨을 생성할 때 --compression=disabled 옵션을 EgressIP create 명령에 추가하여 압축을 비활성화할 수 있습니다.

36.2.9. VDO 볼륨의 크기 증가

VDO 볼륨의 물리 크기를 늘려 더 기본 스토리지 용량 또는 논리 크기를 사용하여 볼륨에서 더 많은 용량을 제공할 수 있습니다.

36.2.9.1. VDO 볼륨의 물리 및 논리적 크기

VDO는 다음과 같은 방법으로 물리적, 사용 가능한 물리적 크기 및 논리 크기를 활용합니다.

물리적 크기

이는 기본 블록 장치와 크기가 동일합니다. VDO는 다음 용도로 이 스토리지를 사용합니다.

  • 사용자 데이터가 분할되고 압축될 수 있습니다.
  • VDO 메타데이터(예: UDS 인덱스)
사용 가능한 물리적 크기

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

물리 크기와 같습니다. 메타데이터의 크기를 뺀 후 나머지 볼륨을 지정된 slab 크기로 slabs로 분할한 후 나머지를 뺀 값입니다.

논리 크기

이는 VDO 볼륨이 애플리케이션에 제공하는 프로비저닝된 크기입니다. 일반적으로 사용 가능한 물리적 크기보다 큽니다. --vdoLogicalSize 옵션이 지정되지 않은 경우 논리 볼륨의 프로비저닝이 이제 1:1 비율로 프로비저닝됩니다. 예를 들어 VDO 볼륨이 20GB 블록 장치 위에 배치된 경우 UDS 인덱스(기본 인덱스 크기가 사용되는 경우) 2.5GB가 예약되어 있습니다. 나머지 17.5GB는 VDO 메타데이터 및 사용자 데이터에 제공됩니다. 결과적으로 사용할 수 있는 스토리지는 17.5GB를 초과하지 않으며 실제 VDO 볼륨을 구성하는 메타데이터로 인해 줄어들 수 있습니다.

VDO는 현재 최대 논리 크기가 4PB인 물리 볼륨의 크기를 254배까지 지원합니다.

그림 36.7. VDO 디스크 조직

VDO 디스크 조직

이 그림에서 VDO 중복된 스토리지 대상은 블록 장치의 상단에 완전히 배치되므로 VDO 볼륨의 물리적 크기는 기본 블록 장치와 같습니다.

추가 리소스

36.2.9.2. VDO의 씬 프로비저닝

VDO는 씬 프로비저닝된 블록 스토리지 대상입니다. VDO 볼륨에서 사용하는 물리 공간의 양은 스토리지 사용자에게 제공되는 볼륨의 크기와 다를 수 있습니다. 이러한 차이를 사용하여 스토리지 비용을 절감할 수 있습니다.

공간 부족 조건

기록된 데이터가 예상 최적화 속도를 얻지 못하는 경우 스토리지 공간이 예기치 않게 실행되지 않도록 주의해야 합니다.

논리 블록(가상 스토리지)의 수가 물리적 블록 수를 초과할 때마다 파일 시스템 및 애플리케이션이 예기치 않게 공간이 부족해질 수 있습니다. 이러한 이유로 VDO를 사용하는 스토리지 시스템은 VDO 볼륨에서 사용 가능한 풀의 크기를 모니터링하는 방법을 제공해야 합니다.

EgressIP stats 유틸리티를 사용하여 이 사용 가능한 풀의 크기를 확인할 수 있습니다. 이 유틸리티의 기본 출력에는 Linux df 유틸리티와 유사한 형식으로 실행 중인 모든 VDO 볼륨에 대한 정보가 나열됩니다. 예를 들면 다음과 같습니다.

Device                1K-blocks   Used        Available   Use%
/dev/mapper/vdo-name  211812352   105906176   105906176   50%

VDO 볼륨의 물리적 스토리지 용량이 거의 가득 차면 VDO는 다음과 같이 시스템 로그에 경고를 보고합니다.

Oct  2 17:13:39 system lvm[13863]: Monitoring VDO pool vdo-name.
Oct  2 17:27:39 system lvm[13863]: WARNING: VDO pool vdo-name is now 80.69% full.
Oct  2 17:28:19 system lvm[13863]: WARNING: VDO pool vdo-name is now 85.25% full.
Oct  2 17:29:39 system lvm[13863]: WARNING: VDO pool vdo-name is now 90.64% full.
Oct  2 17:30:29 system lvm[13863]: WARNING: VDO pool vdo-name is now 96.07% full.
참고

이러한 경고 메시지는 lvm2-monitor 서비스가 실행 중인 경우에만 표시됩니다. 기본적으로 활성화되어 있습니다.

공간 부족 조건을 방지하는 방법

사용 가능한 풀의 크기가 특정 수준 아래로 떨어지면 다음 작업을 수행할 수 있습니다.

  • 데이터 삭제. 이렇게 하면 삭제된 데이터가 중복되지 않을 때마다 공간을 회수합니다. 데이터 삭제는 삭제가 실행된 후에만 공간을 확보합니다.
  • 물리적 스토리지 추가
중요

공간 부족 상황을 방지하기 위해 VDO 볼륨의 물리적 공간을 모니터링합니다. 물리 블록을 실행하지 않으면 최근에 기록되고 인식되지 않은 VDO 볼륨에서 데이터가 손실될 수 있습니다.

씬 프로비저닝 및 TRIM 및 DISCARD 명령

씬 프로비저닝의 스토리지 절감을 활용하기 위해 물리적 스토리지 계층은 데이터 삭제 시기를 알아야 합니다. 씬 프로비저닝된 스토리지에서 작동하는 파일 시스템은 TRIM 또는 DISCARD 명령을 전송하여 더 이상 논리 블록이 필요하지 않은 경우 스토리지 시스템에 알립니다.

TRIM 또는 DISCARD 명령을 전송하는 몇 가지 방법을 사용할 수 있습니다.

  • 삭제 마운트 옵션을 사용하면 파일이 삭제될 때마다 파일 시스템에서 이러한 명령을 보낼 수 있습니다.
  • fstrim 과 같은 유틸리티를 사용하여 제어된 방식으로 명령을 보낼 수 있습니다. 이러한 유틸리티는 파일 시스템에 사용되지 않는 논리 블록을 감지하고 TRIM 또는 DISCARD 명령 형태로 스토리지 시스템으로 정보를 보냅니다.

사용되지 않는 블록에서 TRIM 또는 DISCARD 를 사용할 필요가 없습니다. VDO에는 고유하지 않습니다. 씬 프로비저닝된 스토리지 시스템은 동일한 문제를 안고 있습니다.

36.2.9.3. VDO 볼륨의 논리 크기 증가

이 절차에서는 지정된 VDO 볼륨의 논리 크기를 늘립니다. 이는 처음에 공간 부족에서 안전하게 실행할 수 있을 만큼 작은 논리 크기를 가진 VDO 볼륨을 만들 수 있습니다. 일정 기간 후에 데이터 감소의 실제 속도를 평가할 수 있으며 충분한 경우 VDO 볼륨의 논리 크기를 늘릴 수 있으므로 공간 절약을 활용할 수 있습니다.

VDO 볼륨의 논리 크기를 줄일 수 없습니다.

프로세스

  • 논리 크기를 늘리려면 다음을 사용합니다.

    # vdo growLogical --name=my-vdo \
                      --vdoLogicalSize=new-logical-size

    논리 크기가 증가함에 따라 VDO는 새 크기의 볼륨 상단에 있는 장치 또는 파일 시스템에 대해 알립니다.

36.2.9.4. VDO 볼륨의 물리 크기 증가

이 절차에서는 VDO 볼륨에서 사용할 수 있는 물리 스토리지 양을 늘립니다.

이러한 방식으로 VDO 볼륨을 축소할 수 없습니다.

사전 요구 사항

  • 기본 블록 장치에는 VDO 볼륨의 현재 물리적 크기보다 큰 용량이 있습니다.

    그렇지 않으면 장치의 크기를 늘릴 수 있습니다. 정확한 절차는 장치 유형에 따라 다릅니다. 예를 들어,ECDHE 또는 GPT 파티션의 크기를 조정하려면 스토리지 장치 관리 가이드의 파티션 크기 조정 섹션을 참조하십시오.

절차

  • VDO 볼륨에 새 물리 스토리지 공간을 추가합니다.

    # vdo growPhysical --name=my-vdo

36.2.10. VDO 볼륨 제거

시스템에서 기존 VDO 볼륨을 제거할 수 있습니다.

36.2.10.1. 작동 중인 VDO 볼륨 제거

이 절차에서는 VDO 볼륨과 관련 UDS 인덱스를 제거합니다.

절차

  1. 파일 시스템을 마운트 해제하고 VDO 볼륨에서 스토리지를 사용하는 애플리케이션을 중지합니다.
  2. 시스템에서 VDO 볼륨을 제거하려면 다음을 사용합니다.

    # vdo remove --name=my-vdo

36.2.10.2. 성공적으로 생성된 VDO 볼륨 제거

이 절차에서는 intermediate 상태에서 VDO 볼륨을 정리합니다. 볼륨을 생성할 때 오류가 발생하면 볼륨이 중간 상태에 남아 있습니다. 예를 들면 다음과 같은 상황이 발생할 수 있습니다.

  • 시스템 충돌
  • 전원 실패
  • 관리자가 실행 중인 VNI create 명령을 인터럽트합니다.

절차

  • 정리하려면 --force 옵션을 사용하여 실패한 볼륨을 제거합니다.

    # vdo remove --force --name=my-vdo

    관리자가 볼륨이 생성되지 않았기 때문에 시스템 구성을 변경하여 충돌이 발생할 수 있으므로 --force 옵션이 필요합니다.

    --force 옵션을 사용하지 않으면 다음 메시지와 함께 EgressIP remove 명령이 실패합니다.

    [...]
    A previous operation failed.
    Recovery from the failure either failed or was interrupted.
    Add '--force' to 'remove' to perform the following cleanup.
    Steps to clean up VDO my-vdo:
    umount -f /dev/mapper/my-vdo
    udevadm settle
    dmsetup remove my-vdo
    vdo: ERROR - VDO volume my-vdo previous operation (create) is incomplete
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

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

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.