67.8. 논리 볼륨의 스냅샷
LVM 스냅샷 기능을 사용하면 서비스 중단 없이 특정 시간에 /dev/sda 와 같은 볼륨의 가상 이미지를 생성할 수 있습니다.
67.8.1. 스냅샷 볼륨 개요 링크 복사링크가 클립보드에 복사되었습니다!
스냅샷을 만든 후 원래 볼륨(원본)을 수정할 때 스냅샷 기능은 볼륨 상태를 재구성할 수 있도록 변경 이전에 수정된 데이터 영역을 복사합니다. 스냅샷을 만들 때 원본 항목에 대한 전체 읽기 및 쓰기 액세스 권한이 유지됩니다.
스냅샷이 생성된 후 변경되는 데이터 영역만 복사하므로 스냅샷 기능에는 최소 스토리지 용량이 필요합니다. 예를 들어 거의 업데이트되지 않은 출처를 사용하면 원본 용량의 3-5 %로 스냅샷을 유지 관리하는 데 충분합니다. 백업 절차를 대체하지 않습니다. 스냅샷 복사본은 가상 복사본이며 실제 미디어 백업이 아닙니다.
스냅샷 크기는 원본 볼륨에 대한 변경 사항을 저장하기 위한 공간을 별도로 제어합니다. 예를 들어 스냅샷을 생성한 다음 원본을 완전히 덮어쓰는 경우 스냅샷은 변경 사항을 보유할 원본 볼륨만큼 커야 합니다. 스냅샷 크기를 정기적으로 모니터링해야 합니다. 예를 들어 /usr
과 같은 읽기 볼륨 스냅샷의 수명이 짧은 스냅샷에는 /home
과 같은 많은 쓰기가 포함되어 있기 때문에 볼륨의 장기 스냅샷보다 적은 공간이 필요합니다.
스냅샷이 가득 차면 원본 볼륨의 변경 사항을 더 이상 추적할 수 없기 때문에 스냅샷이 유효하지 않습니다. 그러나 스냅샷이 유효하지 않게 되도록 LVM을 구성하여 스냅샷이 유효하지 않은 것을 방지하기 위해 snapshot_autoextend_threshold
값을 초과할 때마다 스냅샷을 자동으로 확장할 수 있습니다. 스냅샷은 완전히 재조정 가능하며 다음 작업을 수행할 수 있습니다.
- 스토리지 용량이 있는 경우 스냅샷 볼륨의 크기를 늘릴 수 있으므로 해당 용량이 삭제되지 않습니다.
- 스냅샷 볼륨이 필요한 것보다 크면 볼륨 크기를 줄여 다른 논리 볼륨에 필요한 공간을 확보할 수 있습니다.
스냅샷 볼륨은 다음과 같은 이점을 제공합니다.
- 대부분의 경우 데이터를 지속적으로 업데이트하는 라이브 시스템을 중단하지 않고 논리 볼륨에서 백업을 수행해야 하는 경우 스냅샷을 생성합니다.
-
스냅샷 파일 시스템에서
fsck
명령을 실행하여 파일 시스템의 무결성을 확인하고 원래 파일 시스템에 파일 시스템 복구가 필요한지 확인할 수 있습니다. - 스냅샷은 읽기/쓰기이므로 실제 데이터를 건드리지 않고 스냅샷을 작성하고 스냅샷에 대해 테스트를 실행하여 프로덕션 데이터에 대해 애플리케이션을 테스트할 수 있습니다.
- Red Hat Virtualization에서 사용할 LVM 볼륨을 생성할 수 있습니다. LVM 스냅샷을 사용하여 가상 게스트 이미지의 스냅샷을 생성할 수 있습니다. 이러한 스냅샷을 사용하면 최소한의 추가 스토리지를 사용하여 기존 게스트를 수정하거나 새 게스트를 생성할 수 있는 편리한 방법을 제공할 수 있습니다.
67.8.2. Copy-On-Write 스냅샷 생성 링크 복사링크가 클립보드에 복사되었습니다!
생성 시 COW(Copy-On-Write) 스냅샷에 데이터가 포함되지 않습니다. 대신 스냅샷 생성 시 원본 볼륨의 데이터 블록을 참조합니다. 원래 볼륨의 데이터가 변경되면 COW 시스템은 변경되지 않은 원본 데이터를 변경하기 전에 스냅샷에 복사합니다. 이렇게 하면 변경 사항이 발생할 때만 스냅샷이 크기가 증가하여 스냅샷 생성 시 원본 볼륨의 상태를 저장합니다. COW 스냅샷은 최소한의 데이터 변경 사항이 있는 단기 백업 및 상황에 효율적이며 특정 시점을 캡처하고 되돌릴 수 있는 공간을 제공합니다. COW 스냅샷을 생성할 때 원래 볼륨에 대한 예상 변경 사항에 따라 충분한 스토리지를 할당합니다.
스냅샷을 생성하기 전에 스냅샷의 스토리지 요구 사항과 라이프사이클을 고려해야 합니다. 스냅샷의 크기는 의도된 수명 동안 변경 사항을 캡처하기에 충분하지만 원래 LV의 크기를 초과할 수 없습니다. 낮은 변경 속도를 예상하는 경우 스냅샷 크기가 10%-15%로 충분할 수 있습니다. 변경 속도가 높은 LV의 경우 30% 이상을 할당해야 할 수 있습니다.
스냅샷의 스토리지 사용량을 정기적으로 모니터링하는 것이 중요합니다. 스냅샷이 할당된 공간의 100%에 도달하면 유효하지 않습니다. lvs
명령을 사용하여 스냅샷에 대한 정보를 표시할 수 있습니다.
스냅샷을 완전히 채워지기 전에 스냅샷을 확장해야 합니다. 이 작업은 lvextend
명령을 사용하여 수동으로 수행할 수 있습니다. 또는 /etc/lvm/lvm.conf
파일에서 snapshot_autoextend_threshold
및 snapshot_autoextend_percent
매개변수를 설정하여 자동 확장을 설정할 수 있습니다. 이 구성을 사용하면 사용량이 정의된 임계값에 도달하면 dmeventd
에서 스냅샷을 자동으로 확장할 수 있습니다.
COW 스냅샷을 사용하면 스냅샷을 만들 때와 같이 파일 시스템의 읽기 전용 버전에 액세스할 수 있습니다. 이를 통해 원래 파일 시스템에서 지속적인 작업을 중단하지 않고 백업 또는 데이터 분석이 가능합니다. 스냅샷이 마운트 및 사용되는 동안 원래 논리 볼륨과 파일 시스템을 계속 업데이트하고 정상적으로 사용할 수 있습니다.
다음 절차에서는 볼륨 그룹 Cryostat 001 에서 origin 이라는 논리 볼륨을 생성한 다음 snap 이라는 스냅샷을 생성하는 방법을 간략하게 설명합니다.
사전 요구 사항
- 관리 액세스.
- 볼륨 그룹을 생성했습니다. 자세한 내용은 LVM 볼륨 그룹 생성 을 참조하십시오.
프로세스
볼륨 그룹 Cryostat 001 에서 origin 이라는 논리 볼륨을 생성합니다.
lvcreate -L 1G -n origin vg001
# lvcreate -L 1G -n origin vg001
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 크기가 100MB 인 snap of /dev/vg001/origin LV라는 스냅샷을 생성합니다.
lvcreate --size 100M --name snap --snapshot /dev/vg001/origin
# lvcreate --size 100M --name snap --snapshot /dev/vg001/origin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 원래 볼륨과 사용 중인 스냅샷 볼륨의 현재 백분율을 표시합니다.
lvs -a -o +devices
# lvs -a -o +devices LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices origin vg001 owi-a-s--- 1.00g /dev/sde1(0) snap vg001 swi-a-s--- 100.00m origin 0.00 /dev/sde1(256)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
67.8.3. 스냅샷을 원래 볼륨에 병합 링크 복사링크가 클립보드에 복사되었습니다!
lvconvert
명령을 --merge
옵션과 함께 사용하여 스냅샷을 원래(원본) 볼륨에 병합합니다. 데이터 또는 파일이 손실되었거나 시스템을 이전 상태로 복원해야 하는 경우 시스템 롤백을 수행할 수 있습니다. 스냅샷 볼륨을 병합하면 결과 논리 볼륨의 이름, 마이너 번호, UUID가 있습니다. 병합은 진행 중이지만 origin에 대한 읽기 또는 쓰기는 병합되는 스냅샷으로 전달되면 나타납니다. 병합이 완료되면 병합된 스냅샷이 제거됩니다.
origin 및 snapshot 볼륨이 모두 열려 있지 않고 활성 상태가 되면 병합이 즉시 시작됩니다. 그렇지 않으면 원본 또는 스냅샷이 활성화된 후 병합이 시작되고 둘 다 닫힙니다. 원본 볼륨이 활성화된 후 루트 파일 시스템(예: 루트
파일 시스템)을 닫을 수 없는 원본으로 스냅샷을 병합할 수 있습니다.
프로세스
스냅샷 볼륨을 병합합니다. 다음 명령은 스냅샷 볼륨 을 원본과 병합합니다.
lvconvert --merge vg001/snap
# lvconvert --merge vg001/snap Merging of volume vg001/snap started. vg001/origin: Merged: 100.00%
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 원본 볼륨 보기:
lvs -a -o +devices
# lvs -a -o +devices LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices origin vg001 owi-a-s--- 1.00g /dev/sde1(0)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
67.8.4. 스냅샷 RHEL 시스템 역할을 사용하여 LVM 스냅샷 생성 링크 복사링크가 클립보드에 복사되었습니다!
새 스냅샷
RHEL 시스템 역할을 사용하여 LVM 스냅샷을 생성할 수 있습니다. 이 시스템 역할은 snapshot_lvm_action
매개변수를 확인하도록 설정하여 생성된 스냅샷에 충분한 공간이 있는지 확인하고 해당 이름과 충돌하지 않는지 확인합니다
. 생성된 스냅샷을 마운트하려면 snapshot_lvm_action
을 mount
로 설정합니다.
다음 예제에서는 nouuid
옵션이 설정되며 XFS 파일 시스템으로 작업할 때만 필요합니다. XFS는 동일한 UUID로 여러 파일 시스템을 동시에 마운트하는 것을 지원하지 않습니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다.
프로세스
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 여기에서
snapshot_lvm_set
매개변수는 동일한 볼륨 그룹(VG)의 특정 논리 볼륨(LV)을 설명합니다. 이 매개 변수를 설정하는 동안 다른 VG에서 LV를 지정할 수도 있습니다.플레이북 구문을 확인합니다.
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
Playbook을 실행합니다.
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
관리 노드에서 생성된 스냅샷을 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 관리 노드에서 /data1_snapshot 및 /data2_snapshot:의 존재를 확인하여 마운트 작업이 성공했는지 확인합니다.
ls -al /data1_snapshot ls -al /data2_snapshot
# ls -al /data1_snapshot # ls -al /data2_snapshot
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
67.8.5. 스냅샷 RHEL 시스템 역할을 사용하여 LVM 스냅샷 마운트 해제 링크 복사링크가 클립보드에 복사되었습니다!
snapshot_lvm_action
매개변수를 umount
로 설정하여 특정 스냅샷 또는 모든 스냅샷을 마운트 해제할 수 있습니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다. - 스냅샷 세트에 이름 <_snapset1_>을 사용하여 스냅샷을 생성했습니다.
-
snapshot_lvm_action
을 설정하여 스냅샷을마운트
하거나 수동으로 마운트했습니다.
프로세스
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.특정 LVM 스냅샷을 마운트 해제합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 여기에서
snapshot_lvm_lv
매개변수는 특정 논리 볼륨(LV)을 설명하고snapshot_lvm_vg
매개변수는 특정 볼륨 그룹(VG)을 설명합니다.LVM 스냅샷 세트를 마운트 해제합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 여기에서
snapshot_lvm_set
매개 변수는 동일한 VG의 특정 LV를 설명합니다. 이 매개 변수를 설정하는 동안 다른 VG에서 LV를 지정할 수도 있습니다.
플레이북 구문을 확인합니다.
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
Playbook을 실행합니다.
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
67.8.6. 스냅샷 RHEL 시스템 역할을 사용하여 LVM 스냅샷 확장 링크 복사링크가 클립보드에 복사되었습니다!
새 스냅샷 RHEL 시스템 역할을 사용하면 snapshot
_lvm_action 매개변수를 확장하도록 설정하여 LVM 스냅샷을
확장할
수 있습니다. snapshot_lvm_percent_space_required
매개변수를 확장 후 스냅샷에 할당해야 하는 필수 공간으로 설정할 수 있습니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다. - 지정된 볼륨 그룹 및 논리 볼륨에 대해 스냅샷이 생성되어 있습니다.
프로세스
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.percent_space_required
매개변수 값을 지정하여 모든 LVM 스냅샷을 확장합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 여기에서
snapshot_lvm_set
매개 변수는 동일한 VG의 특정 LV를 설명합니다. 이 매개 변수를 설정하는 동안 다른 VG에서 LV를 지정할 수도 있습니다.집합의 각 VG 및 LV 쌍에 대해
percent_space_required
를 다른 값으로 설정하여 설정된 LVM 스냅샷을 확장합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
플레이북 구문을 확인합니다.
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
Playbook을 실행합니다.
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
관리 노드에서 확장된 스냅샷을 30% 정도 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
67.8.7. 스냅샷 RHEL 시스템 역할을 사용하여 LVM 스냅샷 복원 링크 복사링크가 클립보드에 복사되었습니다!
새 스냅샷 RHEL 시스템 역할을 사용하면 snapshot
_lvm_action 매개변수를 되돌리도록 설정하여 LVM 스냅샷
을 원래 볼륨으로 되돌릴
수 있습니다.
논리 볼륨과 스냅샷 볼륨이 모두 열려 있지 않고 활성 상태가 아니면 되돌리기 작업이 즉시 시작됩니다. 그렇지 않으면 원본 또는 스냅샷이 활성화된 후 시작하고 둘 다 닫힙니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다. - <_snapset1_>을 snapset 이름으로 사용하여 지정된 볼륨 그룹 및 논리 볼륨에 대한 스냅샷을 생성했습니다.
프로세스
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.특정 LVM 스냅샷을 원래 볼륨으로 되돌립니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 여기에서
snapshot_lvm_lv
매개변수는 특정 논리 볼륨(LV)을 설명하고snapshot_lvm_vg
매개변수는 특정 볼륨 그룹(VG)을 설명합니다.LVM 스냅샷 세트를 원래 볼륨으로 되돌립니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 여기에서
snapshot_lvm_set
매개 변수는 동일한 VG의 특정 LV를 설명합니다. 이 매개 변수를 설정하는 동안 다른 VG에서 LV를 지정할 수도 있습니다.참고되돌리기
작업을 완료하는 데 시간이 다소 걸릴 수 있습니다.
플레이북 구문을 확인합니다.
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
Playbook을 실행합니다.
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 호스트를 재부팅하거나 다음 단계를 사용하여 논리 볼륨을 비활성화 및 다시 활성화합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
관리형 노드에서 복원된 스냅샷을 확인합니다.
lvs
# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert data1 data_vg -wi-a----- 1.00g data2 data_vg -wi-a----- 1.00g
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
67.8.8. 스냅샷 RHEL 시스템 역할을 사용하여 LVM 스냅샷 제거 링크 복사링크가 클립보드에 복사되었습니다!
새 스냅샷
RHEL 시스템 역할을 사용하면 스냅샷의 접두사 또는 패턴을 지정하고 snapshot_lvm_action
매개변수를 제거하여 모든 LVM 스냅샷을 제거할
수 있습니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다. - <_snapset1_>을 snapset 이름으로 사용하여 지정된 스냅샷을 생성했습니다.
프로세스
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.특정 LVM 스냅샷을 제거합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 여기에서
snapshot_lvm_vg
매개변수는 볼륨 그룹(VG)의 특정 논리 볼륨(LV)을 설명합니다.LVM 스냅샷 세트를 제거합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 여기에서
snapshot_lvm_set
매개 변수는 동일한 VG의 특정 LV를 설명합니다. 이 매개 변수를 설정하는 동안 다른 VG에서 LV를 지정할 수도 있습니다.
플레이북 구문을 확인합니다.
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
플레이북을 실행합니다.
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow