FreeBSD 핸드북 : 백업 : 백업 프로그램들 : 비상시 복구 절차
Previous: 어떤 백업 프로그램이 좋습니까?
Next: 디스크 쿼터(Disk Quotas:디스크 사용량 제한)

9.3.8. 비상시 복구 절차

9.3.8.1. 재난이 발생하기 전에

발생할 수 있는 어떠한 피해에 대해서도, 복구 절차는 다음의 4단계만이 요구됩니다.

첫째, 디스크들의 라벨(예: disklabel sd0 | lpr), 파일 시스템 테이블(/etc/fstab), 모든 부트 메시지들을 두 카피씩 출력하세요.

둘째, 시스템의 모든 디바이스가 boot, fixit 플로피(boot.flp와 fixit.flp)에 포함되어 있는지 확인하십시요. 손쉬운 확인 방법은 boot 플로피로 시스템을 부팅하여 출력되는 메시지들을 살펴보는것 입니다. 모든 디바이스가 포함되어 있고 잘 동작한다면, 셋째 단계로 넘어가십시요.

그렇지 않다면, 장착된 디스크를 마운트하고, 테이프 드라이브가 제어되는 커널이 삽입된 두장의 맞춤 부팅 플로피를 만들어야 합니다. fdisk(8), disklabel(8), newfs(8), mount(8), 필요한 백업 프로그램 또한 포함되어야 합니다. 프로그램들은 스태틱 링크(역자주: statically linked, 필요한 라이브러리가 실행 파일에 모두 포함된)여야 합니다. 백업에 dump(8)가 사용되었다면, restore(8) 또한 포함하십시요.

셋째, 여느 때와 같이 테이프 백업을 수행하십시요. 마지막 백업 이후 수정된 자료들은 복구가 불가능할 수도 있습니다. 백업된 테이프에 쓰기-방지 탭을 거십시요.

넷째, 플로피(boot.flp와 fixit.flp 혹은 둘째 단계에서 만든 두장의 맞춤 부트 플로피)와 백업 테이프가 양호한지 검사하십시요. 복구 순서를 노트하여, 부트 플로피와 백업 테이프에 붙이고 출력도 해 두십시요. 정신이 매우 혼란스러운 상태이기 때문에, 본 노트는 복구과정에서 백업 테이프를 삭제해버리는 불상사를 예방하는데 도움이될 것 입니다. (어떻게요? tar xvf /dev/rst0 대신 실수로 타이핑된 tar cvf /dev/rst0 명령은 백업 테이프를 덮어써 버립니다)

안전을 보장하기 위해, 부트 플로피와 백업 테이프를 두 카피 제작하여, 한 카피를 외부 장소에 보관하십시요. 같은 건물안의 다른 사무실은 적합하지 않습니다. 세계무역센터 빌딩내의 수많은 회사들은 이에대한 값비싼 교훈을 얻었습니다. 외부 장소는 반드시 귀하의 컴퓨터와 디스크로부터 물리적으로 분리되어 충분히 떨어진 장소여야 합니다.

