Solaris 10 系統維護(轉)

BSDLite發表於2007-08-16
Solaris 10 系統維護(轉)[@more@]相信很多人和我有類似的想法:要是solaris 10安裝配置完以後把它扔到某個位置再也不用管它,那該有多好。當然,這只是我們的一廂情願而已!儘管solaris 10的功能已經異常強大、效能超級穩定,但還是需要我們經常性的看管和維護。維護的主要內容包括監控、配置/設定修改以及故障處理這幾個方面,下面我們分別以一些例項來討論這些情形。

系統監控
監控最主要的目的是瞭解和掌握系統的負載和效能。
(一) 瞭解系統的狀況。
1、檢視正在執行的solaris 10的版本,使用不帶引數的命令 showrev,此命令加選項-r則是另外一個功能:檢視目前系統所需要安裝的補丁程式。
root@zsc # showrev
Hostname: zsc
Hostid: 841e69f3
Release: 5.10
Kernel architecture: sun4u //intel架構的伺服器輸出不一樣
Application architecture: sparc
Hardware provider: Sun_Microsystems
Domain:
Kernel version: SunOS 5.10 Generic_118833-18 //核心版本號
2、檢視硬體裝置的某些情況,使用命令 prtconfig.
root@zsc # prtconf
System Configuration: Sun Microsystems sun4u //intel,amd cpu的輸出不同
Memory size: 8192 Megabytes //記憶體為8G
System Peripherals (Software Nodes):

SUNW,Sun-Fire-V490
scsi_vhci, instance #0
packages (driver not attached)
SUNW,builtin-drivers (driver not attached)
………
3、檢視本機所連線的磁碟數量,使用命令 format.這個命令也是格式化硬碟的工具。
root@zsc # format
Searching for disks...done


