: 클러스터가 죽었을때 IMAGE 복구 작업.
가정 : 모든 클러스터가 죽었으며, 모니터도 지워졌으며, 백업도 없다
(그러나 모든 개체들은 그대로 유지된다.)
===============
복구 작업 진행
===============
1단계 : 이미지 백업.
– 풀에 존재하는 모든 이미지를 추적해라.
– 추적된 모든 이미지에 대한 속성을 저장해라. ( # rbd info /
– rbd 해더를 저장해라.
2단계 : 복구
실습
– Create a RBD image
# rbd create -s 10240
# rbd info
rbd image ”:
size 10240 MB in 2560 objects
order 22 (4096 kB objects)
block_name_prefix: rb.0.1066.74b0dc51
format: 1
– Map it on a machine
# sudo rbd -p rbd map
/dev/rbd0
# sudo rbd showmapped
id pool image snap device
0 rbd – /dev/rbd0
– Put a XFS filesystem on top of it
# sudo mkfs.xfs /dev/rbd0
log stripe unit (4194304 bytes) is too large (maximum is 256KiB)
log stripe unit adjusted to 32KiB
meta-data=/dev/rbd0 isize=256 agcount=17, agsize=162816 blks
= sectsz=512 attr=2, projid32bit=0
data = bsize=4096 blocks=2621440, imaxpct=25
= sunit=1024 swidth=1024 blks
naming =version 2 bsize=4096 ascii-ci=0
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# sudo mount /dev/rbd0 /mnt
# echo “foo” > /mnt/bar
# sudo umount /mnt
# sudo rbd unmap /dev/rbd0
다음으로 이미지를 복구하기 위해 서버에 디랙토리를 만들어라(복구될 위치가 되겠다)
# mkdir recover_
# wget -O rbd_restore https://raw.githubusercontent.com/smmoore/ceph/master/rbd_restore.sh
# chmox +x rbd_restore
그런 다음 모든 RBD 오브젝트 파일을 수집해야 한다.
# cd recover_
~/recover_]# for block in $(find /var/lib/ceph/osd/ -type f -name rb.0.1066.74b0dc51.*); do cp $block . ; done
~/recover_]# bash recover.sh rb.0.1066.74b0dc51 10737418240
~/recover_]# file
leseb: SGI XFS filesystem data (blksz 4096, inosz 256, v2 dirs)
~/recover_]# du -h
11M
–> 이것으로 이미지가 복구 된것인가?????
복구 되었다면 복구된 이미지를 다시 pool 에 삽입하는 것도 확인해봐야 할 것이다. 문서 추가하자.!!!
복구된 내용이 실제로 작동하는지 확인은 다음과 같이 한다.
~/recover_]# losetup -f
/dev/loop0
~/recover_]# losetup /dev/loop0 leseb
~/recover_]# mount /dev/loop0 /mnt/
~/recover_]# df -h /mnt
Filesystem Size Used Avail Use% Mounted on
/dev/loop0 10G 33M 10G 1% /mnt
~/recover_leseb]# ls /mnt/
bar
~/recover_leseb]# cat /mnt/bar
foo
http://idchowto.com/wp-admin/post-new.php#edit_timestamp