歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

Linux 集群文件系統簡介

集群應用程序簡介 集群應用程序具有各種級別的成熟度和功能。它們包括: 高性能 集群也稱為並行集群或計算集群,通常用於那些支持大量計算處理的系統。在這些集群中,並行文件系統在節點間分配處理資源,因而允許每個節點通過並發的讀寫同時訪問同一文件。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 的推薦順序,它們依次為:

Oracle 自動存儲管理 Oracle 集群文件系統 網絡文件系統 原始設備。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 磁盤組。 有關 ASM 的更多詳細信息,請參見 Lannes Morris-Murphy 的 OTN 文章“自動的存儲”、Arup Nanda 的“Oracle 數據庫 10g:為 DBA 提供的最重要的 20 個特性”中的 ASM 部分以及 Oracle 數據庫管理員指南 10g 第 1 版 (10.1) 的第 12 章。




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。還可以使用手動配置方法,詳情請見 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 是分布式文件系統,本文不對其作全面討論。有關更多信息,請訪問 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。

將來我們還可以期待另一個方法,就是 OCFS 第 2 版能夠使用共享的 Oracle 主目錄,從而完善 ASM 上的共享存儲器。





Copyright © Linux教程網 All Rights Reserved