Red Hat Training

A Red Hat training course is available for RHEL 8

2.5. 불완전한 종료 후 VDO 볼륨 복구

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

2.5.1. VDO 쓰기 모드

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

sync

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

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

async

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

기본 스토리지에서 쓰기 명령이 완료되면 데이터가 영구 스토리지에 기록되도록 보장하지 않는 경우 VDO를 async 모드로 설정해야 합니다. 즉 스토리지에 휘발성 쓰기 캐시가 있는 경우 VDO를 설정해야 합니다.

async-unsafe

이 모드에는 async 와 동일한 속성이 있지만 Atomicity, Consistency, Isolation, Durability(ACID)와 호환되지 않습니다. 비동기 와 비교할 때비동기-비보안은 더 나은 성능을 제공합니다.

주의

ACID 준수를 가정하는 애플리케이션 또는 파일 시스템이 VDO 볼륨 위에서 작동하는 경우 async-unsafe 모드에서는 예기치 않은 데이터 손실이 발생할 수 있습니다.

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

2.5.2. VDO 볼륨 복구

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

  • 볼륨의 메타데이터의 일관성을 확인합니다.
  • 필요한 경우 메타데이터 부분을 다시 빌드하여 복구합니다.

재구축은 자동이며 사용자 개입이 필요하지 않습니다.

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

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

두 모드에서는 승인되지 않았거나 플러시되지 않은 일부 쓰기도 다시 빌드될 수 있습니다.

자동 및 수동 복구

VDO 볼륨이 운영 모드로 전환되면 VDO는 다시 온라인 상태가 되면 불명확한 VDO 볼륨을 자동으로 다시 빌드합니다. 이것을 온라인 복구 라고 합니다.

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

추가 리소스

2.5.3. VDO 운영 모드

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

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

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

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

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

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

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

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

읽기 전용

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

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

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

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

데이터 손상 위험이 허용되는 경우 볼륨을 온라인으로 다시 가져와 사용할 수 있도록 VDO 볼륨 메타데이터를 오프라인으로 다시 빌드할 수 있습니다. 재구축된 데이터의 무결성은 보장할 수 없습니다. 자세한 내용은 2.5.5절. “VDO 볼륨 메타데이터의 오프라인 다시 빌드 강제” 의 내용을 참조하십시오.

2.5.4. 온라인에서 VDO 볼륨 복구

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

절차

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

    # vdo start --name=my-vdo

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

  2. 사용 중인 블록과 블록과 같은 볼륨 통계를 자유롭게 사용하는 경우 사용할 수 있을 때까지 기다립니다.

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

이 절차에서는 불명확한 종료 후 복구하기 위해 VDO 볼륨 메타데이터를 강제로 오프라인으로 다시 빌드합니다.

주의

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

사전 요구 사항

  • VDO 볼륨이 시작됩니다.

절차

  1. 볼륨이 읽기 전용 모드인지 확인합니다. 명령 출력에서 operating mode 속성을 확인합니다.

    # vdo status --name=my-vdo

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

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

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

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

2.5.6. 성공적으로 생성되지 않은 VDO 볼륨 제거

이 절차에서는 중간 상태에서 VDO 볼륨을 정리합니다. 볼륨 생성 시 오류가 발생하는 경우 볼륨이 중간 상태로 유지됩니다. 예를 들면 다음과 같은 경우에 발생할 수 있습니다.

  • 시스템이 충돌합니다
  • 전원 실패
  • 관리자는 실행 중인 vdo create 명령을 중단합니다.

절차

  • 정리하려면 --force 옵션을 사용하여 성공적으로 생성되지 않은 볼륨을 제거합니다.

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

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

    --force 옵션을 사용하지 않으면 vdo 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