適用於 Solaris 2.6 的 Solaris Resource Manager 1.0 系統管理指南(SPARC 平台版)

第 4章 開機程序

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

不以 Solaris Resource Manager 開機

如果必須在不使用 Solaris Resource Manager 的情況下開機,其方法很簡單,就是變更 /etc/system 檔案中的 initclass 變數以參考分時 (TS) 而非 SHR。最簡單的方法就是使用-一個 boot(1M) 指令的 (ask) 選項提示您輸入一個系統檔案。然後再按下 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]:

請注意 /etc/system.noshrload 只是安裝 Solaris Resource Manager 時所製作的 /etc/system 的備份。如果後來對 /etc/system 進行其他編輯,那麼應該同時維護 /etc/system.noshrload,因此其差別僅限於 Solaris Resource Manager 進行某些修正時﹕

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

開機順序事件

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

  1. 使用 srmadm(1MSRM) 指令來設置與啟動 Solaris Resource Manager。這時限制資料庫會開啟並且啟動 Solaris Resource Manager 排程器。請參閱 "使用 srmadm 來啟用 Solaris Resource Manager " 以取得更多有關使用 srmadm(1MSRM) 來啟動 Solaris Resource Manager 方面的資訊。

  2. 指派 'lost' 及 'idle' lnode。

  3. 啟始 Solaris Resource Manager 精靈。請參閱 "啟始 Solaris Resource Manager 精靈" 以取得更多有關此程序的資訊。

  4. 在一個適當的 lnode 上啟始其他系統精靈。

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

系統精靈處理

特別重要的是一個 lnode 的精靈(會永久執行的系統維護處理)附件而非 root lnode。附加至 root lnode 的處理會特別加以排程,而且會取得它們所需的所有 CPU 資源;因此不建議您將任何處理附加至可能會佔用太多 CPU 的 root lnode 之上。附加精靈至其自身的 lnode 可讓中央管理員為它們配置一個適當的 CPU 配分。

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

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

這__以一個範例來加以說明﹕

# /usr/srm/bin/srmuser Start in.named attached to the my_daemons lnode.  

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

使用 srmadm 來啟用 Solaris Resource Manager

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

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

啟始 Solaris Resource Manager 精靈

limdaemon(1MSRM) 程式是一種 Solaris Resource Manager 使用者模式精靈。它通常會在轉換為執行層級 2 或 3 時被調用,作為 Solaris Resource Manager init.d(4) 指令集的最後一步。請勿將它與由 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 行為的指令行選項詳細資訊。