다음 절에서는 기본 세트와 함께 제공된 맵의 업데이트를 완료한 후의 추가 절차에 대해 설명합니다.
맵이 변경된 후 Makefile은 yppush를 사용하여 새 맵을 슬레이브 서버로 전파합니다(Makefile에 NOPUSH가 설정되지 않은 경우). 이 작업을 위해 ypserv 데몬에 알리고 맵 전송 요청을 보냅니다. 슬레이브의 ypserv 데몬은 ypxfr 프로세스를 시작하고, 이 프로세스가 마스터 서버의 ypxfrd 데몬과 연결됩니다. 일부 기본 검사(예: 실제로 맵이 변경되었는지 여부)가 수행된 다음 맵이 전송됩니다. 슬레이브의 ypxfr이 yppush 프로세스로 응답을 보내 전송에 성공했는지 여부를 나타냅니다.
svc:/network/rpc/bind 서비스의 config/local_only 등록 정보는 false로 설정해야 합니다. 그렇지 않으면 NIS 마스터에서 yppush 명령을 사용하여 NIS 마스터의 업데이트된 버전을 NIS 슬레이브 서버로 전송할 수 없습니다.
맵이 전파되지 않는 경우가 있으며 수동으로 ypxfr을 사용하여 새 맵 정보를 보내야 합니다. root crontab 파일을 통해 주기적으로 또는 명령줄에서 대화식으로 ypxfr을 사용하도록 선택할 수 있습니다. 이러한 접근 방법은 다음 절에서 설명합니다.
맵에는 여러 가지 변경 등급이 있습니다. 예를 들어, 기본 맵 중 protocols.byname, 기본 맵이 아닌 맵 중 auto_master 같은 일부 맵은 몇 달 동안 변경되지 않을 수 있습니다. 그러나 passwd.byname은 하루에 여러 번 변경될 수 있습니다. crontab 명령을 사용하여 맵 전송을 예약하면 개별 맵에 대해 특정 전파 시간을 설정할 수 있습니다.
맵에 적합한 비율로 주기적으로 ypxfr을 실행하려면 각 슬레이브 서버의 루트 crontab 파일에 적합한 ypxfr 항목이 포함되어야 합니다. ypxfr은 마스터 서버의 복사본이 로컬 복사본보다 최신인 경우에만 마스터 서버에 연결하고 맵을 전송합니다.
각 맵에 대해 개별 crontab 항목을 만드는 대신 루트 crontab 명령이 모든 맵을 주기적으로 업데이트하는 셸 스크립트를 실행하도록 하는 것이 좋습니다. 샘플 맵 업데이트 셸 스크립트는 /usr/lib/netsvc/yp 디렉토리에 있습니다. 스크립트 이름은 ypxfr_1perday, ypxfr_1perhour 및 ypxfr_2perday입니다. 사이트 요구 사항에 맞게 이러한 셸 스크립트를 수정하거나 바꿀 수 있습니다. 다음 예에서는 기본 ypxfr_1perday 셸 스크립트를 보여 줍니다.
예 7-1 ypxfr_1perday 셸 스크립트#! /bin/sh # # ypxfr_1perday.sh - Do daily yp map check/updates PATH=/bin:/usr/bin:/usr/lib/netsvc/yp:$PATH export PATH # set -xv ypxfr group.byname ypxfr group.bygid ypxfr protocols.byname ypxfr protocols.bynumber ypxfr networks.byname ypxfr networks.byaddr ypxfr services.byname ypxfr ypservers
루트 crontab을 매일 실행할 경우 이 셸 스크립트는 하루에 한 번 맵을 업데이트합니다. 매주 한 번, 매달 한 번, 매 시간 한 번 등으로 맵을 업데이트하는 스크립트를 사용할 수도 있습니다. 그러나 맵을 자주 전파할 경우의 성능 저하에 주의해야 합니다. 자세한 내용은 crontab(1) 매뉴얼 페이지를 참조하십시오.
NIS 도메인에 대해 구성된 각 슬레이브 서버에서 root와 동일한 셸 스크립트를 실행합니다. 마스터 작동에 방해가 되지 않도록 한 서버에서 다른 서버로의 정확한 실행 시간을 변경합니다.
특정 슬레이브 서버에서 맵을 전송하려는 경우 셸 스크립트 내에서 ypxfr의 –h machine 옵션을 사용합니다. 다음은 스크립트에 배치하는 명령의 구문입니다.
# /usr/lib/netsvc/yp/ypxfr –h machine [ –c ] mapname
여기서 machine은 전송하려는 맵이 있는 서버의 이름이고, mapname은 요청된 맵의 이름입니다. 시스템을 지정하지 않고 –h 옵션을 사용하면 ypxfr은 마스터 서버에서 맵을 가져오려고 합니다. ypxfr을 실행할 때 ypserv가 로컬에서 실행되고 있지 않으면 ypxfr에서 현재 맵 지우기 요청을 로컬 ypserver로 보내지 않도록 –c 플래그를 사용해야 합니다.
–s domain 옵션을 사용하여 다른 도메인에서 로컬 도메인으로 맵을 전송할 수 있습니다. 이러한 맵은 도메인 간에 동일해야 합니다. 예를 들어, 두 도메인이 동일한 services.byname 및 services.byaddr 맵을 공유할 수 있습니다. 또는 제어를 강화하기 위해 rcp 또는 rsync를 사용하여 도메인 간에 파일을 전송할 수 있습니다.
ypxfr 명령을 호출하는 두번째 방법은 명령으로 실행하는 것입니다. 일반적으로 예외적인 상황에서만 이 방법을 사용합니다. 예를 들어, 테스트 환경을 만들기 위해 임시 NIS 서버를 설정하는 경우나 서비스가 중단된 NIS 서버를 신속하게 다른 서버와 일치시키려는 경우에 사용합니다.
ypxfr의 전송 시도와 결과는 로그 파일에 캡처될 수 있습니다. /var/yp/ypxfr.log 파일이 있으면 결과가 파일에 추가됩니다. 로그 파일의 크기는 제한되지 않습니다. 파일이 무한히 커지지 않도록 때때로 다음을 입력하여 파일을 비웁니다.
# cd /var/yp # cp ypxfr.log ypxfr.log.old # cat /dev/null > /var/yp/ypxfr.log
crontab에서 이러한 명령을 매주 한 번 실행하도록 할 수 있습니다. 로깅을 해제하려면 로그 파일을 제거합니다.