본문 바로가기

시스템 운영 자료

OS 시스템 이미지 full DUMP

반응형

 

1. 개요

  • 디스크 수명문제나 기타 시스템상,그 외적인 문제로 서버 이전을 준비 할때 OS 이미지 full DUMP 방법을 설명한다.
  • 기존 디스크가 RAID로 구성되어 있거나 신규 디스크가 기존디스크보다 용량이 작을 경우 적합. (디스크 용량이 같거나 클경우 cat, dd 등을 이용하여 slave로 잡은 디스크를 복제하면 됨)

 

2. 작업

2.1  기존 디스크 FULL DUMP

> yum install dump ( dump tool 설치). 

# dump : disk full dump tool
# restore : 신규 디스크에 dump 받은 파일을 복구
# dump 0f <dump 를 저장할 파일이름> <대상 파티션 이름>
ex) # dump 0f {name}.dump /dev/sda2

2.2  신규 서버 준비

  • 기존 서버에 파티션정보나 RAID 정보가 달라질 수 있으므로 기존 서버에 파티션정보를 사용하는 것이 아니라 직접 사용자가 신규 서버에 파티션이나 RAID작업을 미리 작업한다.
  • 참고) 기존 서버의 파티션 정보 가져오기
    # sfdisk -d /dev/sda > name.pari

2.3 리눅스 라이브 CD 구동

  • 신규 서버에서 작업 할때 라이브 CD로 구동 하여 작업하는 것이 편하다.

2.4 신규디스크 파티셔닝

## 파티셔닝은 간단하게 /dev/xvda1 은 swap을 /dev/xvda2는 / 로 잡고 작업.
# fdisk /dev/xvda
# n → p → 1 → enter → +8G(swap volume) → t → 82(swap code)
# n → p → 2 → enter → enter(남은 용량모두) → t → 83(Linux code)
# w
## 파일시스템 생성

[root@livecd ~]# mkfs -t ext4 /dev/xvda2
 
## swap 생성
[root@livecd ~]# mkswap /dev/xvda1
Setting up swapspace version 1, size = 8393924 KiB
no label, UUID=4fa51fbc-fdc8-4309-bc53-bfb8b7ea94cf

2.5 마운트

[root@livecd ~]# mkdir /backup
[root@livecd ~]# mount /dev/xvda2 /backup/

 

2.6 dump 파일 복사

  • 기존서버에서 생성한 덤프파일({name}.dump)를 마운트한 신규 디스크로 복사

2.7 DUMP restore

## 복사가 완료 된 dump파일을 신규 디스크에 restore
## restore 명령어는 dump 유틸을 설치해야 한다.(yum install dump)
[root@livecd ~]# cd /backup/
[root@livecd backup]# ll
total 20
drwxr-xr-x. 2 root root  4096 Nov 27 04:09 {name}.dump
drwx------. 2 root root 16384 Nov 27 02:47 lost+found
 
 
[root@livecd backup]# ll {name}.dump/
total 17182288
-rw-r--r--. 1 root root 17594644480 Nov 27 04:09 {name}.dump
-rw-r--r--. 1 root root         259 Nov 27 04:09 {name}.pari
-rw-r--r--. 1 root root         616 Nov 27 04:09 fdisk.txt
-rw-r--r--. 1 root root         711 Nov 27 04:09 fstab
 
[root@livecd backup]# restore -rf {name}.dump/{name}.dump
restore: ./lost+found: File exists
./root/dump/{name}.dump: (inode 9961512) not found on tape
restore: ./var/run/cups/certs/0: EA set system.posix_acl_access: failed: Operation not supported
 
expected next file 8650759, got 8650758
 
## 확인
[root@livecd backup]# ll
total 27868
drwxr-xr-x.   2 root       root           4096 Nov 27 04:09 {name}.dump
dr-xr-xr-x.   2 root       root           4096 Jul 21  2015 bin
dr-xr-xr-x.   4 root       root           4096 Jul 21  2015 boot
drwxr-xr-x.   2 root       root           4096 Oct 17  2014 cgroup
drwxr-xr-x.   9 centoslive centoslive     4096 Mar  9  2016 data
drwxr-xr-x.   2 root       root           4096 Jul 21  2015 dev
drwxr-xr-x. 106 root       root          12288 Nov 26 01:44 etc
drwxr-xr-x.   6 root       root           4096 Jul 13 01:16 home
dr-xr-xr-x.  11 root       root           4096 Jul 21  2015 lib
dr-xr-xr-x.   9 root       root          12288 Nov 13 14:48 lib64
drwx------.   2 root       root          16384 Jul 21  2015 lost+found
drwxr-xr-x.   2 root       root           4096 Sep 23  2011 media
drwxr-xr-x.   2 root       root           4096 Nov 23  2013 misc
drwxr-xr-x.   2 root       root           4096 Sep 23  2011 mnt
drwxr-xr-x.   2 root       root           4096 Nov 23  2013 net
drwxr-xr-x.   4 root       root           4096 Jul 21  2015 opt
drwxr-xr-x.   2 root       root           4096 Jul 21  2015 proc
-rw-------.   1 root       root       28397288 Nov 27 05:51 restoresymtable
dr-xr-x---.   6 root       root           4096 Nov 26 01:43 root
dr-xr-xr-x.   2 root       root          12288 Nov 26 01:44 sbin
drwxr-xr-x.   2 root       root           4096 Jul 21  2015 selinux
drwxr-xr-x.   2 root       root           4096 Sep 23  2011 srv
drwxr-xr-x.   2 root       root           4096 Jul 21  2015 sys
drwxrwxrwt.   6 root       root           4096 Nov 26 01:45 tmp
drwxr-xr-x.  13 root       root           4096 Jul 21  2015 usr
drwxr-xr-x.  20 root       root           4096 Jul 21  2015 var