AVAILABLE DISK SELECTIONS:
0. c1t0d0
/pci@9,600000/SUNW,qlc@2/fp@0,0/ssd@w21000014c39d4d9d,0
1. c1t1d0
/pci@9,600000/SUNW,qlc@2/fp@0,0/ssd@w21000014c39d4d9b,0
從輸出可以知道此伺服器有2個scsi硬碟。
4、檢視網路介面的狀況,使用帶選項的命令 ifconfig –a .
root@zsc # ifconfig -a
lo0: flags=2001000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
ce0: flags=1000843 mtu 1500 index 2
inet 61.128.x.x netmask ffffff00 broadcast 61.128.x.255
ether 0:14:4f:1e:69:f3 //ce0是網路介面的名字
ce1: flags=1000843 mtu 1500 index 3
inet 192.168.x.5 netmask ffffff00 broadcast 192.168.x.255
ether 0:14:4f:1e:69:f3 //x是某個具體的數值,安全起見這樣處理
從輸出可知,本機有2個網路介面。如果網路介面配置錯誤或沒有啟用,將有可能在輸出中看不見介面名稱及狀態。
5、檢視cpu的個數,使用不帶引數的命令mpstat。
root@db890 ~#mpstat //這個命令也是檢視CPU負載的工具
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
0 0 1 136 3 1 67 1 1 6 1 93 0 1 4 94
1 0 1 101 25 22 67 1 1 6 1 85 0 1 4 95
2 0 1 121 3 1 68 1 1 6 1 91 0 1 4 95
3 0 1 129 3 1 69 1 1 6 1 95 0 1 4 95
4 0 1 126 3 1 69 1 1 5 1 95 0 1 4 95
5 0 1 125 129 126 66 1 1 5 1 90 0 1 4 95
6 0 1 123 4 1 68 1 1 6 1 92 0 1 4 95
7 0 1 105 242 140 65 1 1 7 1 89 0 0 4 95
從輸出可知此伺服器有8個cpu,此處按0-7的序號開始;有些輸出不會以順序序號開始,但可以從行數得知cpu數目(有多少行就有多少個cpu)。
(二)、使用者及系統活動監控。
1、 檢視系統執行了多少時間,使用不帶引數的命令 uptime
root@zsc # uptime
上午 8點48分 執行 4 天 15:12, 2 使用者, 平均負載:0.01, 0.01, 0.01
2、 檢視有那些使用者登入到solaris 10系統,使用命令 w.
root@zsc # w
上午 9點12分 執行 4 天 15:36, 3 使用者, 平均負載:0.02, 0.01, 0.01
使用者名稱 終端號 登入時間 閒置 JCPU PCPU 執行命令
root console 週一下午 5點 5天 4:53 4:53 /usr/dt/bin/dtscreen -mode blank
root pts/3 上午 8點36分 25 -bash
root pts/4 上午 9點12分 w
3、 檢視系統的執行級別,使用帶選項的命令 who –r .
root@zsc # who -r
. run-level 3 10月 9日 17:36 3 0 S
4、檢視系統近期的執行狀態(包括關機、重起、使用者登入等),使用不帶引數的命令last.
root@zsc # last |more
root pts/3 211.94.81.227 Sat Oct 14 14:31 仍在登入狀態
root sshd 211.94.81.227 Sat Oct 14 14:31 仍在登入狀態
root sshd 218.247.140.197 Sat Sep 16 12:03 - 12:04 (00:00)
oracle console :0 Sat Sep 16 12:02 - 關機 (00:02)
reboot system boot Sat Sep 16 12:02
reboot system down Sat Sep 16 12:01
root pts/4 61.128.122.128 Sat Sep 16 12:01 - 關機 (00:01)
root sshd 61.128.122.128 Sat Sep 16 12:01 - 關機 (00:01)
oracle console :0 Sat Sep 16 12:00 - 關機 (00:01)
reboot system boot Sat Sep 16 11:59
reboot system down Sat Sep 16 11:59
oracle console :0 Sat Sep 16 11:58 - 關機 (00:01)
root console :0 Sat Sep 16 11:53 - 11:54 (00:00)
oracle console :0 Sat Sep 16 11:52 - 11:53 (00:01)
5、 檢視系統執行的程式,通俗一點說就是檢視系統正在執行那些程式,這是系統管理和維護過程中使用得最頻繁的工具。使用帶若干選項的命令 ps .ps-程式狀態的縮寫。筆者常用的3個選項是:-a 列出請求最頻繁的程式;-e 列出正在執行的程式;-f列印程式的詳細資訊。另外還有一個類似的工具ptree,用來檢視程式樹(提示:linux裡檢視程式樹的工具是pstree)。
root@zsc # ps -aef
UID PID PPID C STIME TTY TIME CMD
root 0 0 0 10月 09 ? 0:10 sched
root 1 0 0 10月 09 ? 0:02 /sbin/init
root 2 0 0 10月 09 ? 0:00 pageout
root 3 0 0 10月 09 ? 46:11 fsflush
daemon 209 1 0 10月 09 ? 0:00 /usr/lib/nfs/statd
root 15302 315 0 14:31:04 ? 0:00 /usr/lib/ssh/sshd
oracle 2917 1 0 10月 10 ? 0:06 ora_smon_zsjdb
oracle 6093 1 0 10月 12 ? 0:00 ora_s041_zswdb
oracle 5995 1 0 10月 12 ? 0:31 ora_pmon_zswdb
oracle 2915 1 0 10月 10 ? 0:11 ora_ckpt_zsjdb
root@zsc # ptree
7 /lib/svc/bin/svc.startd
212 /usr/lib/saf/sac -t 300
231 /usr/lib/saf/ttymon
219 /usr/lib/saf/ttymon -g -d /dev/console -l console -T sun -m ldterm,ttc
9 /lib/svc/bin/svc.configd
102 /usr/lib/sysevent/syseventd
103 /usr/sbin/nscd
113 /usr/lib/picl/picld
123 /usr/lib/crypto/kcfd
201 /usr/sbin/cron
2442 /opt/oracle/product/9.2.0/bin/tnslsnr LISTENER -inherit
2909 ora_pmon_zsjdb
2911 ora_dbw0_zsjdb
2913 ora_lgwr_zsjdb
有的時候,需要手動結束一個執行的程式,這種情況發生在諸如程式本身沒有關閉指令等這樣的場景。結束程式使用kill或killall來完成。執行結束程式的操作一定要仔細,看準確了再執行,不要殺錯程式。另外一個值得注意的是,不要隨便賦予普通使用者結束程式的許可權,這是很冒險的事情。
6、 檢視磁碟的使用情況也是一項十分重要的工作。再大的磁碟空間也會隨時間的推移而逐漸變小,當磁碟空間增加到一定限度的時候,有一些程式將發生錯誤甚至停止工作,我這裡曾有一臺監控伺服器傳送沒有標題和內容的報警郵件,原因就是分割槽 /tmp 被檔案填滿而不能寫入資料所致。使用帶引數的命令 df –k或df –h來檢視系統硬碟的容量使用情況,筆者本人傾向於使用引數 –h(human readable format)使其輸出的格式更加人性化。
root@zsc # df -k
檔案系統 千位元組 用了 可用 容量 掛接在
/dev/dsk/c1t0d0s0 11093692 7886931 3095825 72% /
/devices 0 0 0 0% /devices
ctfs 0 0 0 0% /system/contract
proc 0 0 0 0% /proc
mnttab 0 0 0 0% /etc/mnttab
swap 2526104 1048 2525056 1% /etc/svc/volatile
objfs 0 0 0 0% /system/object
fd 0 0 0 0% /dev/fd
/dev/dsk/c1t0d0s5 6050982 1588792 4401681 27% /var
swap 2525376 320 2525056 1% /tmp
swap 2525096 40 2525056 1% /var/run
/dev/dsk/c1t1d0s2 141179002 65553 139701659 1% /opt/disk2
/dev/dsk/c2t40d0s6 281589229 7006562 271766775 3% /opt/data1
/dev/dsk/c2t40d1s6 281589229 107661 278665676 1% /opt/data2
/dev/dsk/c2t40d2s6 281589229 2182197 276591140 1% /opt/data3
root@zsc # df -h
檔案系統 大小 用了 可用 容量 掛接在
/dev/dsk/c1t0d0s0 11G 7.5G 3.0G 72% /
/devices 0K 0K 0K 0% /devices
ctfs 0K 0K 0K 0% /system/contract
proc 0K 0K 0K 0% /proc
mnttab 0K 0K 0K 0% /etc/mnttab
swap 2.4G 1.0M 2.4G 1% /etc/svc/volatile
objfs 0K 0K 0K 0% /system/object
fd 0K 0K 0K 0% /dev/fd
/dev/dsk/c1t0d0s5 5.8G 1.5G 4.2G 27% /var
swap 2.4G 320K 2.4G 1% /tmp
swap 2.4G 40K 2.4G 1% /var/run
/dev/dsk/c1t1d0s2 135G 64M 133G 1% /opt/disk2
/dev/dsk/c2t40d0s6 269G 6.7G 259G 3% /opt/data1
/dev/dsk/c2t40d1s6 269G 105M 266G 1% /opt/data2
/dev/dsk/c2t40d2s6 269G 2.1G 264G 1% /opt/data3
7、 檢視網路連線,使用帶選項的命令 netstat .
root@zsc # netstat –anp //linux用這個選項將輸出更多的資訊,包括連線的程式等
Net to Media Table: IPv4
Device IP Address Mask Flags Phys Addr
------ -------------------- --------------- ----- ---------------
ce0 61.128.x.1 255.255.255.255 00:00:0c:07:ac:7a
ce1 192.168.x.5 255.255.255.255 SP 00:14:4f:1e:69:f3
ce0 61.128.x.3 255.255.255.255 00:0c:31:0b:48:8a
ce0 61.128.x.30 255.255.255.255 00:14:22:0e:f4:c6
ce0 61.128.x.27 255.255.255.255 00:14:22:b0:94:18
ce0 61.128.x.40 255.255.255.255 SP 00:14:4f:1e:69:f3
ce1 224.0.0.0 240.0.0.0 SM 01:00:5e:00:00:00
ce0 224.0.0.0 240.0.0.0 SM 01:00:5e:00:00:00
oot@zsc # netstat –r //檢視路由表

