문제점 요약: Solaris 9의 Sun Cluster 버전 3.1에서 Solaris 10의 버전 3.2로 라이브 업그레이드 후, 클러스터 소프트웨어에서 영역을 올바르게 사용할 수 없습니다. 문제는 Sun Cluster 패키지에 대해 pspool 데이터가 작성되지 않는다는 점입니다. 따라서 SUNWsczu와 같은 비전역 영역에 전파해야 하는 이들 패키지가 올바르게 전파되지 않습니다.
해결 방법: scinstall -R 명령을 사용하여 Sun Cluster 패키지가 업그레이드된 후, 클러스터가 클러스터 모드로 부트되기 전에 다음 스크립트를 두 번 실행합니다.
Sun Cluster 프레임워크 패키지에 대해 한 번
Sun Cluster 데이터 서비스 패키지에 대해 한 번
다음 방법 중 하나로 이 스크립트를 준비하고 실행합니다.
Sun Cluster 프레임워크 패키지에 대한 변수를 설정하고 스크립트를 실행합니다. 그런 다음 데이터 서비스 패키지에 대한 PATHNAME 변수를 수정하고 스크립트를 재실행합니다.
프레임워크 패키지에 대한 스크립트에 설정된 변수가 포함된 스크립트와 데이터 서비스 패키지에 대해 설정된 변수가 포함된 스크립트를 작성합니다. 그런 다음 두 스크립트를 실행합니다.
수퍼유저로 전환합니다.
다음 내용으로 스크립트를 작성합니다.
#!/bin/ksh typeset PLATFORM=${PLATFORM:-`uname -p`} typeset PATHNAME=${PATHNAME:-/cdrom/cdrom0/Solaris_${PLATFORM}/Product/sun_cluster/Solaris_10/Packages} typeset BASEDIR=${BASEDIR:-/} cd $PATHNAME for i in * do if pkginfo -R ${BASEDIR} $i >/dev/null 2>&1 then mkdir -p ${BASEDIR}/var/sadm/pkg/$i/save/pspool pkgadd -d . -R ${BASEDIR} -s ${BASEDIR}/var/sadm/pkg/$i/save/pspool $i fi done
변수 PLATFORM, PATHNAME 및 BASEDIR을 설정합니다.
이들 변수를 환경 변수로 설정하거나 스크립트의 변수를 직접 수정합니다.
플랫폼의 이름입니다. 예를 들면, sparc 또는 x86 등입니다. 기본적으로 uname -p 명령의 출력에 대해 PLATFORM 변수가 설정되어 있습니다.
Sun Cluster 프레임워크 또는 데이터 서비스 패키지를 설치할 수 있는 장치에 대한 경로입니다. 이 값은 pkgadd 명령의 -d 옵션에 해당합니다.
한 가지 예로 Sun Cluster 프레임워크 패키지의 경우, 이 값의 형식은 다음과 같습니다.
/cdrom/cdrom0/Solaris_${PLATFORM}/Product/sun_cluster/Solaris_10/Packages |
데이터 서비스 패키지의 경우, 이 값의 형식은 다음과 같습니다.
/cdrom/cdrom0/Solaris_${PLATFORM}/Product/sun_cluster_agents/Solaris_10/Packages |
루트 경로로 사용하고 pkgadd 명령의 -R 옵션에 해당하는 디렉토리의 전체 경로 이름입니다. 라이브 업그레이드의 경우, 이 값을 scinstall 명령의 -R 옵션으로 사용되는 루트 경로로 설정합니다. 기본적으로 BASEDIR 변수는 루트(/) 파일 시스템으로 설정되어 있습니다.
Sun Cluster 프레임워크 패키지에 대해 한 번, 데이터 서비스 패키지에 대해 한 번 스크립트를 실행합니다.
스크립트를 실행한 후, 각 패키지에 대한 명령 프롬프트에 다음 메시지가 표시됩니다.
Transferring pkgname package instance |
pspool 디렉토리가 각 패키지에 대해 이미 존재하거나 동일한 패키지 세트에 대해 스크립트를 두 번 실행한 경우, 다음 오류가 명령 프롬프트에 표시됩니다.
Transferring pkgname package instance pkgadd: ERROR: unable to complete package transfer - identical version of pkgname already exists on destination device |
이는 무해한 메시지이며 무시해도 됩니다.
프레임워크 패키지와 데이터 서비스 패키지 모두에 대해 스크립트를 실행한 후, 노드를 클러스터 모드로 부트합니다.