부트 플로피를 생성하는 스크립트 예제:

 #!/bin/sh
 #
 # 복구 플로피 생성
 #
 # 플로피 포맷
 #
 PATH=/bin:/sbin:/usr/sbin:/usr/bin
 
 fdformat -q fd0
 if [ $? -ne 0 ]
 then
	 echo "불량 플로피 입니다. 다른것을 사용하세요."
	 exit 1
 fi
 
 #
 # 플로피에 부트 블록 생성
 #
 disklabel -w -B -b /usr/mdec/fdboot -s /usr/mdec/bootfd /dev/rfd0c fd1440
 
 #
 # 파일시스템 생성
 #
 newfs -t 2 -u 18 -l 1 -c 40 -i 5120 -m 5 -o space /dev/rfd0a
 
 #
 # 플로피 마운트
 #
 mount /dev/fd0a /mnt
 
 #
 # 필요한 디렉토리 생성
 #
 mkdir /mnt/dev
 mkdir /mnt/bin
 mkdir /mnt/sbin
 mkdir /mnt/etc
 mkdir /mnt/root
 mkdir /mnt/mnt			# for the root partition
 mkdir /mnt/tmp
 mkdir /mnt/var
 
 #
 # 디렉토리 복사
 #
 if [ ! -x /sys/compile/MINI/kernel ] 
 then
	 cat << EOM
 MINI 커널이 없습니다. 만들어 주세요.
 MINI 커널을 위한 예제 설정 파일은 다음과 같습니다.
 #
 # MINI -- 디스크 삽입하기 위한 커널
 #
 machine	"i386"
 cpu		"I486_CPU"
 ident		MINI
 maxusers	5
 
 options		INET			# _tcp _icmpstat _ipstat _udpstat _tcpstat _udb을 사용하기 위해 필요합니다.
 options		FFS			# 버클리 빠른 파일 시스템
 options		FAT_CURSOR		# syscons나 pccons의 블록 커서
 options		SCSI_DELAY=15		# SCSI 디바이스에 대해 안전을 기하기 위해
 options		NCONS=2			# 하나의 가상 콘솔 포함
 options		USERCONFIG		# 사용자 설정 옵션 -c XXX 허용
 
 config		kernel	root on sd0 swap on sd0 and sd1 dumps on sd0
 
 controller	isa0
 controller	pci0
 
 controller	fdc0	at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr
 disk		fd0	at fdc0 drive 0
 
 controller	ncr0
 
 controller	scbus0
 
 device		sc0	at isa? port "IO_KBD" tty irq 1 vector scintr
 device		npx0	at isa? port "IO_NPX" irq 13 vector npxintr
 
 device		sd0
 device		sd1
 device		sd2
 
 device		st0
 
 pseudo-device	loop		# INET에서 요구됩니다.
 pseudo-device	gzip		# gzip으로 압축된 a.out 실행
 EOM
	 exit 1
 fi
 
 cp -f /sys/compile/MINI/kernel /mnt
 
 gzip -c -best /sbin/init > /mnt/sbin/init
 gzip -c -best /sbin/fsck > /mnt/sbin/fsck
 gzip -c -best /sbin/mount > /mnt/sbin/mount
 gzip -c -best /sbin/halt > /mnt/sbin/halt
 gzip -c -best /sbin/restore > /mnt/sbin/restore
 
 gzip -c -best /bin/sh > /mnt/bin/sh
 gzip -c -best /bin/sync > /mnt/bin/sync
 
 cp /root/.profile /mnt/root
 
 cp -f /dev/MAKEDEV /mnt/dev
 chmod 755 /mnt/dev/MAKEDEV
 
 chmod 500 /mnt/sbin/init
 chmod 555 /mnt/sbin/fsck /mnt/sbin/mount /mnt/sbin/halt
 chmod 555 /mnt/bin/sh /mnt/bin/sync
 chmod 6555 /mnt/sbin/restore
 
 #
 # 디바이스 노드 생성
 #
 cd /mnt/dev
 ./MAKEDEV std
 ./MAKEDEV sd0
 ./MAKEDEV sd1
 ./MAKEDEV sd2
 ./MAKEDEV st0
 ./MAKEDEV pty0
 cd /
 
 #
 # 최소 파일시스템 테이블 생성
 #
 cat > /mnt/etc/fstab <<EOM
 /dev/fd0a	/	ufs	rw 1 1
 EOM
 
 #
 # 최소 passwd 파일 생성
 #
 cat > /mnt/etc/passwd <<EOM
 root:*:0:0:Charlie &:/root:/bin/sh
 EOM
 
 cat > /mnt/etc/master.passwd <<EOM
 root::0:0::0:0:Charlie &:/root:/bin/sh
 EOM
 
 chmod 600 /mnt/etc/master.passwd
 chmod 644 /mnt/etc/passwd
 /usr/sbin/pwd_mkdb -d/mnt/etc /mnt/etc/master.passwd
 
 #
 # 플로피 언마운트후 사용자에게 통지
 #
 /sbin/umount /mnt

9.3.8.2. 사고 발생 후

중요한 문제는 하드웨어의 복구 가능 여부 입니다. 백업을 받았다면 소프트웨어에 대해서는 걱정할 필요가 없습니다.

하드웨어가 손상되었다면, 손상받은 부품을 교체하십시요.

하드웨어에 문제가 없으며, 플로피가 사용가능한지 검사하십시요. 맞춤 부트 플로피가 준비되어 있다면, 싱글-유저로 부팅합니다. ("boot:" 프롬프트에서 "-s"를 입력하세요) 다음 항목은 넘어가도 좋습니다.

boot.flp와 fixit.flp가 준비되어 있다면, 계속 읽어 나가십시요. 첫번째 플로피 드라이브에 boot.flp를 삽입한후, 컴퓨터를 켜세요. 초기 설체 메뉴가 화면에 표시될 것 입니다. "Fixit--Repair mode with CDROM or floppy." 옵션을 선택한후, fixit.flp를 요구할 때 fixit 플로피를 삽입하십시요. restore와 필요한 프로그램들은 /mnt2/stand에 있습니다.

각각의 파일시스템을 개별적으로 복구하세요.

첫번재 디스크의 루트 파티션을 mount(8) (예: mount /dev/sd0a /mnt) 하세요. 디스크라벨이 손상되었다면, disklabel(8) 명령으로 인쇄해 보관해 두었던 것과 동일하게 파티션과 라벨을 다시 만든후, newfs(8) 명령으로 파일시스템을 재생성 하십시요. 플로피를 읽기-쓰기 모드로 다시 마운트 하십시요. (예: mount -u -o rw /mnt) 백업 프로그램과 백업 테이프를 사용해 파일시스템을 복구 합니다. (예: restore vrf /dev/st0) 파일시스템을 언마운트한 후 (예: umount /mnt), 손상받은 각각의 파일시스템에 대해 동일한 과정을 반복합니다.

복구가 마무리되면, 다시 발생할지 모를 시스템 크래쉬나 자료 손상등의 사고에 대비해 새로운 테이프에 자료를 백업하십시요. 지금 백업에 소비하는 몇 시간이 추후 발생할 수 있는 잠재적인 사고로부터 여러분을 지켜줄 것 입니다.

9.3.8.3. * 사고에 대비하지 못했습니다. 어떻게 하죠?


FreeBSD 핸드북 : 백업 : 백업 프로그램들 : 비상시 복구 절차
Previous: 어떤 백업 프로그램이 좋습니까?
Next: 디스크 쿼터(Disk Quotas:디스크 사용량 제한)