Routing Table: IPv4
Destination Gateway Flags Ref Use Interface
-------------------- -------------------- ----- ----- ------ ---------
61.128.x.0 zsc U 1 239 ce0
192.168.100.0 zsj U 1 4 ce1
BASE-ADDRESS.MCAST.NET zsc U 1 0 ce0
default 61.128.122.1 UG 1 2020
localhost localhost UH 26 877301 lo0
透過網路連線的狀態,可以知道有哪些網路服務在工作,以及是否有非法的訪問等情況。
8、檢視系統使用者近期執行了哪些操作,使用命令history。切換到其他使用者,看看最近他們都幹了些什麼。
(三)、負載監控
1、檢視虛擬記憶體狀態,使用帶引數的命令 vmstat 。
root@zsc # vmstat 4 4 //每4秒鐘採集一次,採集4次
kthr memory page disk faults cpu
r b w swap free re mf pi po fr de sr s1 sd sd sd in sy cs us sy id
0 0 0 3999808 2286744 7 9 27 0 0 0 0 0 1 0 1 290 186 205 0 0 100
0 0 0 2525696 637008 0 7 0 0 0 0 0 0 0 0 1 289 125 208 0 0 100
0 0 0 2525696 637008 0 0 0 0 0 0 0 0 0 0 1 299 126 192 0 0 100
0 0 0 2525696 637008 19 20 0 0 0 0 0 0 0 0 1 305 283 210 0 0 100
可以透過輸出值來判斷某些效能下降或者故障產生的原因 。
2、檢視系統I/O,使用命令iostat.這個命令可以帶很多選項,根據各自的需求選擇選項。
root@zsc # iostat 3 3 //採集資料3次,每次3秒鐘
tty sd1 ssd0 ssd1 ssd2 cpu
tin tout kps tps serv kps tps serv kps tps serv kps tps serv us sy wt id
0 126 0 0 0 15 1 15 0 0 0 67 1 42 0 0 0 100
0 79 0 0 0 0 0 0 0 0 0 8 1 15 0 0 0 100
0 27 0 0 0 0 0 0 0 0 0 8 1 16 0 0 0 100
3、另外一個工具:top. 在solaris 10環境中,並沒有這個工具(RedHat linux預設安裝這個工具),需要從網上下載這個工具包,然後把它安裝到系統。筆者下載了top-3.6-sol10-sparc-local安裝到系統。
root@zsc # top

