Oracle10g RAC -- Linux 叢集檔案系統

tolywang發表於2007-12-15
通常,叢集只是一組作為單一系統執行的伺服器(PC 或者工作站)。但是,這個定義的外延不斷顯著擴大;叢集技術現在不但是一個動態領域,而且其各種應用程式正不斷吸收新的特性。此外,叢集檔案系統技術(無論是開放原始碼的還是專有的)在其功能方面正在迅速趨同。

很多人談到叢集應用程式和其中所使用的檔案系統軟體時,就象它們完全是一回事似的。更準確地說,大多數叢集包含兩個主要元件:透過快速網路連線共享儲存介質的伺服器和充當軟體粘合劑使叢集節點保持協作的檔案系統。

一文中,我解釋了檔案系統方法和資料結構如何提供硬碟分割槽物理結構的使用者級視角。雖然各專案之間有所不同,但叢集檔案系統為叢集的多個節點所做的工作是相同的:它們使所有節點看上去都象是單一系統的一部分,同時允許叢集的所有節點進行併發的讀寫操作。

在本篇後續文章中,我們將從較高角度來介紹叢集檔案系統之間的總體差別以及 (RAC) 環境的某些特性。剛接觸叢集、Linux 檔案系統或 Oracle RAC 的資料庫管理員或系統管理員會發該文很有教育意義。

叢集應用程式簡介

叢集應用程式具有各種級別的成熟度和功能。它們包括:

  • 高效能 叢集也稱為並行叢集或計算叢集,通常用於那些支援大量計算處理的系統。在這些叢集中,並行檔案系統在節點間分配處理資源,因而允許每個節點透過併發的讀寫同時訪問同一檔案。NASA 在二十世紀九十年代初期開發的 Beowulf Linux 叢集就是最常見的示例。
  • 高可用性 (HA) 叢集專門為容錯或冗餘而設計。因為這些叢集通常使用一個或多個伺服器進行處理,所以當一個或多個伺服器停機時,這些伺服器能夠承擔其他伺服器的處理職責。
  • 負載平衡 負載均衡 叢集在多個伺服器(通常是 web 伺服器)間儘可能平均地分配負載。
  • 儲存 叢集用於 SAN 和具有不同作業系統的伺服器之間,提供對通用儲存介質上的資料塊的共享訪問。
  • 資料庫 叢集將 Oracle RAC 作為平臺,把許多叢集檔案系統特性引入到應用程式本身中。

這些叢集應用程式具有重疊的特性,其中一個或多個特性通常可在單個叢集應用程式中找到尤其是在 HA 和負載均衡叢集中。例如,Oracle RAC 可以安裝在 HA 叢集檔案系統上,從而將資料庫叢集的優點引入 HA 叢集應用程式,如:

  • 共享資源包括資料、儲存器、硬碟和後設資料從而使多個節點看上去就像單一檔案系統。它們允許叢集的所有成員同時讀寫檔案系統。
  • 將儲存裝置集合到單個磁碟卷中,從而因無需進行資料複製而提高了效能
  • 可伸縮的容量、頻寬和連線性
  • 單個系統映像,為所有節點提供相同的資料檢視。

現在讓我們來看一些可以選用的支援 Oracle RAC 並具有叢集感知的 Linux 檔案系統,以及它們如何完善 Oracle RAC 的功能。

可以執行 Oracle 的叢集檔案系統

Oracle RAC 技術已經提供了諸如負載均衡、冗餘、故障切換、可伸縮性、快取記憶體和鎖定等特性,因此當 Oracle 資料檔案位於安裝有傳統 Linux 檔案系統(如 ext2/ext3)的塊裝置上時會出現功能的重複。在這種情況下效能降低了,因為 Oracle 和檔案系統的快取記憶體消耗了記憶體資源。

到寫本文時為止,除了第三方叢集檔案系統之外,還有四種可選用的執行 Oracle RAC 的檔案系統。按 Oracle 的推薦順序,它們依次為:

  1. Oracle 自動儲存管理
  2. Oracle 叢集檔案系統
  3. 網路檔案系統
  4. 原始裝置。

Oracle 自動儲存管理 (ASM) Oracle 的一個特點就是,無論它在哪種環境中執行,一旦您獲得一個 Oracle API,則所有的外觀、體驗和操作都相同。 Oracle 資料庫 10g 的一個特性,它將這種一致的環境擴充套件到儲存管理方面,使用 SQL 語句、Oracle Enterprise Manager 網格控制或資料庫配置助手程式來建立和管理儲存內容和後設資料。 ASM 用於 Oracle 資料庫 10g 資料檔案儲存被認為是最佳方法。

ASM 中的基本資料結構是磁碟組,它由一個或多個磁碟組成。在該語境中,磁碟可以是一個磁碟分割槽、一個完整的磁碟、一個級聯磁碟、一個儲存裝置的分割槽或者一個完整的儲存裝置。

一定要認識到,ASM 並非通用叢集檔案系統。相反,ASM 是一個具有叢集感知的檔案系統,專門為處理 Oracle 資料庫檔案、控制檔案和日誌檔案而設計。ASM 不應與邏輯卷管理器 (LVM) 共用,這是因為後者會使 ASM 無法識別磁碟。

ASM 執行以下功能:

  • 透過磁碟頭中的 ASM ID 識別磁碟。
  • 在磁碟組中的所有儲存器間動態分配資料,提供可選的冗餘保護,並且具有叢集感知能力。
  • 允許在 Oracle 資料庫處於完全運轉狀態時進行主要的儲存操作無需停機即可新增、刪除、甚至將磁碟組移到新的儲存陣列(儘管少見)
  • 當新增或刪除磁碟時,進行自動負載均衡和重新均衡
  • 透過使用故障組,提供額外的冗餘保護
  • 最佳化儲存資源的使用。

當安裝在原始裝置或者安裝在 Oracle 所推薦的那些使用 ASM 庫驅動程式的塊裝置上時,ASM 自身作為例項來執行,該例項先於資料庫例項啟動。它使 DBA 能夠建立、擴充套件和縮小磁碟,並將這些變化對映到共享訪問這些組的其他節點上的磁碟組。資料庫例項能夠在叢集的多個節點間共享儲存器的叢集池。

ASM Oracle 通用安裝程式安裝。如果將 ASM 新增到一個現有的資料庫中,則要確保將資料庫設定為從屬於 ASM 例項,以便在啟動時 ASM 例項先於所從屬資料庫啟動。例如:

$ srvctl modify instance -d O10G -i O10G1 -s +ASM1

使 o10G1 例項從屬於 +ASM1 例項。

ASM 例項與 Oracle 資料庫例項的區別表現在以下幾方面:

  1. 儘管可以使用幾個 V$ 檢視來獲得關於 ASM 例項的資訊,但沒有資料字典:V$ASM_DISKGROUPV$ASM_CLIENTV$ASM_DISKV$ASM_FILEV$ASM_TEMPLATEV$ASM_ALIAS V$ASM_OPERATION
  2. 您只能以 SYSDBA SYSOPER 連線 ASM 例項。
  3. 有五個初始化引數用於 ASM 例項,其中 INSTANCE_TYPE 是必要的,並應該設定如下:INSTANCE_TYPE = ASM

ASM 例項中,DBA 可以使用 SQL 語法或 Enterprise Manager 來:

  1. 使用一個或多個磁碟為儲存池定義一個磁碟組
  2. 在磁碟組中新增和刪除磁碟
  3. 定義一個故障組 來增加資料冗餘保護。通常這是磁碟組中一系列需要不間斷執行的磁碟,它們共享一種共用資源,如控制器。

可以透過 Enterprise Manager 或透過 V$ASM 檢視監視 ASM 磁碟組的狀態。您還可以在建立資料庫結構時在一個資料庫例項中引用它們來分配儲存器。

當您建立表空間、重做日誌、歸檔日誌檔案和控制檔案時,透過在初始化引數或者在 DDL 中指定磁碟組,您可以從資料庫例項中引用 ASM 磁碟組。

有關 ASM 的更多詳細資訊,請參見 Lannes Morris-Murphy OTN 文章“”Arup Nanda “Oracle 資料庫 10g:為 DBA 提供的最重要的 20 個特性中的 以及 Oracle 資料庫管理員指南 10g 1 (10.1)

Oracle 叢集檔案系統 (OCFS) 專門為支援 Oracle RAC 應用程式的資料和磁碟共享而設計。它在 RAC 叢集的伺服器節點間提供一致的檔案系統映像,充當原始裝置的替身。除了簡化叢集資料庫管理外,它還在保持原始裝置效能優勢的同時克服了原始裝置的侷限性。

OCFS 1 版支援 Oracle 資料檔案、spfile、控制檔案、仲裁磁碟檔案、歸檔日誌、配置檔案以及 Oracle 叢集登錄檔 (OCR) 檔案(Oracle 資料庫 10g 中的新檔案)。設計它不是為了使用其他檔案系統的檔案,甚至不是為了使用那些必須在叢集每個節點上安裝的 Oracle 軟體除非您使用第三方解決方案。此外,OCFS 不提供諸如 I/O 分配(分割)等 LVM 功能,也不提供冗餘功能。

Oracle 支援用於 32 位和 64 位發行版本的 Red Hat Advanced Server 2.1Red Hat Enterprise Linux 3 Novell SUSE (United Linux) 上的 OCFS 1 版中的 Oracle 資料庫,該資料庫需要從進行安裝。如果您自己對其進行重新編譯,則 Oracle 不提供支援。

有三種不同的 rpm 程式包:

  • OCFS 核心模組,針對 Red Hat United Linux 的分發版本各不相同。請認真驗證您的核心版本:

$ uname -aLinux linux 2.4.18-4GB #1 Wed Mar 27 13:57:05 UTC 2002 i686 unknown

  • OCFS 支援程式包
  • OCFS 工具程式包。

當您下載了這些 rpm 程式包後,執行以下安裝步驟:

  1. 在下載了 rpm 程式包的目錄中執行 rpm -Uhv ocfs*.rpm 命令安裝這些程式包。
  2. 確認已啟用引導時自動掛載。
  3. 自動使用 ocfstool 在叢集中的每個節點上配置 OCFS。還可以使用手動配置方法,詳情請見 OCFS 使用者指南。這一步驟的最後結果是建立了 /etc/ocfs.conf 檔案,用於配置 OCFS
  4. 執行 ocfs load_ocfs,確保在啟動時載入 OCFS
  5. 使用 ocfstool 命令和 GUI 環境或 mkfs.ocfs 來格式化 OCFS 分割槽。
  6. 手動掛載 OCFS 分割槽,或者在 /etc/fstab 中新增一項來實現自動掛載。

有關這些步驟的更詳細說明,請參見最佳實踐文件。

因為 OCFS 1 版沒有編寫成符合 POSIX 標準,所以諸如 cpddtar textutils 等檔案命令需要 coreutils 提供一個 O_DIRECT 開關。該開關使這些命令能夠如同預期那樣用於 Oracle 資料檔案,即使 Oracle 正在對這些相同的檔案進行操作(只有當您執行第三方軟體進行熱備份時才會出現問題)。使用 RMAN 可以完全避免這個問題。如果您仍然需要使用這些功能來完成各種維護任務;可以從 下載能夠實現這些命令的 OCFS 工具。

相反,OCFS 2 版(到 2005 3 月時仍為測試版)符合 POSIX 標準,並且支援 Oracle 資料庫軟體,它可以安裝在一個節點上並在叢集的其他節點間共享。除了共享的 ORACLE_HOME 外,OCFS 2 版的其他新特性還包括改進的後設資料資料快取記憶體、空間分配和鎖定。此外還有改進的日誌和節點恢復功能。

網路檔案系統 (NFS) 雖然 ASM OCFS Oracle RAC 的首選檔案系統,但 Oracle 還支援上的 NFSNFS 是分散式檔案系統,本文不對其作全面討論。有關更多資訊,請訪問

原始裝置 過去有一段時間內,原始裝置是執行 Oracle RAC 的唯一選擇。原始裝置就是一個沒有安裝檔案系統的磁碟驅動器,可以被分成多個原始分割槽。原始裝置允許繞過檔案系統緩衝區快取記憶體直接訪問硬體分割槽。

要讓 Oracle RAC 使用原始裝置,必須在安裝 Oracle 軟體之前透過 Linux raw 命令將一個塊裝置繫結到該原始裝置:

# raw /dev/raw/raw1 /dev/sda/dev/raw/raw1:bound to major 8, minor 0# raw /dev/raw/raw2 /dev/sda1/dev/raw/raw2:bound to major 8, minor 1# raw /dev/raw/raw3 /dev/sda2/dev/raw/raw3:bound to major 8, minor 2

在繫結後,您可以使用 raw 命令來查詢所有原始裝置。

# raw -qa/dev/raw/raw1:bound to major 8, minor 0/dev/raw/raw2:bound to major 8, minor 1/dev/raw/raw3:bound to major 8, minor 2

major minor 數值確定了該核心的裝置位置和驅動程式。major 數值確定了總的裝置型別,而 minor 數值確定了屬於該裝置型別的裝置數量。在上述示例中,major 8 SCSI 磁碟 /dev/sda 的裝置型別。

請注意,裝置不需要處於可訪問狀態即可執行上述命令。當我為了演示而執行上述命令時,我的系統沒有連線任何 SCSI 磁碟。這些命令的效果在我下一次重新啟動後將會消失,除非我將這些命令放在類似 /etc/init.d/boot.local /etc/init.d/dbora 的引導指令碼中,每當我的系統引導時,就會執行這些指令碼。

在將塊裝置對映到原始裝置後,您仍然需要確保原始裝置屬於 oracle 使用者和 oinstall 組。

# ls -l /dev/raw/raw1crw-rw---- 1 root disk 162, 1 Mar 23 2002 /dev/raw/raw1# chown oracle:oinstall /dev/raw/raw1# ls -l /dev/raw/raw1crw-rw---- 1 oracle oinstall 162, 1 Mar 23 2002 /dev/raw/raw1

然後您可以在 Oracle 資料檔案與原始裝置之間使用符號連結,以便使事情更易於管理。

Linux 核心 2.4 版中的原始裝置限制中包括每分割槽一個原始裝置的限制和每系統 255

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

相關文章