limits database 就是 Solaris Resource Manager 用來執行所有資源控制的使用者資訊資料庫。其中包含每個 UID 一個 lnode,藉由使用 UID 作為檔案直接索引的方式來存取。如果一個數字很大的 UID 有一個 lnode 的話,限制資料庫也會很大。然而,系統中使用者的 UID 並沒有依照順序排列,因此限制資料庫會產生很大的間隙,可能會在一種支援此資料庫的檔案系統類型上內存為一個稀疏檔。亦即檔案"空白"段落的內存實際上沒有配置到任何磁碟區段。 ufs 檔案系統支援稀疏檔,但是 tmpfs 檔案系統則不支援。請參見 儲存與回復限制資料庫 以取得有關稀疏檔和儲存與回復限制資料庫方面的資訊。
每當您建立一個新的使用者,就必須要建立一個新的 lnode。
Solaris Resource Manager 啟動檔 (/etc/init.d/init.srm) 會在第一次調用,或發現檔案遺失而開機時建立一個初始限制資料庫。
限制資料庫一般位於 /var/srm 目錄中。
限制資料庫應屬於 root,群組應屬於 root,而且由所有者讀取。因為只有附帶超級使用者證明的 kernel 內碼可以寫入檔案中,所以不需要設定寫入權限。
如果一個使用者取得寫入 Solaris Resource Manager 限制資料庫的權限,可能會造成系統安全上的顧慮。
因為限制資料庫能成為一個疏散檔案,複制時請小心。如果以一個並不支援稀疏檔的公用程式撰寫的話,此檔案多半會佔用許多磁碟空間,因為連同檔案的空白區域都會被讀作一連串的零,然後被寫回為真正的區段,不再是空白區域。這有可能發生在檔案被公用程式複製,存檔或恢復,如 tar(1), cpio(1) 或 cp(1) 等公用程式來複製、備份或回復檔案的話,就會發生這種狀況。而 ufsdump(1M) 和 ufsrestore(1M) 等程式則會保留空白。
若您想備份與回復限制資料庫,也可以使用 limreport 來生成一個 ASCII 版的檔案,並且使用 limadm 從該已存的 ASCII 版本來重新建立原始檔。例如,下列指令:
# limreport 'flag.real' - lname preserve > /var/tmp/savelnodes |
會將 /var/tmp/savelnodes 建立為密碼映射中每位使用者的 lnode 的一個 ASCII 代表。請注意這不會為那些沒有對應的密碼映射登錄儲存 lnode。因此建議只需要密碼映射中所有 UID 的 lnode 便足夠。
指令:
# limadm set -f - < /var/tmp/savelnodes |
重新建立資料被儲存的 lnode。此指令將不會刪除未儲存的 lnode,所以也可以用這些方法來儲存與回復選取的 lnode 而非整個限制資料庫。
limreport 及 limadm 指令 更加詳細地說明 limreport 和 limadm 指令的使用。因為當改變 lnode 結構的翻譯﹝限制資料庫所定義﹞成為必需,熟悉使用這些指令儲存和恢復 lnode,對管理員是一大幫助。
由於一般系統作業期間會定期變更限制資料庫的內容,建議您最好在系統處於不活動狀態,或在單一使用者模式當中執行備份操作。同樣地,一定要在沒有使用 Solaris Resource Manager 的時候才能回復整個限制資料庫,例如系統處於單一使用者模式中的時候。