last pid: 15804; load avg: 0.02, 0.01, 0.01; up 5+03:49:20 21:25:23
140 processes: 139 sleeping, 1 on cpu
CPU states: 99.5% idle, 0.1% user, 0.4% kernel, 0.0% iowait, 0.0% swap
Memory: 8192M phys mem, 620M free mem, 2007M swap, 2007M free swap

PID USERNAME LWP PRI NICE SIZE RES STATE TIME CPU COMMAND
15804 oracle 1 59 0 2431M 2422M sleep 0:00 0.71% oracle
15802 root 1 59 0 3320K 1936K cpu 0:00 0.23% top
721 root 1 59 0 2160K 784K sleep 4:15 0.06% rpc.rstatd
6001 oracle 11 59 0 3346M 3328M sleep 1:30 0.05% oracle
2909 oracle 1 59 0 2432M 2413M sleep 0:20 0.05% oracle
713 root 1 59 0 9152K 1560K sleep 2:59 0.04% sdtperfmeter
509 root 1 59 0 86M 13M sleep 2:51 0.04% Xsun
703 root 3 59 0 13M 1472K sleep 1:44 0.02% dtsession
6007 oracle 1 59 0 3343M 3330M sleep 0:21 0.01% oracle
6132 oracle 11 59 0 3352M 3331M sleep 0:02 0.01% oracle
5995 oracle 1 59 0 3344M 3327M sleep 0:35 0.01% oracle
218 root 1 59 0 1280K 480K sleep 0:01 0.01% utmpd
15655 root 1 59 0 9344K 2880K sleep 0:00 0.01% sshd
575 root 1 59 0 9496K 928K sleep 0:05 0.01% snmpd
103 root 29 59 0 4992K 2864K sleep 0:21 0.01% nscd
這是一個輸出比較全面的工具,建議大家安裝並使用之。
(四)、日誌檔案。系統日誌存放路徑是/var/adm/messages,這個檔案通常會很大,不要用cat命令來讀,如果用more 來讀,翻頁也是很辛苦的。一些有用的技巧是:先使用命令帶行數選項的head 和tail命令,然後使用grep這樣的工具。在寫作這篇文章的過程中,筆者透過檢視日誌檔案發現烏魯木齊的一臺執行solaris 10 的SUN V480伺服器某個電源發生故障。
root@zsc # more messages | grep error |more
Oct 10 03:10:04 zsc picld[113]: [ID 498155 daemon.error] Device PS1 AC UNAVAILABLE
Oct 10 03:10:44 zsc picld[113]: [ID 498155 daemon.error] Device PS1 AC UNAVAILABLE
Oct 10 03:17:16 zsc picld[113]: [ID 498155 daemon.error] Device PS1 AC UNAVAILABLE
Oct 10 03:23:50 zsc picld[113]: [ID 498155 daemon.error] Device PS1 AC UNAVAILABLEOct
Oct 10 05:17:21 zsc picld[113]: [ID 498155 daemon.error] Device PS1 AC UNAVAILABLE
Oct 10 05:23:59 zsc picld[113]: [ID 498155 daemon.error] Device PS1 AC UNAVAILABLE
Oct 10 05:30:28 zsc picld[113]: [ID 498155 daemon.error] Device PS1 AC UNAVAILABLE
Oct 10 05:37:21 zsc picld[113]: [ID 498155 daemon.error] Device PS1 AC UNAVAILABLE
Oct 10 05:43:56 zsc picld[113]: [ID 498155 daemon.error] Device PS1 AC UNAVAILABLE
Oct 10 05:50:29 zsc picld[113]: [ID 498155 daemon.error] Device PS1 AC UNAVAILABLE
--還有--
這是一個雙電源的伺服器,其中的一個失效了。

