問題摘要︰ 從 Solaris 9 的 Sun Cluster 版本 3.1 即時升級至 Solaris 10 的版本 3.2 後, 無法在叢集軟體中適當地使用區域。問題在於 pspool 資料並非為 Sun Cluster 套裝軟體所建立。因此那些必須傳遞至非全域區域的套裝軟體 (例如 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。根據預設,PLATFORM 變數會設定為 uname -p 指令的輸出。
可安裝 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 套裝軟體名稱 package instance |
如果套裝軟體的 pspool 目錄已經存在,或針對相同的套裝軟體組執行兩次程序檔,指令提示符號中會顯示下列錯誤:
Transferring 套裝軟體名稱 package instance pkgadd: ERROR: unable to complete package transfer - identical version of 套裝軟體名稱 already exists on destination device |
這是無害的訊息,您可以安心地忽略。
在您為架構套裝軟體和資料服務套裝軟體執行程序檔後,將您的節點啟動至叢集模式。