디스크 dd Copy를 이용한 Backup 방법
1. 개요
해당 글은 리눅스 상에서 디스크 대 디스크를 백업하는 방법에 대한 내용이다.
흔히 dd카피라고 부르는 방법이며 이 방법의 제약 사항은 아래와 같다.
1) 디스크의 용량이 같아야 한다.
2) 일부 시스템의 경우 원본 디스크가 장착 된 시스템의 기종과 복사 디스크가 장착 될 시스템의 기종이 같아야 한다.
3) 원본 디스크의 filesystem에 문제가 있을 시 dd카피를 통해 백업을 하면 문제가 있는 filesystem의 내용도 copy 된다.
2. 작업 내용
2.1 시스템 종료 및 디스크 장착
시스템을 절차에 따라 종료하고 복사할 디스크를 장착한다.
시스템 부팅
2.2 운영체제 선택
가장 권장하는 작업 환경은 rescue 모드를 통해 부팅한 운영체제에서 작업하는 방법을 추천하나, 상황이 여의치 않을 경우에는 디스크에 이미 설치된 운영체제로 부팅해도 된다.
복사 작업을 진행하기 전 되도록이면 DB 및 APP를 종료하고 시스템에 운영체제만 올라와 있는 상태로 작업하는 것을 권장한다.
2.3 디스크 식별 및 dd명령 수행
2.3.1 디스크 식별
터미널을 열고 #fdisk -l 을 입력 >> 리눅스의 경우 SCSI 디스크는 /dev/sd* 로 인식하고 IDE 디스크는 /dev/hd* 과 같이 인식한다.
Disk /dev/sda: 73.4 GB, 73407865856 bytes
255 heads, 63 sectors/track, 8924 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 5235 41945715 83 Linux
/dev/sda3 5236 6540 10482412+ 82 Linux swap / Solaris
/dev/sda4 6541 8924 19149480 83 Linux
Disk /dev/sdb: 73.4 GB, 73407865856 bytes
255 heads, 63 sectors/track, 8924 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 13 104391 83 Linux
/dev/sdb2 14 5235 41945715 83 Linux
/dev/sdb3 5236 6540 10482412+ 82 Linux swap / Solaris
/dev/sdb4 6541 8924 19149480 83 Linux
위의 로그를 보면 /dev/sda가 원본 디스크고 /dev/sdb가 복사할 디스크가 출력되는 것으로 보아 정상적으로 인식했다.
2.3.2 디스크 사용량 확인
# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 39G 7.4G 30G 21% /
/dev/sda1 99M 14M 81M 15% /boot
tmpfs 442M 0 442M 0% /dev/shm
/dev/sda4 18G 2.2G 15G 13% /home
사용량을 보고 대략 적인 작업 소요시간을 예측할 수 있다.
2.3.2 dd 명령 수행
# dd if=/dev/s of=/dev/rdsk/c1t0d0s2 bs=512k
if: 입력 디바이스 (OS 원본 디스크의 장치명)
of: 출력 디바이스 (복제 디스크의 장치명)
bs: 블럭 사이즈 ( 128k, 512k등 : 블럭단위가 클수록 복제 속도가 빠르나 이는 디스크의 IO에 달렸다. rescue 모드로 부팅했을 시에는 bs=4096 을 줘도 시스템 부하에 큰 무리는 없다.)
2.4 작업 진행 Monitoring 방법
# iostat -d 1 10
위의 명령을 이용하면 1초에 한번씩 디스크 사용량을 10번 출력한다.
Linux 2.6.18-164.el5 (V20Z) 2014년 01월 19일
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 1.11 1.22 17.45 6794290 96928772
sda1 0.00 0.00 0.00 9966 260
sda2 1.10 1.07 17.44 5951129 96891064
sda3 0.00 0.00 0.00 1117 184
sda4 0.00 0.15 0.01 831140 37264
sdb 0.00 0.00 0.00 5184 0
sdb1 0.00 0.00 0.00 828 0
sdb2 0.00 0.00 0.00 828 0
sdb3 0.00 0.00 0.00 834 0
sdb4 0.00 0.00 0.00 848 0
Blk_read/s, Blk_wrtn/s 을 확인하면 각각 부하가 얼만큼 주어지고 있는지 확인 할 수 있다.
2.5 작업 완료
작업이 완료 되면 위의 # dd if=/dev/s of=/dev/rdsk/c1t0d0s2 bs=512k 명령을 입력했던 터미널이 #프롬프트로 떨어질 것이다.
복사된 디스크를 원본 디스크의 슬롯에 장착해서 부팅할 경우에는 별도의 작업이 필요 없다.
복사된 디스크를 현재 위치에서 사용하고자 할 경우 별도의 작업이 필요하다.
# mkdir /a
# mount /dev/sdb* /a >> (sdb* *부분은 df -lh를 입력했을 경우 / 파티션에 해당하는 숫자를 주면 된다. 아래 로그를 참조하면 원본디스크의 sda2가 / 디렉토리이므로 복사된 sdb의 2번
즉, sdb2가 / 디렉토리가 위치하는 파티션일 것이다.)
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 39G 7.4G 30G 21% /
# vi /a/etc/fstab
vi를 통해 fstab을 열어 /dev/sda로 시작하는 부분을 /dev/sdb로 모두 바꿔 준다.
/dev/sda2 / ext3 defaults 1 1
/dev/sda4 /home ext3 defaults 1 2
/dev/sda1 /boot ext3 defaults 1 2
#/dev/sdc1 /FemtoImages ext4 defaults 1 2
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
/dev/sda3 swap swap defaults 0 0
>>
/dev/sdb2 / ext3 defaults 1 1
/dev/sdb4 /home ext3 defaults 1 2
/dev/sdb1 /boot ext3 defaults 1 2
#/dev/sdc1 /FemtoImages ext4 defaults 1 2
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
/dev/sdb3 swap swap defaults 0 0
위의 작업을 마치면 모든 작업이 종료된다.
'Linux' 카테고리의 다른 글
리눅스 하드디스크 온도측정 (0) | 2017.09.06 |
---|---|
리눅스 온도체크(lm_sensors), sensor (0) | 2017.09.06 |
CentOS_Geoip 설치 및 사용법 (0) | 2017.09.06 |
centos 5.11 Reository Error 해결 (0) | 2017.09.05 |
리눅스 공백으로 시작하는 파일 변경 (0) | 2017.06.30 |
댓글