2.8 grub-install

## device.map 수정
## 신규서버의 디바이스 명으로 변경해준다.
## /dev/sda -> /dev/xvda 로 변경
[root@livecd grub]# pwd
/backup/boot/grub
[root@livecd grub]# cat device.map
# this device map was generated by anaconda
(hd0)     /dev/xvda
 
 
## grub.conf 수정
## UUID를 디바이스 명으로 변경해준다.
## hd0,0 을 유의한다. xvda1이 swap 이고 xvda2가 / 이면 xvda1 -> hd0,0, xvda2 -> hd0,1
[root@livecd grub]# cat grub.conf
...
default=0
timeout=5
splashimage=(hd0,1)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-504.30.3.el6.x86_64)
    root (hd0,1)
    kernel /boot/vmlinuz-2.6.32-504.30.3.el6.x86_64 ro root=/dev/xvda2 rd_NO_LUKS LANG=ko_KR.UTF-8 rd_NO_MD crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_LVM rd_NO_DM rhgb quiet
    initrd /boot/initramfs-2.6.32-504.30.3.el6.x86_64.img
title CentOS (2.6.32-431.el6.x86_64)
    root (hd0,1)
    kernel /boot/vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/xvda2 rd_NO_LUKS LANG=ko_KR.UTF-8 rd_NO_MD crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_LVM rd_NO_DM rhgb quiet
    initrd /boot/initramfs-2.6.32-431.el6.x86_64.img
 
 
## fstab 수정
## UUID를 디바이스 명으로 변경해 준다.
[root@livecd grub]# cat /backup/etc/fstab
...
/dev/xvda2 /                       ext4    defaults        1 1
/dev/xvda1 swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
 
## grub-install
[root@livecd grub]# grub-install --recheck --root-directory=/backup /dev/xvda
Probing devices to guess BIOS drives. This may take a long time.
No suitable drive was found in the generated device map.
Reverting to backed up copy.
 
## 위와 같은 에러 발생시 수동 작업한다.
[root@livecd grub]# grub
Probing devices to guess BIOS drives. This may take a long time.
 
 
    GNU GRUB  version 0.97  (640K lower / 3072K upper memory)
 
 [ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the possible
   completions of a device/filename.]
grub> device (hd0) /dev/xvda
device (hd0) /dev/xvda
grub> root (hd0,1)   
root (hd0,1)
 Filesystem type is ext2fs, partition type 0x83
grub> setup (hd0)
setup (hd0)
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/e2fs_stage1_5" exists... yes
 Running "embed /boot/grub/e2fs_stage1_5 (hd0)"...  27 sectors are embedded.
succeeded
 Running "install /boot/grub/stage1 (hd0) (hd0)1+27 p (hd0,1)/boot/grub/stage2 /boot/grub/grub.conf"... succeeded
Done.
grub> quit
quit
 
 
## 아래와 같은 에러 발생시 fstab, device.map, grub.conf 잘못된 부분이 있는지 확인한다.
grub-install does not support reprobing of device.map
using a device-mapper based boot device

 

2.10 라이브 CD 제거 후 재부팅

  • 신규 디스크로 부팅하고 시스템에 이상없는 지 확인한다.
  • 이때 디스크 명칭으로 변경한 grub.conf, fstab에 blkid를 통해 디스크 UUID로 변경해주는 것도 좋다.

 

3. 참조

 3.1 사용했던 스크립트

#!/bin/sh
sfdisk -d /dev/sda | sfdisk /dev/sdb  // 파티션 복사

mkfs.ext3 /dev/sdb1         // 파일시스템 생성
mkswap -L SWAP-sda2 /dev/sdb2    // 스왑 잡기

e2label /dev/sdb1 /    레벨 붙이기

mount /dev/sdb1 /backup   // 마운트하기
cd /backup
dump 0f - /dev/sda1 | restore xfo -   // 덤프떠서 복구 하기
cd /

grub-install --recheck --root-directory=/backup /dev/sdb   // 그룹정보 넣어주기

umount /backup
반응형