簡單介紹Linux集群文件系統(tǒng) |
發(fā)布時間: 2012/8/21 14:47:14 |
集群文件系統(tǒng)在多個方面完善了 Oracle RAC 的數(shù)據(jù)庫集群功能。以下是它們的對比情況。
通常,集群只是一組作為單一系統(tǒng)運(yùn)行的服務(wù)器(PC 或者工作站)。但是,這個定義的外延不斷顯著擴(kuò)大;集群技術(shù)現(xiàn)在不但是一個動態(tài)領(lǐng)域,而且其各種應(yīng)用程序正不斷吸收新的特性。此外,集群文件系統(tǒng)技術(shù)(無論是開放源代碼的還是專有的)在其功能方面正在迅速趨同。 很多人談到集群應(yīng)用程序和其中所使用的文件系統(tǒng)軟件時,就象它們完全是一回事似的。更準(zhǔn)確地說,大多數(shù)集群包含兩個主要組件:通過快速網(wǎng)絡(luò)連接共享存儲介質(zhì)的服務(wù)器和充當(dāng)軟件"粘合劑"使集群節(jié)點保持協(xié)作的文件系統(tǒng)。 在"Linux 文件系統(tǒng)精通指南"一文中,我解釋了文件系統(tǒng)方法和數(shù)據(jù)結(jié)構(gòu)如何提供硬盤分區(qū)物理結(jié)構(gòu)的用戶級視角。雖然各項目之間有所不同,但集群文件系統(tǒng)為集群的多個節(jié)點所做的工作是相同的:它們使所有節(jié)點看上去都象是單一系統(tǒng)的一部分,同時允許集群的所有節(jié)點進(jìn)行并發(fā)的讀寫操作。 在本篇后續(xù)文章中,我們將從較高角度來介紹集群文件系統(tǒng)之間的總體差別以及 Oracle 真正應(yīng)用集群 (RAC) 環(huán)境的某些特性。剛接觸集群、Linux 文件系統(tǒng)或 Oracle RAC 的數(shù)據(jù)庫管理員或系統(tǒng)管理員會發(fā)該文很有教育意義。 集群應(yīng)用程序簡介 集群應(yīng)用程序具有各種級別的成熟度和功能。它們包括: 高性能 集群也稱為并行集群或計算集群,通常用于那些支持大量計算處理的系統(tǒng)。在這些集群中,并行文件系統(tǒng)在節(jié)點間分配處理資源,因而允許每個節(jié)點通過并發(fā)的讀寫同時訪問同一文件。NASA 在二十世紀(jì)九十年代初期開發(fā)的 Beowulf Linux 集群就是最常見的示例。 高可用性 (HA) 集群專門為容錯或冗余而設(shè)計。因為這些集群通常使用一個或多個服務(wù)器進(jìn)行處理,所以當(dāng)一個或多個服務(wù)器停機(jī)時,這些服務(wù)器能夠承擔(dān)其他服務(wù)器的處理職責(zé)。 負(fù)載平衡 或負(fù)載均衡 集群在多個服務(wù)器(通常是 web 服務(wù)器)間盡可能平均地分配負(fù)載。 存儲 集群用于 SAN 和具有不同操作系統(tǒng)的服務(wù)器之間,提供對通用存儲介質(zhì)上的數(shù)據(jù)塊的共享訪問。 數(shù)據(jù)庫 集群將 Oracle RAC 作為平臺,把許多集群文件系統(tǒng)特性引入到應(yīng)用程序本身中。 這些集群應(yīng)用程序具有重疊的特性,其中一個或多個特性通?稍趩蝹集群應(yīng)用程序中找到 - 尤其是在 HA 和負(fù)載均衡集群中。例如,Oracle RAC 可以安裝在 HA 集群文件系統(tǒng)上,從而將數(shù)據(jù)庫集群的優(yōu)點引入 HA 集群應(yīng)用程序,如: 共享資源 - 包括數(shù)據(jù)、存儲器、硬盤和元數(shù)據(jù) - 從而使多個節(jié)點看上去就像單一文件系統(tǒng)。它們允許集群的所有成員同時讀寫文件系統(tǒng)。 將存儲設(shè)備集合到單個磁盤卷中,從而因無需進(jìn)行數(shù)據(jù)復(fù)制而提高了性能 可伸縮的容量、帶寬和連接性 單個系統(tǒng)映像,為所有節(jié)點提供相同的數(shù)據(jù)視圖。 現(xiàn)在讓我們來看一些可以選用的支持 Oracle RAC 并具有集群感知的 Linux 文件系統(tǒng),以及它們?nèi)绾瓮晟?Oracle RAC 的功能。 可以運(yùn)行 Oracle 的集群文件系統(tǒng) Oracle RAC 技術(shù)已經(jīng)提供了諸如負(fù)載均衡、冗余、故障切換、可伸縮性、高速緩存和鎖定等特性,因此當(dāng) Oracle 數(shù)據(jù)文件位于安裝有傳統(tǒng) Linux 文件系統(tǒng)(如 ext2/ext3)的塊設(shè)備上時會出現(xiàn)功能的重復(fù)。在這種情況下性能降低了,因為 Oracle 和文件系統(tǒng)的高速緩存消耗了內(nèi)存資源。 到寫本文時為止,除了第三方集群文件系統(tǒng)之外,還有四種可選用的運(yùn)行 Oracle RAC 的文件系統(tǒng)。按 Oracle 的推薦順序,它們依次為: Oracle 自動存儲管理 Oracle 集群文件系統(tǒng) 網(wǎng)絡(luò)文件系統(tǒng) 原始設(shè)備。 Oracle 自動存儲管理 (ASM) Oracle 的一個特點就是,無論它在哪種環(huán)境中運(yùn)行,一旦您獲得一個 Oracle API,則所有的外觀、體驗和操作都相同。Oracle ASM 是 Oracle 數(shù)據(jù)庫 10g 的一個特性,它將這種一致的環(huán)境擴(kuò)展到存儲管理方面,使用 SQL 語句、Oracle Enterprise Manager 網(wǎng)格控制或數(shù)據(jù)庫配置助手程序來創(chuàng)建和管理存儲內(nèi)容和元數(shù)據(jù)。將 ASM 用于 Oracle 數(shù)據(jù)庫 10g 數(shù)據(jù)文件存儲被認(rèn)為是最佳方法。 ASM 中的基本數(shù)據(jù)結(jié)構(gòu)是磁盤組,它由一個或多個磁盤組成。在該語境中,"磁盤"可以是一個磁盤分區(qū)、一個完整的磁盤、一個級聯(lián)磁盤、一個存儲設(shè)備的分區(qū)或者一個完整的存儲設(shè)備。 一定要認(rèn)識到,ASM 并非通用集群文件系統(tǒng)。相反,ASM 是一個具有集群感知的文件系統(tǒng),專門為處理 Oracle 數(shù)據(jù)庫文件、控制文件和日志文件而設(shè)計。ASM 不應(yīng)與邏輯卷管理器 (LVM) 共用,這是因為后者會使 ASM 無法識別磁盤。 ASM 執(zhí)行以下功能: 通過磁盤頭中的 ASM ID 識別磁盤。 在磁盤組中的所有存儲器間動態(tài)分配數(shù)據(jù),提供可選的冗余保護(hù),并且具有集群感知能力。 允許在 Oracle 數(shù)據(jù)庫處于完全運(yùn)轉(zhuǎn)狀態(tài)時進(jìn)行主要的存儲操作 - 無需停機(jī)即可添加、刪除、甚至將磁盤組移到新的存儲陣列(盡管少見) 當(dāng)添加或刪除磁盤時,進(jìn)行自動負(fù)載均衡和重新均衡 通過使用故障組,提供額外的冗余保護(hù) 優(yōu)化存儲資源的使用。 當(dāng)安裝在原始設(shè)備或者安裝在 Oracle 所推薦的那些使用 ASM 庫驅(qū)動程序的塊設(shè)備上時,ASM 自身作為實例來運(yùn)行,該實例先于數(shù)據(jù)庫實例啟動。它使 DBA 能夠創(chuàng)建、擴(kuò)展和縮小磁盤,并將這些變化映射到共享訪問這些組的其他節(jié)點上的磁盤組。數(shù)據(jù)庫實例能夠在集群的多個節(jié)點間共享存儲器的集群池。 ASM 由 Oracle 通用安裝程序安裝。如果將 ASM 添加到一個現(xiàn)有的數(shù)據(jù)庫中,則要確保將數(shù)據(jù)庫設(shè)置為從屬于 ASM 實例,以便在啟動時 ASM 實例先于所從屬數(shù)據(jù)庫啟動。例如: $ srvctl modify instance -d O10G -i O10G1 -s +ASM1 使 o10G1 實例從屬于 +ASM1 實例。 ASM 實例與 Oracle 數(shù)據(jù)庫實例的區(qū)別表現(xiàn)在以下幾方面: 盡管可以使用幾個 V$ 視圖來獲得關(guān)于 ASM 實例的信息,但沒有數(shù)據(jù)字典:V$ASM_DISKGROUP、V$ASM_CLIENT、V$ASM_DISK、V$ASM_FILE、 V$ASM_TEMPLATE、V$ASM_ALIAS 和 V$ASM_OPERATION. 您只能以 SYSDBA 或 SYSOPER 連接 ASM 實例。 有五個初始化參數(shù)用于 ASM 實例,其中 INSTANCE_TYPE 是必要的,并應(yīng)該設(shè)置如下:INSTANCE_TYPE = ASM. 在 ASM 實例中,DBA 可以使用 SQL 語法或 Enterprise Manager 來: 使用一個或多個磁盤為存儲池定義一個磁盤組 在磁盤組中添加和刪除磁盤 定義一個故障組 來增加數(shù)據(jù)冗余保護(hù)。通常這是磁盤組中一系列需要不間斷運(yùn)行的磁盤,它們共享一種共用資源,如控制器。 可以通過 Enterprise Manager 或通過 V$ASM 視圖監(jiān)視 ASM 磁盤組的狀態(tài)。您還可以在創(chuàng)建數(shù)據(jù)庫結(jié)構(gòu)時在一個數(shù)據(jù)庫實例中引用它們來分配存儲器。 當(dāng)您創(chuàng)建表空間、重做日志、歸檔日志文件和控制文件時,通過在初始化參數(shù)或者在 DDL 中指定磁盤組,您可以從數(shù)據(jù)庫實例中引用 ASM 磁盤組。 有關(guān) ASM 的更多詳細(xì)信息,請參見 Lannes Morris-Murphy 的 OTN 文章"自動的存儲"、Arup Nanda 的"Oracle 數(shù)據(jù)庫 10g:為 DBA 提供的最重要的 20 個特性"中的 ASM 部分以及 Oracle 數(shù)據(jù)庫管理員指南 10g 第 1 版 (10.1) 的第 12 章。 Oracle 集群文件系統(tǒng) (OCFS) OCFS 專門為支持 Oracle RAC 應(yīng)用程序的數(shù)據(jù)和磁盤共享而設(shè)計。它在 RAC 集群的服務(wù)器節(jié)點間提供一致的文件系統(tǒng)映像,充當(dāng)原始設(shè)備的替身。除了簡化集群數(shù)據(jù)庫管理外,它還在保持原始設(shè)備性能優(yōu)勢的同時克服了原始設(shè)備的局限性。BT無線網(wǎng)絡(luò)破解教程 OCFS 第 1 版支持 Oracle 數(shù)據(jù)文件、spfile、控制文件、仲裁磁盤文件、歸檔日志、配置文件以及 Oracle 集群注冊表 (OCR) 文件(Oracle 數(shù)據(jù)庫 10g 中的新文件)。設(shè)計它不是為了使用其他文件系統(tǒng)的文件,甚至不是為了使用那些必須在集群每個節(jié)點上安裝的 Oracle 軟件 - 除非您使用第三方解決方案。此外,OCFS 不提供諸如 I/O 分配(分割)等 LVM 功能,也不提供冗余功能。 Oracle 支持用于 32 位和 64 位發(fā)行版本的 Red Hat Advanced Server 2.1、Red Hat Enterprise Linux 3 和 Novell SUSE (United Linux) 上的 OCFS 第 1 版中的 Oracle 數(shù)據(jù)庫,該數(shù)據(jù)庫需要從可下載的二進(jìn)制文件進(jìn)行安裝。如果您自己對其進(jìn)行重新編譯,則 Oracle 不提供支持。 有三種不同的 rpm 程序包: OCFS 內(nèi)核模塊,針對 Red Hat 和 United Linux 的分發(fā)版本各不相同。請認(rèn)真驗證您的內(nèi)核版本: $ uname -aLinux linux 2.4.18-4GB #1 Wed Mar 27 13:57:05 UTC 2002 i686 unknown OCFS 支持程序包BT4 OCFS 工具程序包。 當(dāng)您下載了這些 rpm 程序包后,執(zhí)行以下安裝步驟: 在下載了 rpm 程序包的目錄中執(zhí)行 rpm -Uhv ocfs*.rpm 命令安裝這些程序包。 確認(rèn)已啟用引導(dǎo)時自動掛載。 自動使用 ocfstool 在集群中的每個節(jié)點上配置 OCFS.還可以使用手動配置方法,詳情請見 OCFS 用戶指南。這一步驟的最后結(jié)果是創(chuàng)建了 /etc/ocfs.conf 文件,用于配置 OCFS. 運(yùn)行 ocfs load_ocfs,確保在啟動時加載 OCFS. 使用 ocfstool 命令和 GUI 環(huán)境或 mkfs.ocfs 來格式化 OCFS 分區(qū)。 手動掛載 OCFS 分區(qū),或者在 /etc/fstab 中添加一項來實現(xiàn)自動掛載。 有關(guān)這些步驟的更詳細(xì)說明,請參見"最佳實踐"文檔。 因為 OCFS 第 1 版沒有編寫成符合 POSIX 標(biāo)準(zhǔn),所以諸如 cp、dd、tar 和 textutils 等文件命令需要 coreutils 提供一個 O_DIRECT 開關(guān)。思科學(xué)習(xí)視頻資料下載中心該開關(guān)使這些命令能夠如同預(yù)期那樣用于 Oracle 數(shù)據(jù)文件,即使 Oracle 正在對這些相同的文件進(jìn)行操作(只有當(dāng)您運(yùn)行第三方軟件進(jìn)行熱備份時才會出現(xiàn)問題)。使用 RMAN 可以完全避免這個問題。如果您仍然需要使用這些功能來完成各種維護(hù)任務(wù);可以從 oss.oracle.com/projects/coreutils/files 下載能夠?qū)崿F(xiàn)這些命令的 OCFS 工具。 相反,OCFS 第 2 版(到 2005 年 3 月時仍為測試版)符合 POSIX 標(biāo)準(zhǔn),并且支持 Oracle 數(shù)據(jù)庫軟件,它可以安裝在一個節(jié)點上并在集群的其他節(jié)點間共享。除了共享的 ORACLE_HOME 外,OCFS 第 2 版的其他新特性還包括改進(jìn)的元數(shù)據(jù)數(shù)據(jù)高速緩存、空間分配和鎖定。此外還有改進(jìn)的日志和節(jié)點恢復(fù)功能。 網(wǎng)絡(luò)文件系統(tǒng) (NFS) 雖然 ASM 和 OCFS 是 Oracle RAC 的首選文件系統(tǒng),但 Oracle 還支持經(jīng)過認(rèn)證的網(wǎng)絡(luò)文件服務(wù)器上的 NFS.NFS 是分布式文件系統(tǒng),本文不對其作全面討論。有關(guān)更多信息,請訪問 NFS 主頁。 原始設(shè)備 過去有一段時間內(nèi),原始設(shè)備是運(yùn)行 Oracle RAC 的唯一選擇。原始設(shè)備就是一個沒有安裝文件系統(tǒng)的磁盤驅(qū)動器,可以被分成多個原始分區(qū)。原始設(shè)備允許繞過文件系統(tǒng)緩沖區(qū)高速緩存直接訪問硬件分區(qū)。 要讓 Oracle RAC 使用原始設(shè)備,必須在安裝 Oracle 軟件之前通過 Linux raw 命令將一個塊設(shè)備綁定到該原始設(shè)備:思科路由器配置 # 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 命令來查詢所有原始設(shè)備。 # 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 數(shù)值確定了該內(nèi)核的設(shè)備位置和驅(qū)動程序。major 數(shù)值確定了總的設(shè)備類型,而 minor 數(shù)值確定了屬于該設(shè)備類型的設(shè)備數(shù)量。在上述示例中,major 8 是 SCSI 磁盤 /dev/sda 的設(shè)備類型。 請注意,設(shè)備不需要處于可訪問狀態(tài)即可運(yùn)行上述命令。當(dāng)我為了演示而運(yùn)行上述命令時,我的系統(tǒng)沒有連接任何 SCSI 磁盤。這些命令的效果在我下一次重新啟動后將會消失,除非我將這些命令放在類似 /etc/init.d/boot.local 或 /etc/init.d/dbora 的引導(dǎo)腳本中,每當(dāng)我的系統(tǒng)引導(dǎo)時,就會運(yùn)行這些腳本。 在將塊設(shè)備映射到原始設(shè)備后,思科路由器您仍然需要確保原始設(shè)備屬于 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 數(shù)據(jù)文件與原始設(shè)備之間使用符號鏈接,以便使事情更易于管理。 Linux 內(nèi)核 2.4 版中的原始設(shè)備限制中包括每分區(qū)一個原始設(shè)備的限制和每系統(tǒng) 255 個原始設(shè)備的限制。Novell SUSE Enterprise Linux 帶有 63 個原始設(shè)備文件,但可以使用 mknod 命令(需要有根權(quán)限)創(chuàng)建最多 255 個原始設(shè)備。 # ls /dev/raw/raw64ls:/dev/raw/raw64:No such file or directory# cd /dev/rawlinux:/dev/raw # mknod raw64 c 162 64# ls /dev/raw/raw64/dev/raw/raw64 以上的 mknod 命令需要設(shè)備名、設(shè)備類型以及 major 和 minor 數(shù)值。本示例中的設(shè)備名是"raw64",設(shè)備類型是"c"(表示它是一個字符設(shè)備)。該新設(shè)備的 major 和 minor 數(shù)值分別是 162 和 64.另外,Novell SUSE 用戶可以通過運(yùn)行 orarun rpm 來安裝這些設(shè)備。 使用原始設(shè)備的其他缺點包括: 一個磁盤的原始分區(qū)數(shù)量限制為 14. 不支持 Oracle 管理文件 (OMF)。 無法重新調(diào)整原始設(shè)備分區(qū)的大小,因此如果空間不足,則必須創(chuàng)建另一個分區(qū)來添加數(shù)據(jù)庫文件。 原始設(shè)備顯示為未使用空間,這可能導(dǎo)致其他應(yīng)用程序?qū)⑵涓采w。 向原始設(shè)備進(jìn)行寫操作的唯一方法是使用低級命令 dd,該命令在設(shè)備或文件之間傳輸原始數(shù)據(jù)。但是,您需要格外小心,確保恰當(dāng)協(xié)調(diào)內(nèi)存和磁盤上的 I/O 操作。 一個原始分區(qū)只能擁有一個數(shù)據(jù)文件、一個控制文件或一個重做日志等等。如果您不使用 ASM,則您需要為每個與表空間關(guān)聯(lián)的數(shù)據(jù)文件提供一個獨立的原始設(shè)備。但是,一個表空間可以在不同的原始設(shè)備分區(qū)中擁有多個數(shù)據(jù)文件。思科路由器交換機(jī)模擬軟件 結(jié)論 Oracle RAC 提供了一個文件系統(tǒng)(集群的或非集群的)所具有的很多功能,最大程度地減輕了文件系統(tǒng)本身的工作。如前所述,所需要的只是一個對 Oracle RAC 現(xiàn)有的、內(nèi)在的數(shù)據(jù)庫集群功能進(jìn)行補(bǔ)充的文件系統(tǒng)。盡管 OCFS、NFS 和原始設(shè)備也可能是可行的方法,但在大多數(shù)情況下,ASM 會最大程度地實現(xiàn)這一目的,從而被視為 Oracle 的最佳實踐。還可以將 ASM 用于數(shù)據(jù)文件,OCFS 用于表決磁盤、OCR 和 Oracle 主目錄,以及在 NFS 存儲器上使用 ASM. 將來我們還可以期待另一個方法,就是 OCFS 第 2 版能夠使用共享的 Oracle 主目錄,從而完善 ASM 上的共享存儲器。 本文出自:億恩科技【mszdt.com】 本文出自:億恩科技【www.enidc.com】 --> 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |