歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> Unix基礎知識 >> SMF:Solaris的系統服務管理工具

SMF:Solaris的系統服務管理工具

日期:2017/3/3 15:23:45   编辑:Unix基礎知識

SMF(solaris 10中 “可預測性自恢復技術”- 包含了FMA和SMF兩部分)提供了在傳統 UNIX 啟動腳本、init 運行級和配置文件的基礎上進行擴充的基礎結構。

一、SMF的概念

要理解 SMF 概念,必須先了解下面的這些術語。

(1)SMF 服務

SMF 框架中的基本管理單元是服務實例。每個 SMF 服務都有可能配置了多個版本。而且,同一版本的多個實例也可以在一個 Solaris 10系統上運行。實例是指服務的特定配置。Web 服務器就是一種服務。配置為在端口 80 偵聽的特定 Web 服務器守護進程就是一個實例。Web 服務器服務的每個實例都可以有不同的配置要求。服務具有系統范圍的配置要求,但是,每個實例都可以根據需要覆蓋特定的要求。單個服務的多個實例可作為服務對象的子對象進行管理。服務不只表示長期運行的標准系統服務(如 dhcpd 或 nfsd),還表示包括 ISV 應用程序(如 Oracle 軟件)的各種系統實體。此外,服務還可能包括如下所示的較不傳統的實體:

物理網絡設備

配置的 IP 地址

內核配置信息

與系統 init 狀態相對應的裡程碑,如多用戶運行級

通常,服務是一個向應用程序和其他服務(本地和遠程)提供一系列功能的實體。服務依賴於隱式聲明的本地服務列表。裡程碑是特殊類型的服務。裡程碑服務表示系統的高級屬性。例如,構成運行級 S、2 和 3 的服務均由裡程碑服務表示。

(2)服務標識符

使用故障管理資源標識符 (Fault Management Resource Identifier, FMRI) 對每個服務實例進行命名。FMRI 包括服務名稱和實例名稱。例如,rlogin 服務的 FMRI 是 svc:/network/login:rlogin,其中 network/login 標識服務,rlogin 標識服務實例。

FMRI 的等效格式如下所示:

svc://localhost/system/system-log:default

svc:/system/system-log:default

system/system-log:default

另外,一些 SMF 命令可以使用此 FMRI 格式:svc:/system/system-log。一些命令將推斷要使用哪個實例,以及何時沒有多義性。有關選擇適當的 FMRI 格式的說明,請參見 SMF 命令手冊頁。

服務名稱中通常包括一個常規的功能類別。這些類別包括:

application

device

milestone

network

platform

site

system

傳統的 init.d 腳本也使用以 lrc(而不是 svc)開頭的 FMRI 進行表示,例如:lrc:/etc/rcS_d/S35cacheos_sh。可使用 SMF 對傳統服務進行監視。

(3)SMF 兼容性

盡管現在許多標准的 Solaris 服務由 SMF 來管理,位於 /etc/rc*.d 中的腳本仍能繼續在運行級轉換中執行。包括在以前的 Solaris 發行版中的多數 /etc/rc*.d 腳本都已經作為 SMF 的一部分刪除。其余的腳本能夠繼續運行,從而在不必將服務轉換為使用 SMF 的情況下,添加第三方應用程序。另外,對於要使用安裝後的腳本改正的軟件包,/etc/inittab 和 /etc/inetd.conf 必須可用。這些稱為傳統運行服務。通過運行 inetconv 命令,可以將這些傳統運行服務添加到服務配置系統信息庫中。您可以查看這些服務的狀態,但是 SMF 不支持進行其他更改。使用此功能的應用程序將不會受益於 SMF 所提供的精確的故障隔離。轉換為利用 SMF 的應用程序可能無法再修改 /etc/inittab 和 /etc/inetd.conf 文件。已轉換的應用程序將不使用 /etc/rc*.d 腳本。同樣,新版本的 inetd 不會在 /etc/inetd.conf 中查找項。

(4)SMF 清單和SMF 配置文件

SMF 清單是一個 XML 文件,其中包含與服務或服務實例相關的一整套屬性。這些文件存儲在 /var/svc/manifest 中。不應當使用清單來修改服務的屬性。服務配置系統信息庫是配置信息的授權來源。要將清單中的信息引入到系統信息庫中,必須運行 svccfg import 或者允許服務在系統引導過程中導入信息。

SMF 配置文件是一個 XML 文件,其中列出了在系統引導時啟用的一組服務實例。配置文件存儲在 /var/svc/profile 中。下面是所包括的一些配置文件:

generic_open.xml-此配置文件可啟用在早期 Solaris 發行版中缺省啟用的大多數標准 Internet 服務。這是缺省配置文件。

generic_limited_net.xml-此配置文件禁用許多標准 Internet 服務。啟動了 sshd 服務和 NFS 服務,但是其余的多數 Internet 服務處於禁用狀態。

(5)SMF 快照

服務配置系統信息庫中的數據包括快照以及可編輯的配置。每個服務實例的相關數據都存儲在快照中。標准快照如下所示:

initial-在首次導入清單時提取

running-在執行服務的方法時使用

start-在最後一次成功啟動時提取

SMF服務始終使用 running 快照執行 SMF 服務。如果此快照不存在,系統將自動創建。

svcadm refresh 命令能夠激活快照。svccfg 命令用於查看或恢復到以前快照中的實例配置。

二、SMF命令行工具

SMF 提供一組與 SMF 交互,並完成標准管理任務的命令行實用程序。下列實用程序可用來管理 SMF。管理SMF服務包括配置、查看、啟用/禁用、啟動/停止服務等任務。這些任務分別可以用svccfg, svcs, svcadm等命令完成。表 1 是SMF服務管理工具實用程序 。

三、SMF和系統啟動的關系

1. SMF和系統啟動的關系如圖1

圖1 SMF和系統啟動的關系

SMF 提供用來引導系統的新方法。如:

(1)有另外一個與 all 裡程碑相關聯的系統狀態。此裡程碑不同於多用戶 init 狀態,因為 SMF 只能識別定義的服務。如果您添加了服務(如第三方產品),那麼,除非您使用下面的命令,否則它們可能不會自動重新啟動:

ok boot -m milestone=all

(2)如果使用某個裡程碑引導系統,一定要同時使用 -s 選項。如果未包括 -s,則系統將停留在引導系統時所處的裡程碑狀態。通過按 Ctrl-D,系統將不會自動進入多用戶狀態。可以使用以下命令進入多用戶狀態:

# svcadm milestone all

(3)在引導系統時,可以選擇使用 verbose 選項來查看更多的消息。缺省情況下,系統將不顯示這些消息。要在詳細模式下引導,請使用以下命令:

ok boot -mverbose

2. Solaris 10的運行級

Solaris 10有八個運行級,表2對其進行了說明。在 /etc/inittab 文件中,缺省的運行級指定為運行級 3。

表2 Solaris 10的運行級

SMFde 組成要素

SMF包含兩個進程、服務定義的manifest和profile、服務配置庫和命令行管理工具等內容:

1. svc.startd, svc.configd

svc.startd是SMF的主要進程,它根據系統管理員指令或者系統故障或應用故障來啟動、停止、重啟服務。svc.configd是負責管理服務配置庫的進程。

2. manifest, profile

服務和服務的實例可以用xml文件定義,manifest定義服務,profile定義服務實例,這些xml文件通常存放在/var/svc目錄下。

3. repository(sqlite db)

服務配置庫存放在/etc/svc/repository.db文件中。服務配置庫實際上是一個sqlite的關系數據庫,它存放了服務的定義、配置等信息。 /var/svc目錄下的manifest和profile文件和/etc/svc/repository.db文件都包含了服務的定義、配置等信息,後者的信息是權威的。

4. CLI mgmt tool

命令行管理工具包括:svccfg, svcadm, svcprop, svcs, inetadm, inetconv, repoistory_restore。

到此為止筆者介紹了使用SMF來管理Solaris 系統服務的方法。

Copyright © Linux教程網 All Rights Reserved