配置/設定修改
把伺服器從北京機房移到上海的某個機房,或者要新增一塊硬碟,諸如這樣的情形就需要對系統配置/設定做修改來滿足實際需要。很明顯的事實是在北京機房設定的伺服器網路引數搬到上海機房後多半不能使用,這就需要對它們就行某種程度的需改。接著我們還是一幾個例項來說明。
(一)、修改網路引數。與linux相比較,solaris 10 修改網路引數要複雜很多。它涉及到ipnodes、netmasks、hosts、defaultrouter、hostname.x等檔案。
1、執行命令ifconfig –a檢視網路介面的名字。
root@zsc # ifconfig -a
lo0: flags=2001000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
ce0: flags=1000843 mtu 1500 index 2
inet 61.128.x.40 netmask ffffff00 broadcast 61.128.122.255
ether 0:14:4f:1e:69:f3
ce1: flags=1000843 mtu 1500 index 3
inet 192.168.x.5 netmask ffffff00 broadcast 192.168.100.255
ether 0:14:4f:1e:69:f3
2、開啟網路介面檔案檢視介面的名稱。
root@zsc # more hostname.ce0
zsc
root@zsc # more hostname.ce1
zsj
4、 修改檔案/etc/hosts,使IP地址與介面一一對應。
root@zsc # more hosts
#
# Internet host table
#
127.0.0.1 localhost
61.125.x.30 zsc loghost
192.168.10.5 zsj loghost
5、 修改檔案/etc/netmsks.
root@zsc # more netmasks
192.168.10.0 255.255.255.0
61.125.x.0 255.255.255.0
6、 修改檔案/etc/defaultrouter以改變預設閘道器。一般情況下,預設閘道器只有一個。
root@zsc # more defaultrouter
#129.146.89.225 //這個預設路由是以前的,現在被註釋掉,不再起作用了。
61.125.x.1
7、 上述過程完成後重其網路,然後執行命令ifconfig –a檢查是否修改成功,然後測試一下網路的連通性,看是否可以連通閘道器,訪問internet。
可以直接執行命令ifconfig來指定介面的ip地址和子網掩碼的值,執行完命令後設定馬上生效。這種方式適合於臨時改變網路介面的場合,原因是-一旦系統重啟這些設定就消失了。
(二)、新增一個硬碟。Solaris 10支援scsi硬碟熱插拔,並且系統可以自動識別剛加入的硬碟(linux可以支援熱插拔,但系統不能發現後增加的硬碟,需要重啟系統才可以)。
1、插入scsi硬碟,然後執行命令cfgadm把硬碟載入到系統。
2、執行命令format格式化硬碟並分割槽。注意SPARC與INTEL架構的分割槽操作稍有不同,INTEL分割槽要用到fdisk這個命令。
3、用命令newfs在上述步驟建立的分割槽上建立檔案系統。
4、在系統建立一個目錄,然後用mount命令把剛建立的檔案系統掛接到這個目錄。
5、修改檔案/etc/vfstab,把掛接記錄新增進來,使系統開機就能自動掛接該檔案系統。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-962381/,如需轉載,請註明出處,否則將追究法律責任。

相關文章