백업 및 복원 (dump & restore)
Posted by : admin at 1 월 29th, 2009
FreeBSD 7.1에서 확인하는 확실한 백업 절차를 제공합니다.특히 중요시하는 것은 다음과 같은 것입니다.
- 백업은 짧은 시간에 수 있어야한다 확실한 백업은 신구루유자모도해야 공백 시간을 최대한 단축해야하기 때문입니다.
- 백업은 쉽게 할 수 있어야한다 귀찮은 작업이 계속되지 않습니다.
- 복원은 단계별로おこなえ경우, 다른 사람 (몇 달 후 자신도 포함)도 반드시 가능해야한다이 상황이되면 반드시 이해할 수있습니다.
테이프에 백업은 시간이 걸리는 데다, 경험상의 미디어의 신뢰성도 얇고 무엇보다 용량이 큰 HDD를 매일 백업은 테이프 매체의 수명을 생각하면 엄청난 테이프가 필요하다, 현실주의 는 분실되어 가고있습니다.
과거에 한 번, RAID5 구성 HDD가 2 개 동시에 충돌을했을 때, 백업은 몇 달 전에 무슨 ... 사태를 일으키는 원인이되었다 것도 있고, 매일 백업을 취할 수 있도록하는 최선의 방법을 생각하고있습니다 그러나 현재는이 방법을 침착하게합니다.
백업 (dump)
백업 원본이되는 서버는 다음과 같은 상태입니다. ns# df
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad0s1a 1012974 153114 778824 16% /
devfs 1 1 0 100% /dev
/dev/ad0s1f 2025860 9122 1854570 0% /home
/dev/ad0s1d 6090094 2420298 3182590 43% /usr
/dev/ad0s1e 1012974 34662 897276 4% /var
백업 데이터를 저장하는 장치를 탑재합니다
USB 메모리도 SCSI 하드 디스크도 가능하지만, 이번에는 IDE - HDD를 기본 - slave를 메우고있습니다.연결하려는 장비의 장치 이름을 dmesg에서 확인합니다.
ns# dmesg
.....
ad0: 11264MB <VMware Virtual IDE Hard Drive 00000001> at ata0-master UDMA33
ad1: 13312MB <VMware Virtual IDE Hard Drive 00000001> at ata0-slave UDMA33
.....
ns# dmesg|more
[q]로 표시가 종료됩니다. (자세한 내용은 man more)
백업 대상을 초기화 탑재합니다
처음 연결하는 장치의 경우에만 필요한 작업입니다.2 회째 이후는 필요하지 않습니다.
ns# sysinstall
ns# /stand/sysinstall
/stand/sysinstall: Command not found.
ns# which sysinstall
/usr/sbin/sysinstall
보통 / usr / sbin에 경로를 통해서해야하므로 sysinstall뿐만 좋다는 뜻입니다.
[Configure]를 선택하고 [Enter]를 누릅니다.
[Fdisk를 선택하고 [Enter]를 누릅니다.
대상 장치를 선택하고 [Enter]를 누릅니다. (이번에는 ad1)
[c]를 눌러 [Enter]를 누릅니다.
[165] 상태에서 [Enter]를 누릅니다.
[w]를 누릅니다.
확인 대화 상자가 나타나면 Yes를 선택하고 [Enter]를 누릅니다.
[None]을 선택하고 [Enter]를 누릅니다.
[q]를 누릅니다.
[Cancel]을 선택하고 [Enter]를 누릅니다.
[Label]을 선택하고 [Enter]를 누릅니다.
[c]를 눌러 [Enter]를 누릅니다.
[FS]가 선택된 상태로 [Enter]를 누릅니다.
마운트 이름을 입력합니다. (이번에는 / backup)
자동으로 디렉토리를 만들어 마운트됩니다.
[w]를 누릅니다.
Yes를 선택하고 [Enter]를 누릅니다.
[q]를 눌러 메뉴로 돌아간 다음 Cancel을 누릅니다.
[Exit] 또는 [Cancel을 누릅니다.
[Exit Install을 선택하고 [Enter]를 누릅니다.
dump 실행
다음 파티션을 각각 지원합니다. Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad0s1a 1012974 153114 778824 16% / <=== /backup/root.dump
devfs 1 1 0 100% /dev <=== バックアップ不要
/dev/ad0s1f 2025860 9122 1854570 0% /home <=== /backup/home.dump
/dev/ad0s1d 6090094 2420298 3182590 43% /usr <=== /backup/usr.dump
/dev/ad0s1e 1012974 34662 897276 4% /var <=== /backup/var.dump
ns# dump -0uaLC 32 -f /backup/root.dump /
옵션 설명
0 단뿌레베루 0 (전체 백업)마찬가지로 다른 3 개나합니다. (용량이 많은
u 덤프가 성공하면, / etc / dumpdates 파일을 업데이 트합니다.
a 미디어 종료를 감지합니다. (테이프 잖아 때문에 불필요 할지도 ...)
L FreeBSD5.0에서 탑재된 스냅샷 기능을 사용합니다.
이 기능을 사용하면 신구루유자모도에 떨어뜨릴 필요가없습니다.
C 캐시 크기를 8 ~ 32 (단위 : MB) 사이에서 지정하여 성능을 극적으로 향상됩니다.
그러나 L 옵션을 지정한 경우에는, C 옵션을 해제하는 것이 좋을 것입니다.
(상세 내용보기)
f 백업 대상 파일을 지정합니다.
/usr
등 다소 시간이 걸립니다) ns# dump -0uaLC 32 -f /backup/var.dump /var
ns# dump -0uaLC 32 -f /backup/usr.dump /usr
ns# dump -0uaLC 32 -f /backup/home.dump /home
ns# ls -al /backup
total 2662822
drwxr-xr-x 3 root wheel 512 Jan 27 17:26 .
drwxr-xr-x 23 root wheel 512 Jan 27 17:02 ..
drwxrwxr-x 2 root operator 512 Jan 27 17:02 .snap
-rw-r--r-- 1 root wheel 9646080 Jan 27 17:26 home.dump
-rw-r--r-- 1 root wheel 155197440 Jan 27 17:16 root.dump
-rw-r--r-- 1 root wheel 2524764160 Jan 27 17:36 usr.dump
-rw-r--r-- 1 root wheel 35655680 Jan 27 17:26 var.dump
정작! 는 순간을 위해, 지금 중에 ftp 사이트에서 같은 버전의 livefs.iso를 다운로드하여 LiveFS CD를 만들어 둡시다.
그리고 "FreeBSD XX 긴급 부트 디스크"라고 적어 서버 가까이 (눈에 띄는 위치)에 두는 것이 좋습니다.
그리고 "FreeBSD XX 긴급 부트 디스크"라고 적어 서버 가까이 (눈에 띄는 위치)에 두는 것이 좋습니다.
복원 (restore)
다음과 같은 구성으로 확인했습니다.시작 HDD ad0
- 새로운 서버 (요체 부팅 디스크에 OS가 설치되지 않은 상태 서버)
- 위 서버의 기본 - slave에 백업 데이터가 들어있는 IDE - HDD를 연결
백업 데이터를 저장하는 HDD ad1
그밖에 필요한 LiveFS CD
LiveFS CD로 부팅
먼저 LiveFS CD를 넣고 서버를 시작합니다.(CD로 부팅하지 않는 경우에는 침착하게 BIOS를 검토 해보자)
일본어를 잘하는
[110 Japan]
선택하고 [Enter]를 누릅니다. [PageUp]
7 회, [↓] 4 회하면 이르) [Japanese 106 keymap]
선택되어있을 것입니다 때문에 그대로 [Enter]를 누릅니다. 시작 HDD 초기화 (슬라이스 파티션)
[Configure]를 선택하고 [Enter]를 누릅니다.[Fdisk를 선택하고 [Enter]를 누릅니다.
부팅 장치를 선택하고 [Enter]를 누릅니다. (여기서는 AD0)
결코 백업 데이터를 저장하는 장치를 지정하지 마십시오.
[c]를 눌러 표시된 숫자 그대로 [Enter]를 누릅니다.
[165] 상태에서 [Enter]를 누릅니다.
[q]를 누릅니다.
[Standard]을 선택하고 [Enter]를 누릅니다.
Cancel을 눌러 메뉴로 돌아갑니다.
[Label]을 선택하고 [Enter]를 누릅니다.
[c]를 누릅니다.
루트 (/) 파티션에 할당할 용량을 지정합니다. (여기에서는 1GB)
이전 서버 (백업 원)보다 적은 경우 문제가 발생할 수있습니다. dd과는 다른 많은 분에는 문제가없습니다.
[FS]가 선택된 상태로 [Enter]를 누릅니다.
마운트 이름을 입력하고 (/) [Enter]를 누릅니다.
마찬가지로, [c]를 눌러 스왑 파티션을 설정합니다.
이것은 새로운 서버에 탑재되는 메모리 용량을 2 배 정도가 좋다. (여기에서는 1GB)
[Swap을 선택하고 [Enter]를 누릅니다.
마찬가지로, [c]를 눌러
/var
할당할 용량을 지정합니다. (여기에서는 1GB) 이전 서버 (백업 원)보다 적은 경우 문제가 발생할 수있습니다. dd과는 다른 많은 분에는 문제가없습니다.
[FS]가 선택된 상태로 [Enter]를 누릅니다.
마운트 이름을 입력하고
/var
[Enter]를 누릅니다. 마찬가지로, [c]를 눌러
/usr
할당할 용량을 지정합니다. (여기서는 4GB) 이전 서버 (백업 원)보다 적은 경우 문제가 발생할 수있습니다. dd과는 다른 많은 분에는 문제가없습니다.
/ home 파티션들을 작성하지 구성 / usr에 나머지 모든 공간을 할당하려는 경우에는 용량을 지정하지 않고 표시된 숫자 그대로 [Enter]를 누릅니다.
[FS]가 선택된 상태로 [Enter]를 누릅니다.
마운트 이름을 입력하고
/usr
[Enter]를 누릅니다. 마찬가지로, [c]를 눌러 나머지 용량을 모두
/home
할당합니다. 표시된 숫자를 변경없이 [Enter]를 누릅니다.
/ home 파티션이 필요하지 않은 경우에는이 작업이 필요하지 않습니다.
[FS]가 선택된 상태로 [Enter]를 누릅니다.
마운트 이름을 입력하고
/home
[Enter]를 누릅니다. 이런 느낌입니다.
마음에 들지 않으면, 파티션을 선택하고 [d]를 누르면 삭제 할 수 있기 때문에, 설정하고 다시하세요.
낫 [w]를 누릅니다.
확인 대화 상자가 나타나면 Yes를 선택하고 [Enter]를 누릅니다.
[q]를 눌러 메뉴로 돌아간 다음 Cancel]을 선택하고 [Enter]를 누릅니다.
Fixt를 시작
[Fixit를 선택하고 [Enter]를 누릅니다.[CDROM / DVD를 선택하고 [Enter]를 누릅니다.
Fixit가 시작됩니다.
장치에 방금 만든 파티션 (ad0s1a ~ ad0s1f)가 등록되어 있는지 확인합니다.
Fixit# ls /dev
방금 만든 파티션은
/mnt
아래에 배치됩니다. Fixit# ls /mnt
.snap/ dev/ home/ usr/ var/
백업 데이터가 들어있는 HDD를 탑재
백업 데이터가 들어있는 HDD를 탑재하기 위해/mntbk
디렉터리를 만듭니다. Fixit# mkdir /mntbk
Fixit# _
ad1s1 c의 c 내용은 여기를 참조하십시오.
Fixit# mount /dev/ad1s1c /mntbk
Fixit# _
restore 시작
ルート( / )をrestore
Fixit# cd /mnt
Fixit# restore -rf /mntbk/root.dump
/varをrestore
Fixit# cd /mnt/var
Fixit# restore -rf /mntbk/var.dump
/usrをrestore
Fixit# cd /mnt/usr
Fixit# restore -rf /mntbk/usr.dump
/homeをrestore
Fixit# cd /mnt/home
Fixit# restore -rf /mntbk/home.dump
대부분의 경우 대용량 usr 등을 restore 동안 다음과 같은 오류가 나타납니다.
Fixit# cd /mnt/usr
Fixit# restore -rf /mntbk/usr.dump
/: write failed, filesystem is full
restore: /tmp//rstdir1233044785: cannot write directory database: No space left on device
Try making space in /tmp/, or set environment variable TMPDIR
to an alternate location with more disk space.
Fixit# _
이러한 경우에는 다음과 같은 방법으로 TMP 디렉토리를 변경하고 다시 restore하십시오.
Fixit# mkdir /mntbk/tmp
Fixit# TMPDIR=/mntbk/tmp
Fixit# export TMPDIR
여기에서 TMP 디렉토리를 만들어 그곳을 이용한다는 뜻입니다.
이 작업 후 어떤 필요에せまら하고 / mntbk / tmp 디렉토리를 제거하면 거의 모든 명령을 수행할 수 없게됩니다.
이러한 경우에는 다음과 같이하여 TMP 디렉터리를 복원합니다.
Fixit# TMPDIR=/tmp
Fixit# export TMPDIR
fstab 갱신
다시 작성 작업이 필요없는 경우에도 반드시 확인합시다.파티션의 순서의 차이에 의해 시작되지 않는 사태에 빠져 2 일 동안 빠져 버렸습니다 ...
현재 탑재 상태를 확인합니다.
Fixit# df
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md0 4175 2449 1726 59% /
devfs 1 1 0 100% /dev
/dev/ad0s1a 1012974 153114 778524 16% /mnt
devfs 1 1 0 100% /mnt/dev
/mnt/dev/ad0s1f 8122034 9426 7462846 0% /mnt/home
/mnt/dev/ad0s1e 4058062 2434140 1299278 65% /mnt/usr
/mnt/dev/ad0s1d 1012974 34750 897180 4% /mnt/var
/dev/acd0 226150 226150 0 100% /dist
/dev/ad1s1c 13198878 2662822 9480146 22% /mntbk
이어 fstab를 엽니다.
Fixit# vi /mnt/etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1b none swap sw 0 0
/dev/ad0s1a / ufs rw 1 1
/dev/ad0s1f /home ufs rw 2 2
/dev/ad0s1d /usr ufs rw 2 2
/dev/ad0s1e /var ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0
밑줄 부분의 차이에お気갖는 것일까요?
장치 이름 "ad0s1e"와 "ad0s1d"마운트 이름이 반전이 필요하다.
이러한 경우에는 "/ mnt / etc / fstab"을 편집하여 수정 저장합니다.
이상이 끝났습니다.
LiveFS CD를 빼고 다시 시작하면 상승합니다.
후처리
restore를 실행하면 각 파티션의 현재 디렉토리에 restoresymtable 파일이 만들어집니다.이것은 증분 백업을 복원할 때해야 할 것입니다 때문에, restore 작업이 완료되면 삭제 해 둡시다.
ns# ls /
.cshrc boot entropy mnt sys
.profile cdrom etc proc tmp
.snap compat home rescue usr
COPYRIGHT dev lib restoresymtable var
backup disk2 libexec root
bin dist media sbin
ns# rm /restoresymtable
ns# rm /var/restoresymtable
ns# rm /usr/restoresymtable
ns# rm /home/restoresymtable
이럴 때는
복원된 서버를 시작하려고하면 다음 메시지에서 많은 시간 멈춘다.
Configuring syscons: keymap blanktime
다음과 같은 메시지가 나오고 파티션 수 없다
Unable to find device node for /dev/ad0s1b in /dev!
The creation of filesystems will be aborted.
Fdisk 메뉴에서 [w] 누르지 않고, [q]를 눌러 Label 설정이 끝난 뒤 마지막으로 Label 메뉴에서 [w]를 누릅니다.
sysinstall에서 Fdisk Label이 실패할
나도 검증 과정에서 여러 번 경험했습니다.sysinstall에서 Fdisk Label이 실패할를 참조하십시오.