Ken Milberg, 作家/網(wǎng)站專(zhuān)家, Future Tech
2009 年 7 月 09 日 近幾年,HP、Sun 和 IBM? 都發(fā)布了他們的商業(yè) UNIX? 操作系統(tǒng)的新版本。本文對(duì)比這些版本中的一些創(chuàng)新。討論執(zhí)行某些任務(wù)的方法的差異,比如連網(wǎng)和性能調(diào)優(yōu)。另外,討論這三種操作系統(tǒng)在虛擬化方面的差異。 首先討論這三種主要商業(yè) UNIX 操作系統(tǒng)的最新版本中的新特性和創(chuàng)新。 HP-UX 創(chuàng)新 HP-UX 是 HP 提供的 UNIX 操作系統(tǒng),最新版本是 11iV3。HP-UX 基于 System V,在 HP9000 RISC 服務(wù)器和 HP Integrity Itanium 系統(tǒng)上運(yùn)行。它與 Solaris 相似,可以在 SPARC RISC 體系結(jié)構(gòu)和 x86 機(jī)器上運(yùn)行。AIX 只能在 POWER? 體系結(jié)構(gòu)上運(yùn)行;但是,由于 UNIX 是高端操作系統(tǒng),所以 AIX 和 POWER 體系結(jié)構(gòu)的緊密集成是有積極意義的。 HP-UX 11Iv3 支持最多 128 個(gè)處理器核、2TB 內(nèi)存、2TB 的文件系統(tǒng)、16TB 的文件系統(tǒng)大小和 1 億 ZB 的存儲(chǔ)。最近的創(chuàng)新和改進(jìn)包括: - 通過(guò)動(dòng)態(tài)節(jié)能功能,減少了 10% 的能源使用量
- 通過(guò)根據(jù)位置優(yōu)化資源分布,把應(yīng)用程序性能最多提高 20%
- 通過(guò) tune-N-Tools 調(diào)優(yōu)改進(jìn)對(duì)性能敏感的工作負(fù)載
大約一年前,HP 提供了幾套操作系統(tǒng)環(huán)境,這為客戶(hù)提供了新的選擇。它們包括數(shù)據(jù)中心、高可用性環(huán)境、虛擬服務(wù)器和基本環(huán)境。 - 提高了虛擬 I/O 的速度,在使用 HP Integrity 虛擬機(jī)器時(shí)這可以提高帶寬并提高 CPU 效率 60%。這個(gè)改進(jìn)通過(guò) gatekeeper 功能幫助優(yōu)先處理重要的數(shù)據(jù)流。
- Online JFS 通過(guò) VxFS 實(shí)現(xiàn)一種編制文件索引的新方法,并改進(jìn)了目錄的性能。
- HP Logical Volume Manager 改進(jìn):
- 支持在線磁盤(pán)替換
- 動(dòng)態(tài)線支持
- 支持多路徑 I/O
- 性能改進(jìn)
- 提高了邏輯卷的最大大?。?2 - 16TB
- 通過(guò) Dynamic nPartitions 改進(jìn)了虛擬化。這允許把基于單元的 HP Integrity 和 HP9000 服務(wù)器配置成大小不同的分區(qū),可以根據(jù)應(yīng)用程序工作負(fù)載調(diào)整大小,在調(diào)整過(guò)程中應(yīng)用程序仍然是可用的。
- 連網(wǎng)改進(jìn):
- 通過(guò)避免不必要的 TCP 通信,提高移動(dòng)客戶(hù)機(jī)的吞吐量。
- 改進(jìn) TCP 堆棧,提高性能。
- 改變了可調(diào)優(yōu)的 tcphasize。這現(xiàn)在是自動(dòng)調(diào)優(yōu)的;系統(tǒng)可以在引導(dǎo)時(shí)確定最優(yōu)值。
LVM 中的改進(jìn)確實(shí)不錯(cuò),但是 AIX 已經(jīng)實(shí)現(xiàn)了這些改進(jìn)中的大部分。 Solaris 創(chuàng)新 Solaris 10 最初是于 2005 年發(fā)布的。Solaris 的最新版本是 10 10/08。這個(gè)版本中的改進(jìn)包括: - 支持從 ZFS 引導(dǎo)并使用 ZFS 作為根文件系統(tǒng)。還對(duì) Solaris ZFS 做了許多其他改進(jìn),包括:能夠回滾文件集而不需要卸載,改進(jìn)了 ZFS 發(fā)送命令,支持 ZFS 配額和保留(只適用于文件系統(tǒng)數(shù)據(jù)),zpool 歷史等命令行改進(jìn),允許通過(guò)升級(jí)命令用新的文件系統(tǒng)改進(jìn)升級(jí)現(xiàn)有的文件系統(tǒng),允許非根用戶(hù)執(zhí)行細(xì)粒度的 ZFS 管理任務(wù)。
- 在從一個(gè)系統(tǒng)轉(zhuǎn)移到另一個(gè)系統(tǒng)時(shí),允許 Solaris 容器自動(dòng)地更新它的環(huán)境。
- LDOM 支持,可以動(dòng)態(tài)地重新配置磁盤(pán)和網(wǎng)絡(luò) I/O。
- 在 x86 系統(tǒng)上支持最多 256 個(gè)處理器 —— 原來(lái)是 64 個(gè)。
- 對(duì) Solaris 區(qū)的改進(jìn),包括:允許在 Shared IP Zones 中設(shè)置默認(rèn)路由器,允許 ZFS 上的區(qū)路徑。
- 安全改進(jìn),包括:通過(guò) Solaris Management Console 改進(jìn)了數(shù)據(jù)隔離,改進(jìn)了加密算法。
- 連網(wǎng)改進(jìn):提供 SIP 全程通信流度量和日志記錄,提供新的通信協(xié)議解析器實(shí)用程序。
對(duì) ZFS 的這些改進(jìn)非常重要。當(dāng) ZFS 最初出現(xiàn)時(shí),它看起來(lái)令人難以置信,但它的根本問(wèn)題是特性功能很不夠。增加了新功能之后,ZFS 在許多方面能夠與 AIX 的 JFS2 和 HP 的 VxFs 匹敵了。 AIX 創(chuàng)新 AIX 6.1 最初是在大約兩年前發(fā)布的,現(xiàn)在有兩個(gè)版本:標(biāo)準(zhǔn)版(只包含基本 AIX)和企業(yè)版(包含工作負(fù)載分區(qū)管理程序和幾個(gè) Tivoli? 產(chǎn)品)。在這個(gè)方面,它與 HP 相似,HP 也有多個(gè)版本。最近的改進(jìn)包括: - 工作負(fù)載分區(qū):WPAR 是與 Solaris 容器相似的操作系統(tǒng)虛擬化特性,它允許在一個(gè) AIX 6.1 實(shí)例中創(chuàng)建多個(gè) AIX 6.1 環(huán)境。只需幾秒即可創(chuàng)建應(yīng)用程序 WPAR,它可以在全局實(shí)例中運(yùn)行,這樣就可以快速測(cè)試新應(yīng)用程序。
- 動(dòng)態(tài)應(yīng)用遷移:這允許分區(qū)從一個(gè)系統(tǒng)轉(zhuǎn)移到另一個(gè)系統(tǒng),而不需要重新啟動(dòng)應(yīng)用程序,也不會(huì)中斷最終用戶(hù)對(duì)系統(tǒng)的訪問(wèn)。除了支持計(jì)劃內(nèi)停機(jī)之外,這個(gè)特性還有助于管理工作負(fù)載,允許在非高峰時(shí)間段把服務(wù)器從系統(tǒng)中轉(zhuǎn)移出去,從而節(jié)省能源和成本,提高效率。
- 支持并發(fā) AIX 內(nèi)核更新:不需要重新引導(dǎo)系統(tǒng),系統(tǒng)更新即可生效。
- 支持存儲(chǔ)鍵:可以減少與 AIX 內(nèi)核中的內(nèi)存覆蓋相關(guān)的許多停機(jī)。
- 支持動(dòng)態(tài)跟蹤:可以簡(jiǎn)化系統(tǒng)或應(yīng)用程序代碼的調(diào)試。
- 改進(jìn)了功能性恢復(fù)例程:可以從通常會(huì)導(dǎo)致系統(tǒng)崩潰的錯(cuò)誤中恢復(fù)。
- 改進(jìn)了 AIX 6.1 的默認(rèn)調(diào)優(yōu)參數(shù),可以實(shí)現(xiàn)更好的性能。
- 提供新的名稱(chēng)解析器緩存守護(hù)進(jìn)程,可以更高效地處理主機(jī)名解析請(qǐng)求。
- 改進(jìn)了 NFS version 4 的 NIM 支持。
- 改進(jìn)了可管理性特性,比如 IBM Systems Director Console for AIX。
最近的安全改進(jìn)包括: - 基于角色的訪問(wèn)控制 (RBAC),允許管理員把管理責(zé)任委托給非根用戶(hù),從而提高安全性和可管理性。
- Trusted AIX 讓 AIX 6.1 能夠滿(mǎn)足法律和行業(yè)標(biāo)準(zhǔn)對(duì)私密性的大多數(shù)需求。
- Encrypted Filesystems 能夠加密文件系統(tǒng)中的數(shù)據(jù),為 JFS 提供更強(qiáng)的安全性。
- 對(duì) AIX 安全專(zhuān)家的改進(jìn)包括支持在 LDAP 中存儲(chǔ)安全模板。
- Secure-by-Default 安裝只啟用最少量的服務(wù)和包,從而在安裝時(shí)保持比較高的安全水平。
- 支持長(zhǎng)密碼。
在所有平臺(tái)上都支持這些 AIX 6.1 創(chuàng)新,但是以下創(chuàng)新只在 POWER 6? 體系結(jié)構(gòu)上得到支持:應(yīng)用程序存儲(chǔ)鍵、內(nèi)核存儲(chǔ)鍵、自動(dòng)調(diào)整的頁(yè)面大小、固件輔助轉(zhuǎn)儲(chǔ)和硬件十進(jìn)制浮點(diǎn)。大多數(shù) IBM POWER 管理員很喜歡 AIX 6.1,已經(jīng)開(kāi)始把它投入生產(chǎn)環(huán)境了。下面討論 AIX 6.1 的哪些特性讓它如此受歡迎,并與 Solaris 和 HP-UX 的最新版本做比較。 首先是工作負(fù)載分區(qū)和動(dòng)態(tài)應(yīng)用遷移。Solaris 有區(qū)和容器,它們?cè)谀承┓矫媾c工作負(fù)載分區(qū)相似,但是沒(méi)有實(shí)現(xiàn) WPAR 的某些功能??梢栽诓煌V狗謪^(qū)運(yùn)行的情況下把工作負(fù)載分區(qū)上的工作負(fù)載從一個(gè)系統(tǒng)轉(zhuǎn)移到另一個(gè)系統(tǒng),其他 UNIX 版本都無(wú)法這樣做。這為什么很重要?因?yàn)檫@可以在計(jì)劃內(nèi)停機(jī)期間保持系統(tǒng)正常運(yùn)行,從而提高可用性。系統(tǒng)管理員甚至操作員(通過(guò) WPAR 管理員)可以把這些虛擬操作系統(tǒng)分區(qū)轉(zhuǎn)移到其他系統(tǒng),而不需要停機(jī)。這還有助于實(shí)現(xiàn)綠色計(jì)算,在非高峰時(shí)間段操作員可以把分區(qū)從利用率不高的機(jī)器轉(zhuǎn)移到其他機(jī)器,然后關(guān)閉空閑的機(jī)器。這個(gè)特性可以幫助公司節(jié)省大量成本,同時(shí)對(duì)環(huán)境有好處。在這里討論的所有創(chuàng)新中,AIX WPAR 和動(dòng)態(tài)應(yīng)用程序可移動(dòng)性顯然是最重要的。 現(xiàn)在,我們比較一下這三種操作系統(tǒng)提供的虛擬化功能。 HP-UX - nPartitions:這些是硬分區(qū),在某些方面與 SUN DSD 相似。與 SUN DSD 不同的是,它可以在其他分區(qū)在線的情況下為一個(gè)分區(qū)提供服務(wù)。它們還支持多個(gè)操作系統(tǒng),比如 HP-UX、VMS、Linux? 和 Windows?,但是這只適用于 Itanium 處理器,不適用于 PA-RISC。與 Solaris 相似,它們只能用于高端系統(tǒng),而且不支持在不重新引導(dǎo)的情況下轉(zhuǎn)移資源。
- vPars:這些是單獨(dú)的操作系統(tǒng)實(shí)例,它們可以駐留在 nPartition 或物理機(jī)器中。它們?cè)试S根據(jù)需求的變化在分區(qū)之間動(dòng)態(tài)地轉(zhuǎn)移 CPU 和 RAM 資源。一定要注意,不能在分區(qū)之間共享或轉(zhuǎn)移存儲(chǔ)資源。
- Integrity Virtual Machines:它們?cè)试S在一個(gè)分區(qū)上有多個(gè)單獨(dú)的訪客(guest)實(shí)例,訪客實(shí)例是完全隔離的環(huán)境。它們?cè)试S分區(qū)有自己的操作系統(tǒng)拷貝。在 HP 或 Sun 提供的所有虛擬化特性中,這個(gè)特性最接近 IBM 的 PowerVM?。它的粒度實(shí)際上比 PowerVM 提供的粒度更細(xì),可以把機(jī)器劃分成 1/20 的微分區(qū)。主要缺點(diǎn)是可伸縮性不太好,只支持最多 4 個(gè) CPU 和 64GB 內(nèi)存。其他限制包括在系統(tǒng)運(yùn)行時(shí)不能轉(zhuǎn)移存儲(chǔ)適配器,也不能讓進(jìn)程只使用單一分區(qū)。
- Resource Partitions:這相當(dāng)于 Solaris 容器和 AIX WPAR。
在這三家硬件廠商中,只有 IBM 具有單一的整合的技術(shù)和愿景。另外兩家采用多種戰(zhàn)略,即使是最有經(jīng)驗(yàn)的系統(tǒng)用戶(hù),往往也會(huì)被搞糊涂。IBM 只提供 PowerVM。與 HP 和 Sun 提供的任何特性相比,它的可伸縮性更好、更新穎,可以轉(zhuǎn)移正在運(yùn)行的分區(qū)。IBM 有 40 年的虛擬化經(jīng)驗(yàn)(包括大型機(jī)),這確保 PowerVM 具有很好的穩(wěn)定性。最后,它的特性和功能能夠擴(kuò)展到整個(gè) POWER 產(chǎn)品系列。這是 HP 和 Sun 的嚴(yán)重缺點(diǎn),HP 和 Sun 的產(chǎn)品只適用于低端機(jī)型、高端機(jī)型和/或特定的體系結(jié)構(gòu)。 Solaris Sun 采用多種方法在 Solaris 上實(shí)現(xiàn)虛擬化: - 容器或區(qū):這個(gè)特性允許在一個(gè) Solaris 內(nèi)核實(shí)例中運(yùn)行多個(gè)虛擬操作系統(tǒng)。這是操作系統(tǒng)虛擬化的一種形式,與 AIX 6.1 的 WPAR 相似。
- xVM 服務(wù)器:這個(gè)在 2008 年 2 月引入的創(chuàng)新是一個(gè)基于 Xen 和系統(tǒng)管理程序的解決方案,可以在 x86 機(jī)器上的 Solaris 中運(yùn)行。在 Sparc 上,它仍然基于邏輯域。
- 邏輯域 (LDOM):這允許同時(shí)運(yùn)行多個(gè)操作系統(tǒng)。實(shí)際上,它有許多問(wèn)題,包括可伸縮性差、微分區(qū)功能有限制而且不支持在系統(tǒng)之間進(jìn)行動(dòng)態(tài)分配。另外,它只能在低端 SPARC 服務(wù)器上運(yùn)行。
- 硬件分區(qū) (DSD):這在某些方面與 IBM 的邏輯分區(qū)(不屬于 PowerVM)相似。硬件分區(qū)不具備真正的虛擬化功能,因?yàn)椴荒茉诜謪^(qū)之間共享資源。
AIX PowerVM 的虛擬化基于 IBM 的虛擬化系統(tǒng)管理程序戰(zhàn)略。它包括以下特性: - 微分區(qū):這個(gè)特性允許把一個(gè) POWER CPU 劃分為最多 10 個(gè)邏輯分區(qū),每個(gè)分區(qū)使用一個(gè) CPU 的 1/10。通過(guò)使用不封頂分區(qū) (uncapped partition),它還允許系統(tǒng)的計(jì)算能力超過(guò)已經(jīng)分配給分區(qū)的標(biāo)稱(chēng)計(jì)算能力。
- 共享處理器池:這個(gè)特性允許虛擬分區(qū)連接到共享池,可以隨著需求的增長(zhǎng)獲取更多資源。在需求低時(shí),分區(qū)把資源返回給共享處理器池。
- 虛擬 I/O 服務(wù)器。這定義一種特殊的分區(qū),允許以 Shared Ethernet 和 Virtual SCSI 的形式共享 I/O。
- 動(dòng)態(tài)應(yīng)用遷移。這個(gè)創(chuàng)新允許把正在運(yùn)行的分區(qū)從一臺(tái)機(jī)器轉(zhuǎn)移到另一臺(tái)機(jī)器。這讓系統(tǒng)能夠在計(jì)劃內(nèi)停機(jī)期間正常運(yùn)行,從而提高系統(tǒng)的可用性。這個(gè)特性只能在 POWER 6 上使用。
- 共享專(zhuān)用計(jì)算能力。這個(gè)特性讓分區(qū)可以把專(zhuān)用的處理器提供給共享處理器池。
連網(wǎng) 本節(jié)比較 HP-UX、Solaris 和 AIX 上的連網(wǎng)配置并在這三種系統(tǒng)上配置默認(rèn)路由器。 HP-UX 在安裝之后第一次引導(dǎo) HP-UX 系統(tǒng)時(shí),運(yùn)行 /sbin/set_parms 程序。以后還可以通過(guò) set_parms initial 命令運(yùn)行它。這個(gè)程序用來(lái)配置系統(tǒng)主機(jī)名、IP 地址和其他網(wǎng)絡(luò)參數(shù)。我們來(lái)運(yùn)行它:# set_parms initial (清單 1)。 清單 1. 運(yùn)行 set_parms 程序 _______________________________________________________________________________ Welcome to HP-UX! Before using your system, you will need to answer a few questions. The first question is whether you plan to use this system on a network. Answer "yes" if you have connected the system to a network and are ready to link with a network. Answer "no" if you: * Plan to set up this system as a standalone (no networking). * Want to use the system now as a standalone and connect to a network later. _______________________________________________________________________________ Are you ready to link this system to a network? Press [y] for yes or [n] for no, then press [Enter] Do you wish to use DHCP to obtain networking information? Press [y] for yes or [n] for no, then press [Enter] | 然后,還要輸入 IP 地址并添加其他網(wǎng)絡(luò)參數(shù)。 我們來(lái)配置一個(gè)以太網(wǎng)卡。在安裝 LAN 卡之后,運(yùn)行 ioscan(見(jiàn)清單 2)。 清單 2. 運(yùn)行 ioscan # ioscan -fnC lan Class I H/W Path Driver S/W State H/W Type Description =================================================================== lan 0 0/0/1/0 iether CLAIMED INTERFACE HP PCI/PCI-X 1000Base-T # | 現(xiàn)在看看 IP 地址,這使用 netstat 配置(見(jiàn)清單 3)。 清單 3. 使用 netstat 配置 IP 地址 # netstat -in Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll lan0 1500 15.170.178.0 15.170.178.24 32657 0 24500 0 0 lo0 32808 127.0.0.0 127.0.0.1 131689 0 131689 0 0 | 然后,我們就可以清楚地看到 lan0 與 15.170.178.2 相關(guān)聯(lián)(見(jiàn)清單 4)。 清單 4. 檢查 lan0 關(guān)聯(lián) # ifconfig lan0 lan0: flags=1843<UP,BROADCAST,RUNNING,MULTICAST,CKO> inet 15.170.178.24 netmask ffffff80 broadcast 15.170.178.127 | 接下來(lái),要配置默認(rèn)路由器。首先需要修改這個(gè)文件:/etc/rc.config.d/netconf。這個(gè) netconf 文件存儲(chǔ)配置值(見(jiàn)清單 5)。 清單 5. 檢查 netconf 文件中的配置值 # more /etc/rc.config.d/netconf # netconf: configuration values for core networking subsystems # # @(#) netconf $Date: 2007/10/05 20:09:28 $Revision: r11.31/1 PATCH_11.31 (PHNE_ 36281) # # HOSTNAME: Name of your system for uname -S and hostname # # OPERATING_SYSTEM: Name of operating system returned by uname -s # ---- DO NOT CHANGE THIS VALUE ---- # # LOOPBACK_ADDRESS: Loopback address # ---- DO NOT CHANGE THIS VALUE ---- # HOSTNAME="vital24.testdrive.hp.com" OPERATING_SYSTEM=HP-UX LOOPBACK_ADDRESS=127.0.0.1 DEFAULT_INTERFACE_MODULES="" INTERFACE_NAME[0]=lan0 IP_ADDRESS[0]=15.170.178.24 DHCP_ENABLE[0]=1 SUBNET_MASK[0]=255.255.255.128 ROUTE_MASK[0]=0.0.0.0 ROUTE_GATEWAY[0]=15.170.178.126 BROADCAST_ADDRESS[0]="" ROUTE_COUNT[0]=1 ROUTE_DESTINATION[0]=default | 然后,使用 route 命令添加新的路由:# route add default 15.170.178.126 1 。 為了啟用新的路由,需要啟動(dòng)服務(wù)并啟用路由(見(jiàn)清單 6)。 清單 6. 啟動(dòng)服務(wù)并啟用路由 /sbin/init.d inetd start /sbin/init.d net start | 現(xiàn)在檢查 SAM,它與 IBM 的 SMIT 相似。盡管它不如 SMIT 那么強(qiáng)大,但是 HP 至少提供了基于文本的菜單系統(tǒng)。 清單 7. HP 的 SAM # sam HP-UX System Management Homepage (Text User Interface) SMH --------------------------------------------------------------------------------- a - Auditing and Security c - Auditing and Security Attributes Configuration(new) d - Peripheral Devices e - Resource Management f - Disks and File Systems g - Display k - Kernel Configuration l - Printers and Plotters(new) m - Event Monitoring Service n - Networking and Communications p - Printers and Plotters s - Software Management u - Accounts for Users and Groups | 接下來(lái),導(dǎo)航到 Networking and Communications >Network Interfaces Configuration>Network Interface Cards。下面是輸出(見(jiàn)清單 8)。 清單 8. 網(wǎng)絡(luò)接口卡的輸出 Interface Subsystem Hardware Interface Interface IPv4 Address IPv6 Address Name Path State Type ---------------------------------------------------------------------------------------- lan0 iether 0/0/1/0 up 1000Base-T 15.170.178.24 Not Configured | 在 HP-UX 上配置連網(wǎng)的方法相當(dāng)明了,但是有時(shí)候有點(diǎn)兒麻煩。 Solaris 在 Solaris 上,需要使用文本文件配置連網(wǎng);沒(méi)有與 SAM 或 SMIT 相似的界面。首先在 /etc/nodename 中檢查機(jī)器的主機(jī)名(見(jiàn)清單 9)。 清單 9. 檢查機(jī)器的主機(jī)名 # more /etc/nodename ezqspc03z1 | 還應(yīng)該使用 ifconfig 收集信息(見(jiàn)清單 10)。 清單 10. 使用 ifconfig 收集信息 # ifconfig -a lo0:9: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 bge0:9: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 inet 10.24.116.121 netmask ffffff00 broadcast 10.24.116.255 | 使用 plumb 參數(shù)啟用卡。 例如,用 # ifconfig bge0 plumb 啟用 bge0。 用 # ifconfig bge0 up 啟動(dòng)接口。 要想讓修改持久有效,需要編輯以下文件: - /etc/hosts
- /etchostname/bge0(針對(duì) bge0 接口)
- /etc/netmasks
- /etc/defaultrouter
現(xiàn)在修改默認(rèn)路由。在 Solaris 中修改默認(rèn)路由需要執(zhí)行以下步驟: - 首先需要編輯 /etc/defaultrouter 文件。
- 刪除默認(rèn)路由器的 IP 地址:
# route delete theipadress 。 - 分配新的地址:
# route add default newipadress 。 盡管我有時(shí)候喜歡編輯文本文件,但是大多數(shù)管理員更喜歡通過(guò)菜單驅(qū)動(dòng)的系統(tǒng)配置連網(wǎng),這樣更靈活、更方便。另外,在使用 Solaris 時(shí),需要探測(cè)接口 —— 其他 UNIX 操作系統(tǒng)不需要這么做。IBM 和 HP 都有系統(tǒng)管理菜單系統(tǒng),但是 IBM 的 SMIT 更強(qiáng)大。 AIX 在 AIX 上,在配置連網(wǎng)時(shí)通常使用 SMIT。列出以太網(wǎng)適配器的方法如下:# smit devices >communication >Ethernet adapter>adapter>list all Ethernet adapters(見(jiàn)清單 11)。 清單 11. 列出以太網(wǎng)適配器 COMMAND STATUS Command: OK stdout: yes stderr: no Before command completion, additional instructions may appear below. ent0 Available Virtual I/O Ethernet Adapter (l-lan) ent1 Available Virtual I/O Ethernet Adapter (l-lan) F1=Help F2=Refresh F3=Cancel F6=Command F8=Image F9=Shell F10=Exit /=Find n=Find Next | 要想進(jìn)行修改,需要找到 Change/Show characteristics of an Ethernet adapter(見(jiàn)清單 12)。 清單 12. Change/Show characteristics of an Ethernet adapter Change / Show Characteristics of an Ethernet Adapter Type or select values in entry fields. Press Enter AFTER making all desired changes. [TOP] [Entry Fields] Ethernet Adapter ent0 Description Virtual I/O Ethernet > Status Available Location Enable ALTERNATE ETHERNET address no + ALTERNATE ETHERNET address [0x000000000000] + Minimum Tiny Buffers [512] +# Maximum Tiny Buffers [2048] +# Minimum Small Buffers [512] +# Maximum Small Buffers [2048] +# Maximum Medium Buffers [128] +# Maximum Medium Buffers [256] +# Minimum Large Buffers [24] +# [MORE...8] | 在 AIX 上,也可以使用 ifconfig。但是,用 ifconfig 所做的修改并不保存在 Object Data Manager (ODM) 中,在重新引導(dǎo)時(shí)會(huì)丟失。因此,ifconfig 不是首選方法;在 AIX 上處理網(wǎng)絡(luò)時(shí)應(yīng)該堅(jiān)持使用 SMIT。 要想在 AIX 上添加默認(rèn)路由,只需訪問(wèn) SMIT>TCP/IP Minimum Configuration&Startup 并單擊您的接口,就會(huì)出現(xiàn)清單 13 所示的屏幕。 清單 13. 在 AIX 上添加默認(rèn)路由 Minimum Configuration & Startup To Delete existing configuration data, please use Further Configuration menus Type or select values in entry fields. Press Enter AFTER making all desired changes. [TOP] [Entry Fields] * HOSTNAME [lpar21ml162f_pub] * Internet ADDRESS (dotted decimal) [172.29.141.94] Network MASK (dotted decimal) [255.255.192.0] * Network INTERFACE en0 NAMESERVER Internet ADDRESS (dotted decimal) [10.153.50.201] DOMAIN Name [vlp.com] Default Gateway Address (dotted decimal or symbolic name) [172.29.128.13] Cost [0] # Do Active Dead Gateway Detection? no + [MORE...2] F1=Help F2=Refresh F3=Cancel F4=List F5=Reset F6=Command F7=Edit F8=Image | 然后,修改默認(rèn)網(wǎng)關(guān)并按回車(chē)鍵兩次(見(jiàn)清單 14)。 清單 14. 修改默認(rèn)網(wǎng)關(guān) COMMAND STATUS Command: OK stdout: yes stderr: no Before command completion, additional instructions may appear below en0 lpar21ml162f_pub inet0 changed en0 changed inet0 changed | AIX 提供的連網(wǎng)配置方法非常簡(jiǎn)單。 性能調(diào)優(yōu) 本節(jié)對(duì)比 HP-UX、Solaris 和 AIX 上的系統(tǒng)調(diào)優(yōu)方法。 HP-UX 要記住,HP-UX 在 Itanium 和 PA-RISC 上運(yùn)行。因此,與運(yùn)行在 PA-RISC 上編譯的程序相比,Integrity 服務(wù)器在運(yùn)行針對(duì) Itanium 編譯的程序時(shí)性能更好。它可以以模擬(emulation)模式運(yùn)行,但是運(yùn)行速度沒(méi)那么快。HP-UX 11.31 具有每線程鎖,因此 HP-UX 的最新版本的性能顯著提高了 —— 與 11iV2 相比,最多能夠提高 30%。在磁盤(pán) I/O 方面,建議使用塊大小為 8 kb 的 VxFS。還可以通過(guò) HP Online JFS 獲得更好的性能。 在 SAM 中查看要調(diào)整的 kctune 和 kcweb 參數(shù)。 下面是 kctune 的參數(shù)列表(見(jiàn)清單 15)。 清單 15. kctune 的參數(shù)列表 # kctune Tunable Value Expression Changes NSTREVENT 50 Default NSTRPUSH 16 Default NSTRSCHED 0 Default STRCTLSZ 1024 Default STRMSGSZ 0 Default acctresume 4 Default acctsuspend 2 Default aio_iosize_max 0 Default Immed aio_listio_max 256 Default Immed aio_max_ops 2048 Default Immed aio_monitor_run_sec 30 Default Immed aio_physmem_pct 10 Default Immed aio_prio_delta_max 20 Default Immed aio_proc_max 0 Default Immed aio_proc_thread_pct 70 Default Immed aio_proc_threads 1024 Default Immed aio_req_per_thread 1 Default Immed allocate_fs_swapmap 0 Default alwaysdump 0 Default Immed audit_memory_usage 5 Default Immed audit_track_paths 0 Default Auto base_pagesize 4 Default copy_on_write 1 Default Immed core_addshmem_read 0 Default Immed core_addshmem_write 0 Default Immed create_fastlinks 0 Default default_disk_ir 0 Default diskaudit_flush_interval 5 Default Immed dlpi_max_ub_promisc 1 Default Immed dma32_pool_size 4194304 4194304 dmp_rootdev_is_vol 0 Default dmp_swapdev_is_vol 0 Default dnlc_hash_locks 512 Default dontdump 0 Default Immed dst 1 Default dump_compress_on 1 Default Immed dump_concurrent_on 1 Default Immed executable_stack 0 Default Immed expanded_node_host_names 0 Default Immed fcache_fb_policy 0 Default Immed fcache_seqlimit_file 100 Default Immed fcache_seqlimit_system 100 Default Immed fcd_disable_mgmt_lun 0 Default Immed fclp_ifc_disable_mgmt_lun 0 Default Immed filecache_max 1018863616 Default Auto filecache_min 101883904 Default Auto fr_statemax 800000 Default fr_tcpidletimeout 86400 Default fs_async 0 Default fs_symlinks 20 Default Immed ftable_hash_locks 64 Default gvid_no_claim_dev 0 Default hires_timeout_enable 0 Default Immed hp_hfs_mtra_enabled 1 Default intr_strobe_ics_pct 80 Default Immed io_ports_hash_locks 64 Default ipf_icmp6_passthru 0 Default ipl_buffer_sz 8192 Default ipl_logall 0 Default ipl_suppress 1 Default ipmi_watchdog_action 0 Default Immed ksi_alloc_max 33600 Default Immed ksi_send_max 32 Default lcpu_attr 0 Default Auto max_acct_file_size 2560000 Default Immed max_async_ports 4096 Default Immed max_mem_window 0 Default Immed max_thread_proc 1100 1100 Immed maxdsiz 1073741824 Default Immed maxdsiz_64bit 4294967296 Default Immed maxfiles 2048 Default maxfiles_lim 4096 Default Immed maxrsessiz 8388608 Default maxrsessiz_64bit 8388608 Default maxssiz 8388608 Default Immed maxssiz_64bit 268435456 Default Immed maxtsiz 100663296 Default Immed maxtsiz_64bit 1073741824 Default Immed maxuprc 256 Default Immed mca_recovery_on 0 Default Auto msgmbs 8 Default Immed msgmnb 16384 Default Immed msgmni 512 Default Immed msgtql 1024 Default Immed ncdnode 150 Default nclist 8292 Default ncsize 8976 Default nflocks 4096 Default Auto nfs2_max_threads 8 Default Immed nfs2_nra 4 Default Immed nfs3_bsize 32768 Default Immed nfs3_do_readdirplus 1 Default Immed nfs3_jukebox_delay 1000 Default Immed nfs3_max_threads 8 Default Immed nfs3_max_transfer_size 1048576 Default Immed nfs3_max_transfer_size_cots 1048576 Default Immed nfs3_nra 4 Default Immed nfs4_bsize 32768 Default Immed nfs4_max_threads 8 Default Immed nfs4_max_transfer_size 1048576 Default Immed nfs4_max_transfer_size_cots 1048576 Default Immed nfs4_nra 4 Default Immed nfs_portmon 0 Default Immed ngroups_max 20 Default Immed ninode 8192 Default nkthread 8416 Default Immed nproc 4200 Default Immed npty 60 Default nstrpty 60 Default nstrtel 60 Default nswapdev 32 Default nswapfs 32 Default numa_policy 0 Default Immed pa_maxssiz_32bit 83648512 Default pa_maxssiz_64bit 536870912 Default pagezero_daemon_enabled 1 Default Immed patch_active_text 1 Default Immed pci_eh_enable 1 Default pci_error_tolerance_time 1440 Default Immed process_id_max 30000 Default Auto process_id_min 0 Default Auto pwr_idle_ctl 0 Default Auto remote_nfs_swap 0 Default rng_bitvals 9876543210 Default rng_sleeptime 2 Default rtsched_numpri 32 Default sched_thread_affinity 6 Default Immed scroll_lines 100 Default secure_sid_scripts 1 Default Immed semaem 16384 Default semmni 2048 Default semmns 4096 Default semmnu 256 Default semmsl 2048 Default Immed semume 100 Default semvmx 32767 Default shmmax 1073741824 Default Immed shmmni 400 Default Immed shmseg 300 Default Immed streampipes 0 Default swchunk 2048 Default sysv_hash_locks 128 Default tcphashsz 0 Default timeslice 10 Default timezone 420 Default uname_eoverflow 1 Default Immed vnode_cd_hash_locks 128 Default vnode_hash_locks 128 Default vol_checkpt_default 10240 Default vol_dcm_replay_size 262144 Default vol_default_iodelay 50 Default vol_fmr_logsz 4 Default vol_max_bchain 32 Default vol_max_nconfigs 20 Default vol_max_nlogs 20 Default vol_max_nmpool_sz 4194304 Default Immed vol_max_prm_dgs 1024 Default vol_max_rdback_sz 4194304 Default Immed vol_max_vol 8388608 Default vol_max_wrspool_sz 4194304 Default Immed vol_maxio 256 Default vol_maxioctl 32768 Default vol_maxkiocount 2048 Default vol_maxparallelio 256 Default vol_maxspecialio 256 Default vol_maxstablebufsize 256 Default vol_min_lowmem_sz 532480 Default Immed vol_mvr_maxround 256 Default vol_nm_hb_timeout 10 Default vol_rootdev_is_vol 0 Default vol_rvio_maxpool_sz 4194304 Default Immed vol_subdisk_num 4096 Default vol_swapdev_is_vol 0 Default vol_vvr_transport 1 Default vol_vvr_use_nat 0 Default volcvm_cluster_size 16 Default volcvm_smartsync 1 Default voldrl_max_drtregs 2048 Default voldrl_min_regionsz 512 Default voliomem_chunk_size 65536 Default voliomem_maxpool_sz 4194304 Default voliot_errbuf_dflt 16384 Default voliot_iobuf_default 8192 Default voliot_iobuf_limit 131072 Default voliot_iobuf_max 65536 Default voliot_max_open 32 Default volpagemod_max_memsz 6144 Default Immed volraid_rsrtransmax 1 Default vps_ceiling 16 Default Immed vps_chatr_ceiling 1048576 Default Immed vps_pagesize 16 Default Immed vx_maxlink 32767 Default vx_ninode 0 Default Immed vxfs_bc_bufhwm 0 Default Immed vxfs_ifree_timelag 0 Default Immed vxtask_max_monitors 32 Default | 可以看到有兩種內(nèi)核參數(shù)。一種立即生效 (immed),另一種在重新引導(dǎo)時(shí)生效 (Default)。 可以使用 kctune 命令查看一個(gè)參數(shù)。只需輸入清單 16 這樣的 kctune 命令。 清單 16. 使用 kctune # kctune vx_ninode Tunable Value Expression Changes vx_ninode 0 Default Immed # | 我喜歡使用 -B 選項(xiàng),這會(huì)在做修改時(shí)備份原來(lái)的值。我們來(lái)修改一個(gè)參數(shù)(見(jiàn)清單 17)。 清單 17. 使用 -B 選項(xiàng) # kctune -B vps_ceiling=32 * The automatic 'backup' configuration has been updated. * Future operations will update the backup without prompting. * The requested changes have been applied to the currently running configuration. Tunable Value Expression Changes vps_ceiling (before) 16 Default Immed (now) 32 32 | 現(xiàn)在看看 SAM。在清單 18 所示的內(nèi)核配置部分中,可以看到內(nèi)核可調(diào)項(xiàng)。 清單 18. 內(nèi)核配置部分 SMH->Kernel Configuration --------------------------------------------------------------------------------- t - Tunables View or modify kernel tunables m - Modules View or modify kernel modules and drivers a - Alarms View or modify alarms for kernel tunables l - Log Viewer View the changes made to kernel tunables or modules u - Usage View usage of kernel tunables c - Manage Configuration View the options available to manage configurations b - Restore Previous Boot Values Restores Previous Boot Values for Tunables And Modules SMH->Kernel Configuration->Usage Usage Monitoring is On -------------------------------------------------------------------------- Tunable Current Usage Current Setting ========================================================================== filecache_max 76054528 1018863616 maxdsiz 11403264 1073741824 maxdsiz_64bit 42663936 4294967296 maxfiles_lim 38 4096 maxssiz 786432 8388608 maxssiz_64bit 98304 268435456 maxtsiz 35823616 100663296 maxtsiz_64bit 1409024 1073741824 maxuprc 3 256 max_thread_proc 21 1100 msgmni 2 512 msgtql 0 1024 nflocks 27 4096 ninode 727 8192 nkthread 330 8416 nproc 151 4200 npty 0 60 nstrpty 1 60 nstrtel 0 60 nswapdev 1 32 nswapfs 0 32 semmni 28 2048 semmns 146 4096 shmmax 17868904 1073741824 shmmni 7 400 shmseg 3 300 | 除了菜單驅(qū)動(dòng)的系統(tǒng) SAM 之外,HP-UX 還允許通過(guò)命令行執(zhí)行調(diào)優(yōu)任務(wù)。總的來(lái)說(shuō),我喜歡 HP-UX 使用的性能調(diào)優(yōu)方法,但是我認(rèn)為 kctune 中的東西太多了。AIX 是按領(lǐng)域組織調(diào)優(yōu)參數(shù)的。 Solaris 與 HP-UX 和 AIX 不同,在 Solaris 上要使用文本文件完成大多數(shù)工作。主要文件是 /etc/system。在轉(zhuǎn)移到新版本時(shí),建議先使用一個(gè)空文件,只添加第三方應(yīng)用程序需要的可調(diào)項(xiàng)。對(duì) /etc/system 所做的所有修改在重新引導(dǎo)后生效。 我們?cè)?/etc/system 中做一個(gè)修改:set nfs:nfs_nra=4 。 這個(gè)修改為使用 NFS version 2 軟件掛載的文件系統(tǒng)設(shè)置預(yù)讀取塊的數(shù)量。Solaris 10 中的一個(gè)重要變化是,許多 Solaris 內(nèi)核參數(shù)現(xiàn)在已經(jīng)被資源控制取代。修改資源控制的命令是 prctl 命令。例如,現(xiàn)在通過(guò)資源控制處理所有共享內(nèi)存和信號(hào)量。這意味著不再需要在 /etc/system 中設(shè)置與共享內(nèi)存和信號(hào)量(即 sem)相關(guān)的任何條目。以 Oracle 調(diào)優(yōu)為例。在以前的版本中,在 /etc/system 中配置 SHMMAX,然后重新引導(dǎo)?,F(xiàn)在使用 prctl。這一變化的優(yōu)點(diǎn)是修改可以立即生效,不需要重新引導(dǎo)。缺點(diǎn)是在重新引導(dǎo)時(shí)信息會(huì)丟失,所以需要在用戶(hù)配置文件中輸入信息。把 max-shm-memory 的值改為 6 GB 的命令是:# prctl -n project.max-shm-memory -v 6gb -r -i project user.root 。 其他調(diào)優(yōu)方法包括: - 使用 kmdb,內(nèi)核調(diào)試器
- 使用 mdb,模塊化調(diào)試器
- 使用 ndd 配置 TCP/IP 參數(shù)
- 使用 /etc/default 調(diào)整 NCA 參數(shù)
- 使用 prtctl 修改資源控制
通過(guò) ndd 進(jìn)行調(diào)優(yōu)的示例如下:# ndd -get /dev/tcp tcp_time_wait_interval 。 怎么調(diào)整 NFS 呢?這些參數(shù)也在 /etc/system 中,包括 nfs_cots_timeo、nfs_allow_preepoch_time 和 nfs4_pathconf_disable_cache。 我知道一些管理員喜歡編輯文本文件,但是一般來(lái)說(shuō),大多數(shù)管理員更喜歡 HP 或 IBM 提供的簡(jiǎn)便的調(diào)優(yōu)系統(tǒng)。盡管 prtctl 在某些方面有幫助,但是也會(huì)帶來(lái)混亂,因?yàn)樵谝恍┓矫嬉褂?prtctl,對(duì)于其他方面仍然使用 /etc/system。 AIX 在 AIX 上,有幾個(gè)調(diào)優(yōu)命令,分別用于 I/O(對(duì)于網(wǎng)絡(luò)和磁盤(pán)使用不同的實(shí)用程序)、內(nèi)存和 CPU 的調(diào)優(yōu):ioo、no、vmo 或 schedo。使用 nfso 調(diào)整 nfs 子系統(tǒng)。AIX 6.1 還有一些性能改進(jìn)。比較重要的改進(jìn)包括默認(rèn)參數(shù)更符合日常工作的情況,并且加入受限制的可調(diào)參數(shù),這有助于防止管理員把東西弄亂。最近的改進(jìn)包括: - 改進(jìn)了以下領(lǐng)域的默認(rèn)可調(diào)項(xiàng):vmo、ioo、aio、no、nfso 和 schedo。
- 在文件系統(tǒng)方面,修改了 Enhanced Journaling File System,允許掛載 JFS2 f/s 而不啟用日志記錄。這確實(shí)可以提高性能,但是我建議不要使用它,因?yàn)檫@會(huì)導(dǎo)致可用性問(wèn)題。
- I/O pacing 可以限制針對(duì)一個(gè)文件的未完成 I/O 請(qǐng)求數(shù)量,這可以有效地防止磁盤(pán) I/O 密集型進(jìn)程。AIX 6.1 在默認(rèn)情況下啟用 I/O pacing。在 AIX 5.3 中,需要顯式地啟用這個(gè)特性。
- AIO 是一個(gè) AIX 軟件子系統(tǒng),它允許進(jìn)程發(fā)出 I/O 請(qǐng)求而不必等待 I/O 完成。在 AIX 6.1 中,在默認(rèn)情況下裝載 AIO 子系統(tǒng),但是不啟動(dòng)。當(dāng)應(yīng)用程序發(fā)出 AIO I/O 請(qǐng)求時(shí),會(huì)自動(dòng)地啟動(dòng)它。另外,原來(lái)用來(lái)配置 AIO 服務(wù)器的 aioo 命令已經(jīng)取消了。
- 引入了一個(gè)新的網(wǎng)絡(luò)緩存守護(hù)進(jìn)程,它可以提高使用 DNS 解析名稱(chēng)時(shí)的性能。使用 AIX 的 System Resource Controller (SRC) 啟動(dòng)它,使用 netcdctrol 實(shí)用程序進(jìn)行管理。
我們來(lái)做一些修改。 下面的命令把頁(yè)面設(shè)置為 16777216 字節(jié)的大頁(yè)面,這在 Oracle 環(huán)境中尤其有用:# vmo -r -o lgpg_size=16777216 lgpg_regions=256 。 我們來(lái)看看虛擬內(nèi)存。AIX 虛擬內(nèi)存管理器控制機(jī)器上的所有內(nèi)存,而不只是虛擬內(nèi)存。在 UNIX 系統(tǒng)上,減少分頁(yè)數(shù)量總是很重要的。如何讓 AIX 虛擬內(nèi)存管理器減少分頁(yè)數(shù)量呢?進(jìn)程在處理計(jì)算信息時(shí)使用計(jì)算內(nèi)存,它們是臨時(shí)的內(nèi)存段。它們沒(méi)有持久的磁盤(pán)存儲(chǔ)位置。另一方面,文件內(nèi)存使用持久存儲(chǔ),而不是內(nèi)存段。您可能更希望將文件內(nèi)存頁(yè)存儲(chǔ)到磁盤(pán),而不是計(jì)算內(nèi)存??梢允褂锰摂M內(nèi)存設(shè)置中的幾個(gè)參數(shù)實(shí)現(xiàn)這個(gè)目的。我們需要調(diào)整 minperm、maxperm 和 maxclient。為了避免 AIX 對(duì)工作存儲(chǔ)進(jìn)行分頁(yè)并利用數(shù)據(jù)庫(kù)緩存,需要把 maxperm 設(shè)置為比較高的值(大于 90)并確保 lru_file_repage=0。這個(gè)參數(shù)表示是否應(yīng)該考慮 VMM re-page 計(jì)數(shù)和它應(yīng)該使用什么類(lèi)型的內(nèi)存。默認(rèn)設(shè)置是 1,需要把它改為 0。這要使用 vmo 命令來(lái)完成。把這個(gè)參數(shù)設(shè)置為 0,就是告訴 VMM 希望它只置換文件頁(yè)面,而不置換計(jì)算頁(yè)面。在 AIX 6.1 中,minperm、maxperm 和 maxclient 已經(jīng)設(shè)置為適當(dāng)?shù)闹?。?AIX 5.3 中,需要執(zhí)行清單 19 所示的命令。 清單 19. 在 AIX 5.3 中設(shè)置 minperm、maxperm 和 maxclient 值 # vmo -p -o minperm%=3 # vmo -p -o maxperm%=97 # vmo -p -o maxclient%=97 | IBM 在性能調(diào)優(yōu)方面占據(jù)優(yōu)勢(shì),到目前為止它的性能調(diào)優(yōu)方法是最直觀的。在向自調(diào)優(yōu)系統(tǒng)發(fā)展方面,HP-UX 在近幾年進(jìn)步很大,但是還不夠。Solaris 通過(guò) prtctl 引入了一些積極的改進(jìn),但是要配置的東西還是太多。對(duì)于 AIX,就簡(jiǎn)單多了。用 vmo 調(diào)整內(nèi)存,用 ioo 調(diào)整磁盤(pán)/IO,用 schedo 調(diào)整 CPU,用 no 調(diào)整網(wǎng)絡(luò),用 nfso 調(diào)整 nfs。沒(méi)法再簡(jiǎn)單了!另外,AIX 6.1 中對(duì)調(diào)優(yōu)參數(shù)的改進(jìn)進(jìn)一步擴(kuò)大了 AIX 的優(yōu)勢(shì)。 結(jié)束語(yǔ) 本文比較了 AIX 6.1、HP-UX (11Iv3) 和 Solaris (10/08) 的最新版本中的創(chuàng)新和特性/功能改進(jìn)。還討論了執(zhí)行某些任務(wù)的命令和方法的差異,比如配置連網(wǎng)和性能調(diào)優(yōu)。此外,還總結(jié)了這三種 UNIX 系統(tǒng)的虛擬化特性及其基本差異。您自己決定最喜歡哪一種,但是根據(jù)我的比較,AIX 在所有方面都很出色。HP-UX 與 AIX 最為相似,而 Solaris 主要通過(guò)文本文件方式進(jìn)行系統(tǒng)管理。 |