728x90
개요
- 리눅스의 경우 OS파일과 부트로더를 설치해주면 일반 설치된 OS와 동일하게 사용 가능
- rsync를 이용해서 기존 장비를 실시간으로 이전 가능
장점
- 기존 시스템의 모든 패키지, 설정을 한번에 백업 가능
- 라이브 백업 가능
- 주기적으로 rsync로 백업 서버 지속 유지 가능
- 사전 마이그레이션 후 최종 마이그레이션 시간 최소화 (tar 이전 대비)
- rsync는 기본적으로 설치 되니 에이전트 불필요
주의사항 (단점)
- OS에서 열려있는 파일(DB) 등은 rsync 시 오류가 발생 할 수 있으니 rsync 로그 확인 필요
- 권장사항
- DB 중지 후 rsync
- 혹은 rsync 후 DB dump로 재복원을 권장
마이그레이션 진행
- 원본장비 : 기존 장비, 아래 설명에서는 192.168.0.100
- 대상장비 : 신규(백업) 장비, 아래 설명에서는 192.168.0.200
원본장비
- 원본 장비 디렉토리에 파일 확인
# rsync 때 제외할 디렉토리에 중요 파일이 없는지 체크
ls mnt
ls media
# 기타 추가로 제외한 디렉토리 목록 - 파일을 rsync 로 동기화
- xinetd에서 rsyncd 활성화 (xinetd를 통한 rsyncd 사용 시)
vi /etc/xinetd.d/rsync
service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
} - /etc/rsyncd.conf 파일로 rsync 접근 설정
vi /etc/rsyncd.conf
[root]
path = /
comment = root FS rsync
uid = root
gid = root
use chroot = yes
read only = yes
# 접근 가능한 IP를 제한적으로 허용, 모두 허용하려면 hosts allow 라인을 주석 처리
# hosts allow = 121.254.234.0/24
hosts allow = 192.168.0.100
max connections = 10 - rsyncd 서비스 실행
# xinetd 서비스 재시작
service xinetd restart
# 혹은 xinetd 재시작이 힘들거나 단기간만 rsyncd 실행 하고 싶을 때
rsync --daemon - rsyncd 포트 확인
netstat -nltp
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 17496/rsync
대상장비
- 레이드 디스크 구성
- 레이드 디스크 구성이 필요한 경우 사전에 구성
- LiveCD로 부팅
- Live CD iso 다운로드
- iso파일로 CD 생성
- 장비에서 CD로 부팅
- 파티션 구성
- fdisk나 parted 등으로 파티션 구성
- 원본장비의 파티션 타입과 동일하게 설정 권장
- 원본 장비의 파티션 타입과 다르게 구성도 가능 (관련 설정파일 변경 필요, 설치된 커널이 파티션 지원 필요)
- 파티션 마운트
- 구성한 파티션을 모두 마운트
- /mnt로 마운트 하는 경우 예
mount /dev/sda1 /mnt
mount /dev/sda2 /mnt/boot
mount /dev/sda3 /mnt/var
mount /dev/sda5 /mnt/home - 네트워크 구성
- 원본서버와 연결이 가능한 네트워크 대역으로 IP 설정 예
- 인터페이스명 eth0, IP : 192.168.0.200, netmask 255.255.255.0, gw 192.168.0.1로 설정 할 경우
# System Rescue CD의 경우 네트워크 매니저 데몬 중지
service NetworkManager stop
# 랜케이블을 eth0에 연결 한 경우, eth0 인터페이스 활성화
ifconfig eth0 up
# eth0 IP 설정
ifconfig eth0 192.168.0.200 netmask 255.255.255.0
# 기본 게이트웨이 IP 설정
route add default gw 192.168.0.1 - rsync로 실제 파일 복사 (아래 방법 중 상황에 맞는 명령으로 동기화)
- 예1> rsync로 파일 복사 (원본서버에 rsyncd 서비스를 시작한 경우)
rsync -avzp --progress --delete 192.168.0.100::root /mnt/ \
--exclude=/dev/ --exclude=/proc/ --exclude=/sys/ \
--exclude=/lost+found --exclude=/media/ - 예2> rsync로 파일 복사 (원본서버에 rsyncd 서비스 미 시작, SSH를 통한 복사)
rsync -avzp --progress --delete -e ssh 192.168.0.100:/ /mnt \
--exclude=/dev --exclude=/proc --exclude=/sys \
--exclude=/lost+found --exclude=/mnt --exclude=/media - 예3> 서비스 사용으로 리소스 최소화가 필요한 경우 (트래픽 30Mbps/s 로 제한)
rsync -avzp --progress --delete --bwlimit=3000 192.168.0.100::root /mnt \
--exclude=/dev --exclude=/proc --exclude=/sys \
--exclude=/lost+found --exclude=/mnt --exclude=/media - 예4> 서비스 사용으로 리소스 최소화가 필요한 경우 (트래픽 5Mbps/s 로 제한)
rsync -avzp --progress --delete --bwlimit=500 192.168.0.100::root /mnt \
--exclude=/dev --exclude=/proc --exclude=/sys \
--exclude=/lost+found --exclude=/mnt --exclude=/media - 참고할 만한 rsync 옵션
--ignore-failed-read 읽기 오류 무시
--numeric-ids UID/GID를 이름명이 아닌 숫자로 처리 - 제외한 디렉토리 생성
cd /mnt
mkdir dev
mkdir proc
mkdir sys
mkdir run
mkdir mnt
mkdir media - 원본장비의 설정과 다른 부분 수동으로 수정
- 네트워크 IP 변경, MAC주소 설정 주석처리
- CentOS : /mnt/etc/sysconfig/network-scripts/ifcfg-*
# ifcfg-eth0 예제
# 1. HWADDR라인을 삭제나 주석처리
# 2. IPADDR과 NETMASK등을 실제 사용할 장비의 IP설정에 맞게 수정
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=211.115.117.120
NETMASK=255.255.255.0
GATEWAY=211.115.117.33
# HWADDR=00:22:19:B9:D3:90 - udev의 장비명 설정 (네트워크 장치명이 일반적이지 않은 경우)
# 인터페이스명 설정파일 파일명 변경 처리 (혹은 삭제) ((혹은 파일명이 약간 다를수 있음))
cd /mnt/etc/udev/rules.d/
mv 70-persistent-net.rules 70-persistent-net.rules.bak - 부트로더 설정에서 부트파티션 uuid, 파티션 설정 수정
- grub 2.x인 경우 : /mnt/boot/grub/grub.cfg
- grub 1.x인 경우 : /mnt/boot/grub/menu.lst
# grub 1.x 예제
# 1. /boot 파티션의 존재, 위치가 변경된 경우 splashimage, kernel, initrd 앞에 /boot등을 추가, 삭제 처리
# 2. root=/dev/sda2 부분의 root 파티션 경로 수정
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-53.1.14.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-8.1.10.el5 ro root=/dev/sda2
initrd /initrd-2.6.18-8.1.10.el5.img - 파티션 구성을 현재 시스템에 맞게 수정
- /mnt/etc/fstab
- 부트로더 설치 (sda1이 / 파티션, sda 디스크에 부트로더 설치 시)
mount /dev/sda1 /mnt
- grub 부트로더 설치
grub-install /dev/sda --root-directory=/mnt --recheck
# 부트로더 설치 할 때 오류가 발생하면 아래 명령으로 시도 추천
# 선택1> grub 부트로더 설치 (/파티션 디렉토리를 지정, sda1 파티션에 부트로더 설치)
grub-install /dev/sda1 --root-directory=/mnt
# 선택2> grub 부트로더 설치 (/파티션 디렉토리를 지정)
grub-install /dev/sda --root-directory=/mnt
# 설치 후 메시지 확인 (정상 처리 시)
Installation finished. No error reported. - EFI 시스템
작성 필요
- 부팅 확인 : 대상 장비에서 하드디스크로 부팅이 정상적인지 확인
추가 확인이 필요한 사항
- 원본서버상에서 설정된 어플리케이션 설정
- 모니터링 솔루션의 설정 (U+ ims의 PID, username등)
활용 예
원본장비 -> 대상장비로 밀어넣기
- 대상장비에서 가져오기 힘든 경우
- 원본장비가 내부IP 전용 장비 (네트워크 접근이 힘든 경우)
대상장비
- rsync 서비스 활성화 설정
vi /etc/xinetd.d/rsync
service rsync
{
disable = no
flags = IPv6
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
} - rsyncd 설정
vi /etc/rsyncd.conf
[backup]
path = /data/backup
comment = backup
uid = root
gid = root
use chroot = yes
write only = yes
# 원본 장비 IP혹은 대역만 접근 허용 처리
hosts allow = 121.254.234.0/24 - xinted 서비스 재시작
service xinetd restart
원본장비
- 원본장비에서 대상장비로 파일 밀어넣기
# 경우에 따라서 옵션 변경해서 적용 (delete, bwlimit, exclude)
# 실제 적용 전에 -n 으로 목록 확인 후 적용 권장
#
rsync -avzp --progress --delete --bwlimit=500 \
/ 110.45.238.3::backup/bep2 \
--exclude=/dev --exclude=/proc --exclude=/sys \
--exclude=/lost+found --exclude=/mnt --exclude=/media
이슈
FakeRAID에서 마이그레이션
- 일반적인 부팅 CD에서는 FakeRAID 디스크 인식 불가
- CentOS OS CD 복구모드로 부팅
- RAID 드라이버 로딩
- chroot로 rsync 혹은 tar 해제로 진행
복구 후 부팅 실패
- FakeRAID나 기타 문제로 부팅이 안 될 경우
- 오류 원인을 찾기 힘든 경우 복구 한 상태로 기존 OS와 동일한 버전으로 재설치
- /나 기타 파티션 초기화 없이 재설치
관련 툴
- GitHub - tritonas00/system-tar-and-restore: Backup and Restore your system using tar or Transfer it with rsync - https://is.gd/LZhmE6
관련 링크
- Full System Backup with tar - ArchWiki - https://is.gd/RcyCQy
- Full system backup with rsync - ArchWiki - https://is.gd/AlOzGQ
728x90
'IT > LINUX' 카테고리의 다른 글
df-h 명령어 실행 할때 tmpfs 숨기기 (0) | 2020.10.16 |
---|---|
CentOS7 SSH Port 변경 (0) | 2020.10.16 |
Centos NFS 설정 세팅 하기 (0) | 2020.10.13 |
userdel 사용법(userdel: user ** is currently loggen in... 발생 시) (0) | 2020.10.12 |
Centos7 SAMBA 설치/세팅 (0) | 2020.10.11 |