Solaris Resource Manager 1.3 系統管理指南

第 4章 開機程序

UNIX 的開機程序中,會在不同的階段啟用 Solaris Resource Manager 軟體的各種功能。主要步驟如下所示:

不以 Solaris Resource Manager 開機

如果您必須在不使用 Solaris Resource Manager 的情況下開機,就必須變更 /etc/system 檔案中的 initclass 變數以參考分時 (TS) 而非 SHR。最簡單的方法就是使用 boot 指令的-a (詢問) 選項,提示您輸入一個系統檔案。然後再按下 RETURN 鍵以接受其他提示的預設值,直到您被提示要輸入系統檔的名稱。在系統出現提示時請輸入系統檔案名稱,鍵入 etc/system.noshrload (沒有前導斜線)作為回應。以下是程序範例:

ok boot -a  
Booting from: sd(0,0,0) -a 
Enter filename [kernel/unix]:
Enter default directory for modules
 [/platform/SUNW,UltraSPARC/kernel /kernel /usr/kernel]: 
SunOS Release 5.6 Version ... [UNIX(R) System V Release 4.0]
Copyright (c) 1983-1997, Sun Microsystems, Inc. 
Name of system file [etc/system]: etc/system.noshrload
root filesystem type [ufs]: 
Enter physical name of root device 
 [/sbus@1,f8000000/esp@0,800000/sd@3,0:a]:

Note that /etc/system.noshrload is a backup copy of /etc/system made at the time Solaris Resource Manager was installed.If there have been subsequent edits to /etc/system, then /etc/system.noshrload should be maintained in parallel so that it differs only by the occurrence of the Solaris Resource Manager modification:

# diff /etc/system /etc/system.noshrload 
< # enable srm < set initclass='SHR'

開機順序事件

系統開機之後切換為多重使用者模式時事件發生的順序,在 Solaris Resource Manager 中特別重要。下列步驟說明正確建立 Solaris Resource Manager 系統的順序:

  1. 使用 srmadm 指令來設置與啟動 Solaris Resource Manager。

    這時限制資料庫會開啟並且啟動 SHR 排程器。請參見使用 srmadm 來啟用 Solaris Resource Manager 以取得更多有關此處理的資訊。

  2. 指派 'lost' (srmlost) 及 (srmidle) 'idle' lnode。

  3. 啟始 Solaris Resource Manager 常駐程式。

    請參見啟始 Solaris Resource Manager 常駐程式 以取得更多有關此程序的資訊。

  4. 在一個適當的 lnode 上啟始其他系統常駐程式。

附錄中有說明上述處理中的步驟 1 到 3 所使用的預設指令集。

系統常駐程式處理

特別重要的是一個 lnode 的常駐程式(會永久執行的系統維護處理)附件而非 root lnode。附加至 root lnode 的處理會特別排程,並且將永遠獲得它們需求的所有 CPU 資源,因此最好不要附加任何可能會對 root lnode 造成 CPU 影響的處理。附加常駐程式至其自身的 lnode 可讓中央管理員為它們配置一個適當的 CPU 配分。

在開機程序當中,每個新的處理都會從其雙親處理承繼其 lnode 附件。因為 init 處理被附加至 rootlnode,所以全都屬於後續處理。直到執行 Solaris Resource Manager 初始指令集並且開啟 lnode 資料庫之後,處理才能附加至其他的 lnode之上,而且到時也只有在一個處理進行一個明確的 setuid 系統呼叫(如使用 login(1))或是特別要求 Solaris Resource Manager 附加至一個如 srmuser( 1SRM) 指令命名的 lnode 時才會發生。以 setuid 檔模式位元集來執行一個程式並無法改變 lnode 附件。

結果所有在系統啟始時自動啟動的系統程式會被附加到 root lnode。我們不希望看到這種情形,因為附加至 root lnode 上的處理會佔用太多 CPU 資源,因而嚴重地干擾其他處理的執行。因此我們建議您,任何作為開機程序的常駐程式處理都必須明確地附加至其本身的 lnode,方法是以 srmuser 指令來調用它們。這樣將不會影響其真正或有效的 UID。

這兒以一個範例來加以說明:

/usr/srm/bin/srmuser network in.named 

以上數行可以用來取代 named(1M) 常駐程式在其啟動指令集中現有的調用。因為要事先建立 network 所以需要一位使用者的帳號及 lnode。

使用 srmadm 來啟用 Solaris Resource Manager

srmadm 指令可以讓管理員控制作業狀態以及 Solaris Resource Manager 整個系統的設置。此指令通常是在從 Solaris Resource Manager init.d( 4 )指令集 /etc/init.d/init.srm 內轉換為執行層級 2 或 3 時採用。執行它的目的在確保系統每次開機時能為所有參數設定適當的值,並且確定在使用者取得系統的存取權之前先啟用 Solaris Resource Manager 系統。 srmadm 指令也可以用來管理全域的 Solaris Resource Manager 參數。請參閱 srmadm(1MSRM) 線上援助頁,以獲得可以使用 srmadm 來設定的參數清單。Solaris Resource Manager init.d 指令集中核發的 srmadm 指令將可:

請參閱透過 srmadm 的全域 Solaris Resource Manager 參數 以取得某些常見的 srmadm 指令調用方面的資訊。

啟始 Solaris Resource Manager 常駐程式

limdaemon(1MSR) 程式是一種 Solaris Resource Manager 使用者模式常駐程式。它通常會在轉換為執行層級 2 或 3 時被調用,作為 Solaris Resource Manager init.d 指令集的最後一步。請勿將它與由 kernel 所初始的 srmgr 系統處理(SYS 類別中)混淆。下列 ps(1) 列表中顯示了這兩種處理:

# ps -efc | egrep 'limdaemon|srmgr' 
root     4     0  SYS  60 18:42:14 ?        0:05 srmgr    
root    92     1  SHR  19 18:42:32 ?        0:41 limdaemon
 

limdaemon 程式可以執行下列功能:

limdaemon 在接到 Solaris Resource Manager 登入階段作業的通知後, limdaemon 會監控所有使用者的終端機連結時間,並且檢查其連結時間的限制。快要到達連結時間限制時,使用者會收到一份通知訊息。一旦超過限制時間,使用者會有一段寬限時間以終止所有處理並且登出。

limdaemon 程式會消減連結時間的使用量。如果使用連結時間限制的話,就必須執行終端機裝置類目的使用量消減。請參閱 使用limdaemon 中更多有關可用來控制 limdaemon 行為的指令行選項詳細資訊。