가상화 환경을 운영도중 발생한 삭제이미지를 복구했던 방법입니다.
가상화환경 뿐만 아니라 삭제된 파일이 프로세서가 유지되고 있는 상태라면 동일하게 복구가능합니다.
증상 :
– 가상화를 운영중인 환경에서 이미지파일(raw, qcow2)이 삭제되었으나 해당데몬은 실행중인 상태
– 인스턴스(VM) 상태는 읽기/쓰기 모두 정상이며 내부 프로세서에도 문제가 발생되지 않음
조치 :
단, 백그라운드 데몬이 실행이 중지되버릴 경우 inode 값이 삭제되어 데이타가 유실될 여지가 있기에 조심조심…..
따라서 현재 /proc 파일시스템에서 아직 운영상태중인 파일을 copy 함으로써 데이타를 복구시도
예제에서는 /VM_IMG/192.168.0.238 디렉토리내에 파일들이 모두 삭제되어버린 상태
[root@localhost ]# lsof /VM_IMG/
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
qemu 845 kvm 4uW REG 8,17 4 115081359 /VM_IMG/192.168.0.238/vnc/vm00001.pid (deleted)
qemu 845 kvm 12u REG 8,17 71740882944 115081388 /VM_IMG/192.168.0.238/192.168.0.238.qcow2 (deleted)
qemu 3571 kvm 4uW REG 8,17 5 115081290 /VM_IMG/192.168.0.151/vnc/vm00002.pid (deleted)
qemu 3571 kvm 12u REG 8,17 42124574720 115081287 /VM_IMG/192.168.0.151/192.168.0.151.qcow2 (deleted)
qemu 3571 kvm 15w REG 8,17 1 115081291 /VM_IMG/192.168.0.151/vnc/vm00001.serial (deleted)
/VM_IMG/192.168.0.238 내 파일 PID 값 = 845
[root@localhost fd]# pwd
/proc/845/fd ==> /proc/${PID}/fd
데이타를 저장하고 있는 이미지 파일명은 12
[root@localhost fd]# ls -al
total 0
dr-x—— 2 kvm kvm 0 Dec 9 15:02 .
dr-xr-xr-x 8 kvm kvm 0 Nov 25 04:34 ..
lrwx—— 1 kvm kvm 64 Dec 9 15:02 0 -> /dev/null
lrwx—— 1 kvm kvm 64 Dec 9 15:02 1 -> /dev/null
lrwx—— 1 kvm kvm 64 Dec 9 15:02 10 -> anon_inode:[eventfd]
lrwx—— 1 kvm kvm 64 Dec 9 15:02 11 -> /dev/net/tun
lrwx—— 1 kvm kvm 64 Dec 9 15:02 12 -> /VM_IMG/192.168.0.238/192.168.0.238.qcow2 (deleted)
lr-x—— 1 kvm kvm 64 Dec 9 15:02 13 -> pipe:[20343205]
l-wx—— 1 kvm kvm 64 Dec 9 15:02 14 -> pipe:[20343205]
lrwx—— 1 kvm kvm 64 Dec 9 15:02 17 -> anon_inode:kvm-vcpu
lrwx—— 1 kvm kvm 64 Dec 9 15:02 18 -> anon_inode:kvm-vcpu
lrwx—— 1 kvm kvm 64 Dec 9 15:02 19 -> socket:[20390697]
lrwx—— 1 kvm kvm 64 Dec 9 15:02 2 -> /dev/null
lrwx—— 1 kvm kvm 64 Dec 9 15:02 20 -> socket:[20390696]
lrwx—— 1 kvm kvm 64 Dec 9 15:02 21 -> anon_inode:[eventfd]
lrwx—— 1 kvm kvm 64 Dec 9 15:02 3 -> socket:[20452512]
lrwx—— 1 kvm kvm 64 Dec 9 15:02 4 -> /VM_IMG/192.168.0.238/vnc/vm00001.pid (deleted)
l-wx—— 1 kvm kvm 64 Dec 9 15:02 5 -> pipe:[20452513]
lrwx—— 1 kvm kvm 64 Dec 9 15:02 6 -> /dev/kvm
lrwx—— 1 kvm kvm 64 Dec 9 15:02 7 -> anon_inode:kvm-vm
lrwx—— 1 kvm kvm 64 Dec 9 15:02 8 -> anon_inode:[signalfd]
lrwx—— 1 kvm kvm 64 Dec 9 15:02 9 -> anon_inode:[eventfd]
※ inode 값 확인
-i, –inode
print the index number of each file
# 이미지 정보 확인
[root@localhost fd]# qemu-img info 12
image: 12
file format: qcow2
virtual size: 100G (107374182400 bytes)
disk size: 67G
cluster_size: 65536
# 이미지 복사
[root@115-68-30-45 fd]# cp /proc/845/fd/12 /VM_IMG/192.168.0.238.qcow2
‘/proc/845/fd/12’ -> ‘/VM_IMG/192.168.0.238.qcow2’
or
[root@115-68-30-45 fd]# qemu-img convert -r /proc/845/fd/12 -O qcow2 /VM_IMG/192.168.0.238.qcow2
정상복구 확인되었으며…데몬 실행시 파일시스템에 특이사항 없이 복구완료!!!
[polldaddy rating=”7739789″]