網管人雜誌
本文刊載於 網管人雜誌第 60 期 - 2011 年 1 月 1 日出刊,NetAdmin 網管人雜誌 為一本介紹 Trend Learning 趨勢觀念、Solution Learning 解決方案、Technology Learning 技術應用的雜誌,下列筆記為本站投稿網管人雜誌獲得刊登的文章,網管人雜誌於每月份 1 日出刊您可於各大書店中看到它或透過下列圖示連結至博客來網路書店訂閱它。文章目錄
1、前言2、軟體環境
3、RHEL6 新功能與改善
4、導入多種核心層級工具
5、叢集服務改善
6、儲存裝置性能優化
7、有效電源管理達到節能省碳
8、增加安全性
9、網路傳輸效能再提升
10、錯誤回報機制
11、新一代日誌檔案系統 ext4
12、虛擬化核心技術 KVM
13、認證制度進行微調
14、結語
1、前言
Red Hat Enterprise Linux 為紅帽公司 (Red Hat) 所發行專注於企業伺服器服務上的 Linux 發行版本,大家經常將此 Linux 發行版本簡稱為 RHEL (雖然 Red Hat 官方不建議這樣稱之),通常 RHEL 大約每 18 ~ 24 個月會發佈一個新的版本,但實際上 RHEL 發行版本的頻率大約是基於 RedHat 另一個贊助的開放原始碼計畫 Fedora Linux,每當 Fedora 發行 3 個版本後大約就會發佈一個 RHEL 新版本,因為 RedHat 會將許多新技術導入 Fedora Linux 中待經過一段時間測試至穩定階段且符合企業應用後便會將該技術加入至 RHEL 內。
目前企業環境中最常使用的 RHEL 版本為 RHEL5.0 (核心版本 2.6.18),此版本為 2007年 3月份正式發佈算一算距離目前也已經過一段時間 (雖然期間有陸續發佈修改版本),因此可想而知新版 RHEL 6發佈的日子也愈來愈接近了,終於 RHEL6 Beta 版本於 2010年3月份釋出,經過半年的洗鍊及密集測試後 RedHat 正式於 2010年11月10日釋出 Red Hat Enterprise Linux 6 (Santiago 核心版本 2.6.32)。
RedHat 表示新發表的 RHEL6 企業版 Linux 作業系統版本中包含了更多種套件 (相較於 RHEL5 套件數量多出 85%)、新增多種核心功能、修正多個錯誤,對於硬體伺服器資源 CPU 及 Memory 的支援度更是提升不少,例如 64 位元的 RHEL6 可以支援最多 4096 個邏輯 CPUs (Logical CPUs) 及 64 TB 記憶體,至於檔案系統也從舊版 RHEL5 預設的 ext3 全面更換為新一代的 ext4 日誌檔案系統以便提供單一最大檔案 16TB (4K Block)、子目錄數量突破 32,000 個達到 64,000 個、最大檔案數量 40 億個、最長檔案 256 位元組、最大分割區 (Volume) 1EB 容量,另外在虛擬化技術方面也將 Xen 在此版本中正式移除並將 KVM (Kernel-base Virtual Machine) 虛擬化技術內建在此版本中直接從作業系統底層來提供虛擬化技術。
在伺服器硬體架構支援度上 RHEL6 支援x86、AMD64、Intel64、Power 6 請注意此版本中不支援Itanium 及 Power 5硬體架構,對於硬體資源支援度上實體 CPU Sockets支援數量與購買的訂閱授權 (Subscription) 有關可分為支援實體 2、4、8 顆 CPU Sockets 而記憶體方面則沒有因為訂閱授權而有所限制,在虛擬化主機 Guest OS 數量方面則與購買的訂閱授權有關可支援 1、4、無限制 個虛擬化主機,此外也必須購買 RHEV 授權 (Hypervisor 及 Management)。
2、軟體環境
- 發行公司: RedHat, Inc
- 官方網址: http://www.redhat.com
- 作業系統: Linux (Unix-like)
- 軟體版本: RHEL6.0 (Santiago)
- 授權類型: 多種 (核心及大部份套件多為 GNU GPL)
3、RHEL 6 新功能與改善
RHEL6 不只在硬體資源上支援更多 CPU Sockets/Cores 和 Multi-Threads 及更多記憶體之外在安裝方式上與過去也有些許不同,新版的 RHEL6 除了預設會使用 ext4 檔案系統之外對於企業常用服務安裝也更為一目了然,例如選擇圖形化介面安裝並且在安裝過程中預設會勾選 Basic Server 及 RHEL 基礎套件當依照此預設值安裝好之後系統會直接進入文字介面 (Runlevel 3) 而不像舊版若採用圖形化介面安裝會直接進入圖形介面 (Runlevel 5)。
4、導入多種核心層級工具
控制群組 (Control Groups) 為 RHEL 6 核心 (kernel) 新功能它可以有效管理系統與硬體之間的互動並追踨及監控所使用的系統資源,並且系統管理員可以使用控制群組架構來允許或拒絕特定控制群組進行系統資源的存取 (例如 CPU、Memroy、網路裝置、磁碟I/O...等),另外使用了全新的排程器 CFS (Completely Fair Scheduler) 透過它的公平排程演算法並配合硬體 Multi-Core 技術可以根據任務的最少消耗時間或優先等級以及其他因素來安排最適合運作的下一個任務使得 CPU 在處理程序上更加有效率。
在記憶體管理方面更加強虛擬記憶體 (SWAP) 的延展性透過這樣的方式來增強虛擬記憶體分頁管理以降低含有大量實體記憶體的系統上所需要處理的負載,並且支援基於硬體架構的熱添加 (Hot-Add) 技術使得作業系統在運作時可以隨時依照需求並且在不用停機的狀態下增加 CPU 及 Memory,另外在記憶體區塊保護措施上則採取更有效利用的策略,系統會將判斷為損壞的記憶體區塊透過宣告為「中毒」區塊來避免系統將任務載入於損壞的記憶體區塊中。
RHEL 6 核心功能中也包含了進階錯誤回報功能 AER (Advanced Error Reporting) 它提供了 PCI-Express 硬體裝置的錯誤回報,並且為了因應目前硬體伺服器記憶體與日俱增的情況下 Kdump 功能預設將被啟用特別是分頁大小為 4KB (例如 x86 或 x86_64) 或超過 4KB (例如 PPC64) 的架構。
對於分析核心效能上使用 Linux 效能計數器 PCL 來提供抽象的效能計數器硬體功能例如已執行、快取遺失、錯誤預估 Branch,PCL 提供各別工作及 CPU 上的計數器並在這些計數器上新增事件功能,透過效能計數器的資訊可描述出核心功能與事件及協助核心效能問題分析上,配合在 RHEL 6 中的二項新的工具來協助分析核心效能,系統可以透過 Ftrace 工具來提供核心的圖形追踨及使用 perf 工具來 監控/記錄/分析 系統硬體事件。
對於某些企業必須使用 32 位元的 RHEL 版本但是需要更多的記憶體 (超過 4GB 限制) 的情況下在舊版 RHEL 時您必須手動載入 PAE (Physical Address Extension) 核心來達成此一需求,在新版 RHEL6 版本中 32 位元 x86 架構版本預設所使用的核心便啟用了 PAE 功能。
5、叢集服務改善
RHEL 6 中採用 Corosync Cluster Engine 核心叢集功能以便為企業重大生產服務提供高可用性、高可靠性、高延展性,在高可用性設定方面將採用 Web (luci) 介面的 Conga 重新設計增加功能性及易用性,除了保有一貫的集中配置及管理之外可以使用單個群集命令從不同的服務來管理系統日誌而且日誌採用一致的格式更容易分析,並且在節點 (Node) 主機已經支援故障後重新啟用功能而不必像舊版一樣必須透過 Fencing 機制進行管理,另外在高可用性方面也支援 KVM 服務也就是說高可用性服務對於虛擬主機 (Guest OS) 及實體主機 (Host OS) 之間可以進行故障轉移 (Failover) 的機制,並且增強對於 IPv6 及 SCSI 持續保留隔離的支援度。
6、儲存裝置性能優化
在儲存裝置性能調校方面除了優化資料在儲存裝置上的讀取和寫入之外,在 RHEL 6 中使用DM-Multipath (Device Mapper Multipathing) 機制來動態最佳化 I/O 的負載平衡,所謂的DM-Multipath 機制即是透過動態式的負載平衡將多個纜線或切換器以及控制器來建立一個單獨的概念裝置以便將伺服器連結至儲存裝置或儲存陣列,如此一來便能中央化管理連線裝置 (路徑) 並使其在所有可用路徑上進行負載平衡,因此 RHEL 6 便會提供二個路徑選項並根據每個路徑或先前的 I/O 時間資料的佇列大小動態式地選擇最佳路徑。
RHEL 6 中包含了新的邏輯卷冊管理員 LVM (Logical Volume Manager) 應用程式函式庫 lvm2app 使得使用者能開發基於 LVM 的儲存裝置管理應用程式,此版本中的 LVM 對於鏡像 (Mirror) 及快照 (Snapshot) 功能上進行功能改善,在鏡像功能中支援 Mirror Volume 因此 LVM 可以確保寫入實體 Volume 中的資料能被正確映射到另一個實體 Volume 中,而且可以針對鏡像在特定時間點且在不干擾服務的情況下建立邏輯 Volume 快照 (最多 4 個),另外也可以對快照進行合併使系統管理員透過回復至快照所保留的某一點以復原在邏輯 Volume 上所進行的任何變更,且過程中 LVM 會建立日誌檔 (Log) 並使用它來追踨哪個區域和鏡像已經同步。
7、有效電源管理達到節能省碳
RHEL 6 中透過許多機制來改善伺服器對於機房電力的消耗,它使用核心中 tickless 功能它以主動式干擾來取代週期性的計時器干擾這樣的機制使伺服器的 CPU 更容易進入閒置 (Idle) 或休眠狀態以降低電力消耗,電源管理功能 ALPM (Aggressive Link Power Management) 它能藉由將磁碟的 SATA 連結設為當閒置時 (沒有 I/O 的情況下) 套用低電量設定只有當 I/O 請求排程至某個 SATA 連接時 ALPM 才會自動將該連結設回啟用的電源狀態。
另外 RHEL 6 也使用相關工具例如 powertop 工具辨識特定核心元件及應用程式以降低不必要的 CPU 甦醒動作,使用 tuned 動態式監控及調校裝置以調整系統設定 daemon (例如 硬碟裝置、乙太網路裝置...etc),使用 diskdevstat 來監控及調校磁碟作業,使用 netdevstat 來監控及調校網路作業,RHEL 6 便是透過上述種種機制來達到電源管理的功能達到節能省碳的目的。
8、增加安全性
系統安全性服務 SSSD (System Security Services Daemon) 為 RHEL 6 版本中的一項新功能它能實現中央管理身份與驗證的機制,中央化管理身份與認證服務能啟用身份的本機快取,這將使得使用者即使在連線至伺服器準備進行驗證時即使是被干擾的情況下還是能夠進行驗證的動作,目前 SSSD支援許多身份與驗證服務 例如 RedHat Directory Server、Windows Active Directory、OpenLDAP、Kerberos...等。
在增強安全性 SELinux (Security-Enhanced Linux) 部份則新增了 MAC (Mandatory Access Control) 功能至核心中並在預設情況下啟用此功能,MAC 架構能夠針對系統中的所有程序和檔案進行管理及設定安全性政策並針對各種安全性資訊的標籤進行決定,另外沙箱 (Sandbox) 功能可提供在一個受限制的 SELinux 環境下執行任何程式,也就是說能讓系統管理員在不損害作業系統前提下進行非安全性的測試。
RHEL 為儲存裝置提供資料加密功能以防止資料被進行非法行為存取其資料,此加密功能會將儲存裝置中的資料轉換為只有使用特定加密金鑰才可讀取其資料的格式,此一加密金鑰建立在進行安裝程序時並且使用密碼字串進行保護,因此當密碼字串發生錯誤時加密金鑰便無法使用因此無法存取經過加密動作的儲存裝置其內部的資料,下圖為資料解密示意圖:
圖片來源: RedHat 官方網站 - 安全性
9、網路傳輸效能再提升
RHEL6 透過 Multiqueue 技術使得網路裝置驅動程式可以劃分多個佇列 (Queue) 上的網路封包程序,這樣的機制能更符合現今硬體伺服器多個實體 CPU 及單一 CPU 多個核心的特性使得網路封包的傳送及接收更為快速,配合 Netlabel 其核心層級功能提供 Linux 安全性模組 LSMs (Linux Security Modules) 來進行網路封包標示服務,提供連入的網路封包更佳的安全性需求,並且經由 GRO (Generic Receive Offload) 機制來減少 CPU 處理程序以加強內部網路連線的效能。
對於 IPv6 (Internet Protocol version 6) 支援部份更提供重複位址偵測 DAD (Duplicate Address Detection) 功能對於某個 IPv6 位址已經被使用時 DAD 機制會進行檢查,另外也支援網點內部自動通道定址協定 ISTAP (Intra-Site Automatic Tunnel Addressing Protocol) 可協助由 IPv4 網路架構連結至 IPv6 路由器的機制。
另外對於企業常常用來架設 File Server 服務的 Samba (SMB/CIFS) 也進行相關效能調校及功能改善使得 Samba 能與企業內部的 Windows 網域伺服器有更加緊密的結合,例如 支援 Windows AD 目錄服務簽署及簽章政策、支援 Windows Server 2008 R2 網域信任關系、支援 Windows 7 的網域成員、支援網域成員自動更改機器密碼、支援 Windows 網域跨樹系可轉移信任及單向信任關系、支援 SMB 加密傳輸、支援 IPv6。
10、錯誤回報機制
RHEL 6 提供新的系統復原工具 firstaidkit,它提供一個互動式的環境透過自動化復原程序來協助系統管理員進行疑難排解並嘗試復原發生錯誤而無法啟動的系統,並且系統管理員可以透過 firstaidkit 的外掛架構來客製化符合公司政策流程的自動復原程序。
此外透過新版提供的自動化錯誤回報工具 ABRT (Automated Bug Reporting Tool) 會將本機系統上的軟體錯誤詳細資訊記錄下來,並提供指令或圖形化介面讓系統管理員可以即時在 RedHat 錯誤追蹤網站 http://bugzilla.redhat.com 上開啟申請單,如下圖所示:
圖片來源: RedHat 官方網站 - 支援與維護
11、新一代日誌檔案系統 ext4
RHEL6 在預設安裝的情況下一律採用新一代的日誌檔案系統 ext4 它可以支援最高 1EB 的分割區及最大 16TB 的單一檔案以因應現今企業龐大的儲存空間需求,ext4日誌檔案系統在儲存方式上與過去 ext2/ext3 的 Block Mapping 方式大大不同 ext4 採用 Extent 方式來儲存檔案,所謂 Extent 方式為使用一連串連續的實體 Block 來儲存資料也就是單一 Inode 中可以儲存 4 筆 Extent 當儲存超過 4筆 Extent 時會以 Htree (特殊的 B-tree) 的方式建立索引,由於存放檔案內容的區塊時就記錄每一段 Extent 的起始區塊其位置和長度而非如傳統一般記錄著每個區塊的位置因此能節省許多 Metadata 的空間,並且由於 Extent 的特性當讀取檔案內容和分配空間時可以一次處理多個區塊因此可以減少整體 I/O 的次數,因此透過這樣的儲存方式不但可以增加對大型檔案的存取效率更可以減少檔案分裂 (Fragmentation) 的情況發生。
在舊有的 ext2/ext3 日誌檔案系統中其時間戳記 (Timestamp) 以秒為基本單位,這樣的基本單位本來已經足夠一般企業正常使用,但隨著多核心 (Multi-Core) 和叢集 (Clustering) 的技術發展,ext4 把檔案時間資料的精確度提高至納秒 (nano second, 10-9s),時間範圍也增加 2 個位元使得 ext4 的時間紀錄足夠因應未來 500 多年使用。
當然 ext4 也提供向下相容舊有的 ext2/ext3 日誌檔案系統,由於 ext4 的某些新功能可以直接運用在 ext2/ext3 檔案系統上,因此理論上將舊有的 ext2/ext3 檔案系統掛載後可以提升部份效能,而舊有的 ext3 也可以部份向上相容新版的 ext4 檔案系統但前提是該 ext4 若使用到 Extent 技術時 ext3 便無法掛載 ext4 分割區。
目前大多數檔案系統對於單一檔案中未使用到的空間通常是在該檔案後面的剩餘空間中填入 0,而RHEL6 中 ext4 日誌檔案系統可以使用 Linux 核心中新的 「fallocate()」 系統呼叫來取得足夠的預留空間使ext4 檔案系統允許對於檔案後面的剩餘空間可以預先保留其磁碟空間,此外大多數檔案系統會在資料即將被寫入磁碟之前便需要取得相應的空間,而 ext4 透過 allocate-on-flush 方式可以在資料在即將被寫入磁碟之前才開始取得空間,因此 ext4 檔案系統能夠增加磁碟存取效能同時減少檔案分散的程度。
在舊有的 ext3 日誌檔案系統中一個目錄下最多只能建立 32,000 個子目錄,而 ext4 檔案系統可以達到 64,000 個子目錄 (使用 dir_nlink 功能可建立更多子目錄),並且透過預設啟用的 Htree 機制來避免作業系統效能因為這樣龐大的目錄數量而受到影響,拿 ext3 相較於 ext2 來說最大的優勢便是具有日誌 (Journal) 的機制也就是使用特別區塊來存放日誌,所有對於檔案系統 Metadata (例如 Inode) 的修改都會事先寫在日誌區後才進行真正的檔案操作,因為日誌寫入的實體位置集中而且數量很少又經過排序因此不需要快取 (Cache) 機制可即時寫入效能相當優良,並且系統萬一在寫入途中不幸 Crash 重開機後 fsck 僅需要檢查日誌內記載的操作即可 (並不需要檢查整個系統中所有檔案),正因為日誌是磁碟上讀取最為頻繁的部份之一所以在 ext4 檔案系統中導入 Checksums 機制來提高檔案系統的可靠性並且避免日誌在處理時磁碟 I/O 等待時間並且提高性能,最後 ext4 檔案系統會將未使用到的磁碟區塊標記在 Inode 中,如此一來當使用 e2fsck 之類的工具進行磁碟檢查時可以將這些已標記的區塊忽略掉因而節省大量的檔案系統檢查時間,下圖為 ext3 與 ext4 日誌檔案系統的效能比較。
圖片來源: 維基百科 - ext4
另外 RHEL6 也支援具有高延展性及高效能並且對於大型檔案處理效率良好的 xfs 檔案系統 (可支援 8 EB 的檔案及 16 EB 的檔案系統及上千萬個項目的目錄結構),另外使用於叢集技術高可用性的檔案系統也採用了更高效能的 GFS2 (Global File System 2) 並且支援 Fused-based 的檔案系統 (例如 雲端文件系統),在網路檔案系統 NFS (Network File System) 方面則採用新一代 NFSv4 當然仍可相容舊版 NFSv2、NFSv3 並且針對了 IPv6 通訊協定上進行改善。
12、虛擬化核心技術 KVM
近年來雲端運算議題不斷被提出,各式各樣的雲也被拿出來解釋有公有雲、私有雲、混合雲…等,進而讓 SaaS、PaaS、IaaS 等雲端運算產業架構概念被提出,然而以上種種的各種雲端應用其基礎便是建構於整個虛擬化技術架構之上,虛擬化架構使 IT 人員除了集中管理以外更可以有效的將實體伺服器閒置資源進行有效利用及整併,並且將企業整體硬體維護成本降低及縮短測試環境建置時間並達成綠色節源資料中心的目的,市場上雲端運算技術的知名提供廠商例如 Salesforce、Amazon 便是使用 Linux 的虛擬化解決方案。
RedHat 在 RHEL5.4 版本中對於虛擬化技術採取二套並存的方式即開放原始碼的 Xen (已被 Citrix 併購) 及 KVM ,新版的RHEL6 發行版本中則正式將 Xen 虛擬化軟體給移除掉僅保留 KVM 作為內建的虛擬化技術,KVM 虛擬化技術由於整合至 Linux 核心中並且透過 CPU 虛擬化技術 (Intel-VT 或 AMD-V) 硬體輔助來達成全虛擬化目標,以作為企業虛擬化技術解決方案為目標的 KVM 對於每個虛擬機 (Guest OS) 支援最多 16 個 vCPU 及 256GB 記憶體這樣的虛擬機硬體支援規格相信對於目前企業環境應用上是足夠的,並且 KVM 虛擬化技術也提供虛擬主機進行 線上遷移 (Live Migration)、高可用性 (High Availability)、負載分流 (Load Balancing)、節能功能 (Power Saving)…等進階功能,對於有興趣建置私有雲的企業來說 KVM 可以是虛擬化技術解決方案之一。
13、認證制度進行微調
隨著新版作業系統 RHEL6 的發表在同一時間 RedHat 也對於其認證制度有些許改變,目前的 RHCE5 認證方式為一次考試中將試題區分為二大部份 RHCT 及 RHCE 只要二個項目都取得 70% 以上的分數即可取得該證照,舉例來說若是第二項的 RHCE 未通過而通過了第一個項目 RHCT 也可以取得 RHCT 證照,新版的 RHCE6 則將目前的一次考試拆分為二次考試並且由新的 RHCSA 認證取代舊有的 RHCT 認證。
RedHat 預計將從 2011 年 3 月份開始實施新的教學版本及認證制度,也就是說之後您想要取得 RHEL6 的RHCE 認證必須要事先通過 RHCSA (考試代號 EX200) 考試後才能再考 RHCE (考試代號 EX300),並且從此一版本開始證照的有效期間從舊版的「版本制」改為有效時間3年。
14、結語
新發行的 RHEL6 版本不管在核心層級、硬體裝置、檔案系統、虛擬化技術…等均加入許多新功能或者將舊有功能進行效能調校或者更優化及配置,特別是導入新一代日誌檔案系統 ext4 來取代舊版 ext3 以因應目前企業環境中對於大量儲存空間 (1EB 等於 100 萬TB) 的需求及單一大檔案16TB (4K Block) 的處理需求,並且也在此版本中把 KVM 虛擬化技術正式內建並提供相關進階功能 (例如 線上遷移、高可用性、節能…等),對於有興趣建置私有雲的企業來說提供另一個虛擬化技術解決方案的選擇。