Version: 0.1
작성자: 이돈현(환골탈태) http://blog.easysw.net
1 Partimage란 ¶
파티션 별로 백업 및 복구를 가능하게 해 주는 프로그램이다. 프로그램을 설치해서 사용해도 되고, partimage 개발자가 만든 복구용 종합선물 세트인 systemrescuecd의 iso 파일을 다운받아서 복구 CD를 만드는 것도 좋다.일반적으로 두번째 HDD에 백업을 하기도 하지만, 네트워크를 통해서도 가능하므로 partimage 백업서버를 구축해서 백업/복구를 하는 것도 좋겠다.이 하우투 문서에서는 서버 상황을 고려한 예제나 스크립트를 다루고자 한다.
2 Partimage 사용 시나리오 ¶
몇가지 예를 들어봤는데 더 다양한 상황이 있을 거라 생각된다.
- 사용자 과실로 인한 데이타 손실 복구
- 파티션 장애로 인한 파티션 복구
- HDD 장애로 인한 시스템 HDD 교체와 복구
- H/W 및 기타 재해로 인해 다른 H/W에 시스템 복구
3 Partimage 준비 ¶
- 복구 CD용 iso 파일 다운로드최신 버전을 확인하여 다운로드 받으면 된다.http://sysresccd.org/Download
wget http://jaist.dl.sourceforge.net/sourceforge/systemrescuecd/systemrescuecd-x86-1.0.2.iso wget http://nchc.dl.sourceforge.net/sourceforge/systemrescuecd/systemrescuecd-x86-1.0.2.iso
- 레코딩
- 추가 HDD 장착
- CD 삽입후 서버 재부팅
4.2 MBR 백업 ¶
MBR을 백업한다.
mkdir /mnt/sdb1 mount -t ext3 /dev/sdb1 /mnt/sdb1 mkdir /mnt/sdb1/080329 cd /mnt/sdb1/080329 dd if=/dev/sda of=/mnt/sdb1/080329/080329-sda.mbr count=1 bs=512
4.4 파티션 별 백업 ¶
* Partition to save/restore sda1 선택 * Image file to create/use /mnt/sdb1/080329/080329-sda1.partimg.gz * Action to be done: (*) Save partition into a new image file
* Compression Level (*) Gzip (.gz; medium speed + small image file) * Options [X] Check partition before saving [X] Enter Description * Image split mode (*) Into files whose size is:...... 2037 MiB * If finished successfully: (*) Wait
5.1 MBR 복구 ¶
필요하다면 MBR을 복구한다.
mount -t ext3 /dev/sdb1 /mnt/sdb1 dd if=/mnt/sdb1/080329/080329-sda.mbr of=/dev/sda
5.2 파티션 정보 복구 ¶
파티션이 깨졌거나 HDD가 교체되었을 경우에는 파티션을 복구/생성한다.
mount -t ext3 /dev/sdb1 /mnt/sdb1 sfdisk /dev/sda < /mnt/sdb1/080329/080329-sda.sf만약 파티션을 복구했다면 재부팅 하도록 한다.
5.3 파티션 별 복구 ¶
* Partition to save/restore 복구할 sda1 선택 * Image file to create/use /mnt/sdb1/080329/080329-sda1.partimg.gz.000 * Action to be done: (*) Restore partion from an image file * Options 복구 테스트를 원한다면 시물레이션 모드로 한다. [ ] Simulation of the restoration (nothing is written) [ ] Erase free blocks with zero values * If finished successfully: (*) Wait ( ) Halt ( ) Reboot ( ) Quit
6.1 백업 스크립트 (pisave.sh) ¶
여러개의 디스크들과 파티션들을 한꺼번에 백업하는 스크립트이다.보통 서버구축이 완료된 후에 한번 해 놓으면 좋다.
BackupDisks와 BackupParts, SaveDir1만 수정해서 사용하면 된다.
# by try365 ## 수정할 부분 #################################### # MBR과 파티션 덤프할 디스크들 (ex: sda sdb...) BackupDisks="sda" # 백업할 파티션들 (ex: sda1 sda2 sda5 sda6 sda7 sda8 sda9 sda10 sda11 sdb1 sdb2 sdb5....) BackupParts="sda1 sda2 sda5" # 백업한 이미지가 저장될 디렉토리 (ex: /mnt/sdc1) : 년월일로 디렉토리가 생성되고 그 안에 백업됨 SaveDir1="/mnt/sdb1" ## 수정이 불필요한 부분 ############################# DATE=`date +%y%m%d` SaveDir2="${SaveDir1}/$DATE" # -b : batch mode: the GUI won't wait for an user action # -z1 : compress using gz # -o : overwrite the existing image file without confirmation # -d : don't ask any description for the iamge file PM="partimage -b -z1 -o -d " ##################################################### if [ ! -d $SaveDir1 ]; then echo "$SaveDir1 not found" exit else mkdir -p $SaveDir2 chmod 700 $SaveDir2 fi # MBR 백업 for i in $BackupDisks; do dd if=/dev/${i} of=$SaveDir2/${DATE}-${i}.mbr count=1 bs=512 done # 파티션 정보 덤프 for i in $BackupDisks; do sfdisk -d /dev/${i} > $SaveDir2/${DATE}-${i}.sf done # 파티션 백업 for i in $BackupParts ; do echo "$PM save /dev/${i} ${SaveDir2}/$DATE-${i}.partimg.gz" $PM save /dev/${i} ${SaveDir2}/$DATE-${i}.partimg.gz done # 백업된 이미지 정보 보기 for i in $BackupParts ; do echo "partimage imginfo ${SaveDir2}/$DATE-${i}.partimg.gz.000" done # vi: set ts=2 sts=2 sw=2
백업 확인
[root@localhost root]# ls -l /mnt/sdb1/080329/ -rw-r--r-- 1 root root 512 3월 29 17:54 080329-sda.mbr -rw-r--r-- 1 root root 514 3월 29 17:54 080329-sda.sf -rw------- 1 root root 36631185 3월 29 17:54 080329-sda1.partimg.gz.000
6.2 복구 스크립트 (pirestore.sh) ¶
장애복구시 여러개의 파티션을 빠른 시간내에 복구하기 위한 스크립트로서 이미지 백업시 날짜를 참조하여 미리 복구 스크립트를 세팅해 두면 장애시 도움이 될 거 같다.
만약 sfdisk를 사용하여 파티션을 복구했다면 재부팅 하도록 한다.
# by try365 ## 수정할 부분 #################################### # MBR과 파티션을 복구할 디스크들 (ex: sda sdb...) RestoreDisks="sda" # 복구할 파티션들 (ex: sda1 sda2 sda5 sda6 sda7 sda8 sda9 sda10 sda11 sdb1..) RestoreParts="sda1" # 백업된 날짜 (디렉토리 이름과 파일명의 구분자로 쓰임) Date="080329" # 백업된 이미지가 저장되어 있는 디렉토리 ImageDir="/mnt/sdb1/$Date" # Partimage의 복구 옵션 (-S : simulation of restoration mode) # 복구를 시뮬레이션 하고자 한다면 -S 옵션을 추가하면 된다. PM="partimage -b" # MBR 복구 여부 [0|1] RestoreMBR="0" # 파티션 복구 여부 [0|1] RestoreSFDISK="0" ##################################################### if [ ! -d $ImageDir ]; then echo "$ImageDir not found" exit fi # MBR 복구 (ex: dd if=/mnt/sdb1/080329/080329-sda.mbr of=/dev/sda) if [ "x${RestoreMBR}" = "x1" ]; then for i in $RestoreDisks; do echo "dd if=$I{mageDir}/${Date}-${i}.mbr of=/dev/${i}" dd if=${ImageDir}/${Date}-${i}.mbr of=/dev/${i} sleep 1 done fi # 파티션 테이블 복구 (ex: sfdisk /dev/sda < /mnt/sdb1/080329/080329-sda.sf) if [ "x${RestoreSFDISK}" = "x1" ]; then for i in $RestoreDisks; do echo "sfdisk /dev/${i} < ${ImageDir}/${Date}-${i}.sf" sfdisk /dev/${i} < ${ImageDir}/${Date}-${i}.sf sleep 1 done echo -n "If you finished an extended partitions recovery, " echo "you will have to reboot your computer." echo -n "reboot ? (y/n) : " read yesorno if [ "x$yesorno" = "xy" ]; then echo "Do the unmounting and rebooting directly." exit else echo "continue" fi fi # Partimage로 파티션 복구 for i in $RestoreParts ; do if [ -f ${ImageDir}/$Date-${i}.partimg.gz.000 ]; then #partimage -b -S restore /dev/sda1 /PATH/080329-sda1.partimg.gz.000 echo "$PM restore /dev/${i} ${ImageDir}/$Date-${i}.partimg.gz.000" $PM restore /dev/${i} ${ImageDir}/$Date-${i}.partimg.gz.000 else echo "error : ${ImageDir}/$Date-${i}.partimg.gz.000 not found" fi done # vi: set ts=2 sts=2 sw=2
'Cent OS' 카테고리의 다른 글
네트워크 아이피 수동설정 (0) | 2013.08.07 |
---|---|
파티션 포멧 라벨 마운트 설정 (0) | 2013.08.06 |
네트워크 설정 및 파티션 라벨 (0) | 2013.07.23 |
ftp 설정 (1) | 2013.07.23 |
telnet 키기 (0) | 2013.07.23 |