linux常用叢集檔案系統簡介

beatony發表於2010-06-15

執行 Oracle RAC 的檔案系統

按 Oracle 的推薦順序,它們依次為:

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

Oracle 自動儲存管理 (ASM) Oracle 的一個特點:

無論它在哪種環境中執行,一旦您獲得一個 Oracle API,則所有的外觀、體驗和操作都相同。

Oracle ASM是 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 資料庫例項的區別表現在以下幾方面:

儘管可以使用幾個 V$ 檢視來獲得關於 ASM 例項的資訊,但沒有資料字典:

V$ASM_DISKGROUP、V$ASM_CLIENT、V$ASM_DISK、V$ASM_FILE、V$ ASM_TEMPLATE、V$ASM_ALIAS 和 V$ASM_OPERATION。

您只能以 SYSDBA 或 SYSOPER 連線 ASM 例項。

有五個初始化引數用於 ASM 例項,

其中 INSTANCE_TYPE 是必要的,並應該設定如下:INSTANCE_TYPE = ASM。 在 ASM 例項中,DBA 可以使用 SQL 語法或 Enterprise Manager 來: 使用一個或多個磁碟為儲存池定義一個磁碟組 在磁碟組中新增和刪除磁碟 定義一個故障組 來增加資料冗餘保護。

通常這是磁碟組中一系列需要不間斷執行的磁碟,它們共享一種共用資源,如控制器。

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

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

Oracle 叢集檔案系統 (OCFS) 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.1、Red Hat Enterprise Linux 3 和 Novell SUSE (United Linux) 上的 OCFS 第 1 版中的 Oracle 資料庫,該資料庫需要從可下載的二進位制檔案進行安裝。如果您自己對其進行重新編譯,則 Oracle 不提供支援。

有三種不同的 rpm 程式包:

OCFS 核心模組,針對 Red Hat 和 United Linux 的分發版本各不相同。

請認真驗證您的核心版本:

$ uname -a Linux linux 2.4.18-4GB #1 Wed Mar 27 13:57:05 UTC 2002 i686 unknown OCFS 支援程式包 OCFS 工具程式包。

當您下載了這些 rpm 程式包後,執行以下安裝步驟: 在下載了 rpm 程式包的目錄中執行 rpm -Uhv ocfs*.rpm 命令安裝這些程式包。

確認已啟用引導時自動掛載。 自動使用 ocfstool 在叢集中的每個節點上配置 OCFS。還可以使用手動配置方法.

這一步驟的最後結果是建立了 /etc/ocfs.conf 檔案,用於配置 OCFS。

執行 ocfs load_ocfs,確保在啟動時載入 OCFS。 使用 ocfstool 命令和 GUI 環境或 mkfs.ocfs 來格式化 OCFS 分割槽。

手動掛載 OCFS 分割槽,或者在 /etc/fstab 中新增一項來實現自動掛載。

因為 OCFS 第 1 版沒有編寫成符合 POSIX 標準,所以諸如 cp、dd、tar 和 textutils 等檔案命令需要 coreutils 提供一個 O_DIRECT 開關。

該開關使這些命令能夠如同預期那樣用於 Oracle 資料檔案,即使 Oracle 正在對這些相同的檔案進行操作(只有當您執行第三方軟體進行熱備份時才會出現問題)。使用 RMAN 可以完全避免這個問題。

如果您仍然需要使用這些功能來完成各種維護任務;可以從 oss.oracle.com/projects/coreutils/files 下載能夠實現這些命令的 OCFS 工具。

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

網路檔案系統 (NFS) 雖然 ASM 和 OCFS 是 Oracle RAC 的首選檔案系統,但 Oracle 還支援經過認證的網路檔案伺服器上的 NFS。NFS 是分散式檔案系統,本文不對其作全面討論。

原始裝置

 過去有一段時間內,原始裝置是執行 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/raw1 crw-rw---- 1 root disk 162, 1 Mar 23 2002

/dev/raw/raw1 # chown oracle:oinstall /dev/raw/raw1

# ls -l /dev/raw/raw1 crw-rw---- 1 oracle oinstall 162, 1 Mar 23

2002 /dev/raw/raw1

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

Linux 核心 2.4 版中的原始裝置限制中包括每分割槽一個原始裝置的限制和每系統 255 個原始裝置的限制。Novell SUSE Enterprise Linux 帶有 63 個原始裝置檔案,但可以使用 mknod 命令(需要有根許可權)建立最多 255 個原始裝置。

# ls /dev/raw/raw64

ls:/dev/raw/raw64:No such file or directory

# cd /dev/raw linux:/dev/raw # mknod raw64 c 162 64

# ls /dev/raw/raw64 /dev/raw/raw64 以上的 mknod 命令需要裝置名、裝置型別以及 major 和 minor 數值。本示例中的裝置名是“raw64”,裝置型別是“c”(表示它是一個字元裝置)。該新裝置的 major 和 minor 數值分別是 162 和 64。另外,Novell SUSE 使用者可以透過執行 orarun rpm 來安裝這些裝置。

使用原始裝置的其他缺點包括:

一個磁碟的原始分割槽數量限制為 14。

 不支援 Oracle 管理檔案 (OMF)。 無法重新調整原始裝置分割槽的大小,因此如果空間不足,則必須建立另一個分割槽來新增資料庫檔案。 原始裝置顯示為未使用空間,這可能導致其他應用程式將其覆蓋

向原始裝置進行寫操作的唯一方法是使用低階命令 dd,該命令在裝置或檔案之間傳輸原始資料。但是,您需要格外小心,確保恰當協調記憶體和磁碟上的 I/O 操作。 一個原始分割槽只能擁有一個資料檔案、一個控制檔案或一個重做日誌等等。如果您不使用 ASM,則您需要為每個與表空間關聯的資料檔案提供一個獨立的原始裝置。但是,一個表空間可以在不同的原始裝置分割槽中擁有多個資料檔案。 結論

Oracle RAC 提供了一個檔案系統(叢集的或非叢集的)所具有的很多功能,最大程度地減輕了檔案系統本身的工作。如前所述,所需要的只是一個對 Oracle RAC 現有的、內在的資料庫叢集功能進行補充的檔案系統。儘管 OCFS、NFS 和原始裝置也可能是可行的方法,但在大多數情況下,ASM 會最大程度地實現這一目的,從而被視為 Oracle 的最佳實踐。還可以將 ASM 用於資料檔案,OCFS 用於表決磁碟、OCR 和 Oracle 主目錄,以及在 NFS 儲存器上使用 ASM。

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

相關文章