邁向 RHCE 之路 (Day01) – RHEL 與 CentOS – iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天

本文為了解 RedHat 企業版 RHEL (Red Hat Enterprise Linux) 與 CentOS 之間有什麼關系,以及最新發行的 RHEL 6 具有哪些新功能。

CentOS(Community ENTerprise Operating System) 為眾多 Linux 發行版本之一。CentOS 其源碼來自 RHEL 作業系統開放原始碼,將其源碼重新編譯而成,移除無法自由使用商標及 Red Hat 所擁有封閉原始碼軟體。由於 CentOS Linux 與 Red Hat Enterprise Linux 具有大量相同原始碼內容,因此適合需要高度穩定性企業營運環境。

目前中小企業 IT 人員為了建置預算上考量使用 CentOS Linux 發行版本來替代 RedHat Linux 企業版本。相對來說使用 CentOS Linux 發行版本除了得不到商業支援外,當然不包含 Red Hat 公司所擁有封閉原始碼軟體。因此建議 IT 人員在使用 CentOS Linux 發行版本來建置企業網路服務以前,除了先了解所使用的硬體伺服器是否支援 CentOS Linux 之外,更要了解所架設的商業服務是否會使用到 Red Hat 公司封閉原始碼軟體。

CentOS Linux 作業系統版本命名規則分為二個部份,分別是主要版本及次要版本來進行版本表示。其中主要及次要版本號碼,則是相對應於紅帽公司所發行的 RHEL 作業系統主要版本與更新版本號碼,例如 CentOS 5.5 版本便是相對應於 RHEL 5 update 5 版本。
—– 前言 —–
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)。

—– RHEL6 新功能與改善 —–
RHEL6 不只硬體資源上支援更多 CPU Sockets/Cores 和 Multi-Threads 及更多記憶體之外安裝方式上與過去也有些許不同,新版 RHEL6 除了預設會使用 ext4 檔案系統之外對於企業常用服務安裝更為一目了然,例如選擇圖形化介面安裝並且在安裝過程中預設會勾選 Basic Server 及 RHEL 基礎套件當依照此預設值安裝好之後系統會直接進入文字介面 (Runlevel 3) 而不像舊版若採用圖形化介面安裝會直接進入圖形介面 (Runlevel 5)。

—– 叢集服務改善 —–
RHEL 6 中採用 Corosync Cluster Engine 核心叢集功能以便為企業重大生產服務提供高可用性、高可靠性、高延展性,在高可用性設定方面將採用 Web (luci) 介面的 Conga 重新設計增加功能性及易用性,除了保有一貫的集中配置及管理之外可以使用單個群集命令從不同的服務來管理系統日誌而且日誌採用一致的格式更容易分析,並且在節點 (Node) 主機已經支援故障後重新啟用功能而不必像舊版一樣必須透過 Fencing 機制進行管理,另外在高可用性方面也支援 KVM 服務也就是說高可用性服務對於虛擬主機 (Guest OS) 及實體主機 (Host OS) 之間可以進行故障轉移 (Failover) 的機制,並且增強對於 IPv6 及 SCSI 持續保留隔離的支援度。

—– 錯誤回報機制 —–
RHEL 6 提供新的系統復原工具 firstaidkit,它提供一個互動式的環境透過自動化復原程序來協助系統管理員進行疑難排解並嘗試復原發生錯誤而無法啟動的系統,並且系統管理員可以透過 firstaidkit 的外掛架構來客製化符合公司政策流程的自動復原程序。

此外透過新版提供的自動化錯誤回報工具 ABRT (Automated Bug Reporting Tool) 會將本機系統上的軟體錯誤詳細資訊記錄下來,並提供指令或圖形化介面讓系統管理員可以即時在 RedHat 錯誤追蹤網站 上開啟申請單,如下圖所示 (圖片來源 RedHat 官方網站)

—– 新一代日誌檔案系統 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 的發表在同一時間 RedHat 也對於其認證制度有些許改變,目前的 RHCE5 認證方式為一次考試中將試題區分為二大部份 RHCT 及 RHCE 只要二個項目都取得 70% 以上的分數即可取得該證照,舉例來說若是第二項的 RHCE 未通過而通過了第一個項目 RHCT 也可以取得 RHCT 證照,新版的 RHCE6 則將目前的一次考試拆分為二次考試並且由新的 RHCSA 認證取代舊有的 RHCT 認證。

RedHat 從 2011 年 3 月份開始實施新的教學版本及認證制度,也就是說之後您想要取得 RHEL6 的RHCE 認證必須要事先通過 RHCSA (考試代號 EX200) 考試後才能再考 RHCE (考試代號 EX300),並且從此一版本開始證照的有效期間從舊版的「版本制」改為有效時間3年。

(下一篇)邁向 RHCE 之路 (Day02) – 檔案系統樹狀結構
邁向 RHCE 之路系列文章連結