Solaris Resource Manager 1.3 系統管理指南

伺服器結合

第一個範例將說明下列這些指令:

liminfo

在一個終端機視窗中列印一或多位使用者的使用者屬性及限制資訊

limadm

變更一組使用者的限制屬性或是刪除限制資料庫的項目

srmadm

顯示或設定操作模式及擴及整個系統的 Solaris Resource Manager 可調參數

srmstat

顯示 lnode 活動資訊

考慮在單一機器之上結合兩個伺服器的情況,每個伺服器執行一個資料庫應用程式。在單一機器上同時執行兩個應用程式將形成一個工作系統。不使用 Solaris Resource Manager,Solaris 系統會以同等使用為基礎,將資源分配給應用程式,並且不會保護應用程式不受其他應用程式的需求競爭。不過,Solaris Resource Manager 卻提供了一種防止應用程式資源匱乏的有效機制。有了 Solaris Resource Manager 之後,可先啟動與對應的 lnode 結點相連接的每個資料庫 db1db2。要這麼做,必須建立三個新的管理位置保留符號使用者。例如: databasesdb1db2。將它們新增至限制資料庫;因為 lnode 與 UNIX UID 對應,這些也必須被新增至 passwd 檔案(或如果系統使用一個如 NIS 或 NIS+ 的名稱服務,則是密碼映射)中。假設 UID 被新增至 passwd 檔案或密碼對映中,位置保留符號使用者 db1db2 會被以下列指令指派給 databases lnode 群組:

# limadm set sgroup=0 databases
# limadm set sgroup=databases db1 db2

其中假設 /usr/srm/bin 位於使用者的路徑當中。

圖 10-1 伺服器結合

圖表說明兩個伺服器(各執行一個資料庫應用程式)結合到在單一機器上的情況。

因為沒有其他定義的群組,databases 群組目前可以完全自由使用機器。與資料庫有關的兩個 lnode 會被執行,而執行資料庫應用程式的處理會被附加至正確的 lnode,以 srmuser 指令在資料庫實例的啟動指令集之中。

# srmuser db1 /usr/bin/database1/init.db1
# srmuser db2 /usr/bin/database2/init.db2

當您啟動資料庫 db1 或是 db2 時,請使用 srmuser 指令以確保資料庫附加至正確的 lnode 之上並且正確地計費 (srmuser 這麼做不會影響處理的所有權) 。要執行上述指令,使用者必須擁有執行 init.db1 所需的 UNIX 權限以及管理權限才能將處理附加至 lnode db1 之上。當使用者登入並使用資料庫時,資料庫所進行的活動會累積到 lnode db1db2 之上。

藉由在每個 lnode 上使用一個配分的預設配置,databases 群組中的用量會在一段時間之後平均下來以確保資料庫 db1db2 都能收到相等的機器配置。特別是 databases 群組有一個尚未使用的配分,而且 databases 擁有它。每一個 lnode db1db2 也都被賦予一個配分的預設配置。在 databases 群組中,有兩個尚未使用的配分,因此 db1db2 都取得 databases 資源之相等分配(在此簡單範例中,並沒有競爭分配的情況,所以 databases 可使用整個系統)。

如果後來發現 Database1 上的活動需要機器百分之 60 的 CPU 功率而 Database2 需要百分之 20 的話,管理員可以藉由增加配置給 db1cpu.shares 數目,以指定系統提供至少這麼多的資源 (假設應用程式提出要求):

# limadm set cpu.shares=3 db1

現在 databases 群組中有四個尚未使用的配分;db1 有三個,而 db2 有一個。這個變更會在執行上述指令之後立即受到影響。當 lnode db1 (Database1) 實際收到多於其應得的百分之 60 之機器資源之前,會有一段適應期,因為 Solaris Resource Manager 必須在一段時間內平均用量。不過視消減全球參數而定,此時期不會持續太久。

要隨時監控此活動,請在分開的視窗當中使用 liminfo (請參見 一個典型的應用程式伺服器) 及 srmstat 指令。請注意,srmstat 會提供一個定期更新的顯示畫面。欲知更多有關 srmstat 的額外資訊,請參見 srmstat(1SRM)

現在您有一部執行兩個資料庫應用程式的機器,其中一個收到百分之 75 的資源,而另一個則收到百分之 25。請記住,root 是最高階的群組標頭使用者。因此作為 root 執行的處理,如果想要的話,便可取得整個系統的存取權。因此,應該建立額外的 lnode 以便執行備份、常駐程式及其他指令集,而讓 root 處理不可能佔用整個機器的資源。這是如依照傳統方式來執行的話很可能會發生的狀況。