· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Partimage-HOWTO

Partimage


Version: 0.1

작성자: 이돈현(환골탈태) [http]http://blog.easysw.net


1. Partimage란

파티션 별로 백업 및 복구를 가능하게 해 주는 프로그램이다. 프로그램을 설치해서 사용해도 되고, partimage 개발자가 만든 복구용 종합선물 세트인 systemrescuecd의 iso 파일을 다운받아서 복구 CD를 만드는 것도 좋다. 일반적으로 두번째 HDD에 백업을 하기도 하지만, 네트워크를 통해서도 가능하므로 partimage 백업서버를 구축해서 백업/복구를 하는 것도 좋겠다. 이 하우투 문서에서는 서버 상황을 고려한 예제나 스크립트를 다루고자 한다.


2. Partimage 사용 시나리오

몇가지 예를 들어봤는데 더 다양한 상황이 있을 거라 생각된다.
  • 사용자 과실로 인한 데이타 손실 복구
  • 파티션 장애로 인한 파티션 복구
  • HDD 장애로 인한 시스템 HDD 교체와 복구
  • H/W 및 기타 재해로 인해 다른 H/W에 시스템 복구

3. Partimage 준비

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. Partimage로 백업

4.1. 백업 HDD 파티셔닝 및 포맷

fdisk /dev/sdb
mkfs.ext3 /dev/sdb1

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.3. 파티션 정보 백업

파티션 정보를 백업한다.
cd /mnt/sdb1/080329/
sfdisk -d /dev/sda > 080329-sda.sf


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

4.5. 백업한 이미지 확인

partimage imginfo /mnt/sdb1/080329/080329-sda.partimg.gz.000


5. Partimage로 복구

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. 자동화

6.1. 백업 스크립트 (pisave.sh)

여러개의 디스크들과 파티션들을 한꺼번에 백업하는 스크립트이다. 보통 서버구축이 완료된 후에 한번 해 놓으면 좋다.

BackupDisksBackupParts, 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)

장애복구시 여러개의 파티션을 빠른 시간내에 복구하기 위한 스크립트로서 이미지 백업시 날짜를 참조하여 미리 복구 스크립트를 세팅해 두면 장애시 도움이 될 거 같다.

RestoreDisks, RestoreParts, Date, ImageDir을 수정해서 사용하면 된다.

만약 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

7. 기타 기능

7.1. 백업한 이미지 정보 확인

partimage imginfo 200080330-sda5.partimg.gz.000

7.2. 네트워크 백업

  • partimaged


7.3. 보안전송

  • partimage-ssl




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2008-08-08 15:11:59
Processing time 0.0127 sec