套用至 SUSE Linux Enterprise High Availability Extension 12

13 OCFS2

Oracle Cluster File System 2 (OCFS2) 是一般性用途的日誌檔案系統,自 Linux 2.6 版起便已完全整合到該核心中。OCFS2 可讓您將應用程式二進位檔案、資料檔案和資料庫儲存於裝置上的共享儲存中。叢集中所有節點均同時具有檔案系統的讀取與寫入權限。透過複製品資源管理的使用者空間控制精靈可提供與 HA 堆疊的整合,特別是與 Corosync 和分散式鎖定管理員 (DLM) 的整合。

13.1 特點及優勢

OCFS2 可用於下列儲存解決方案,例如︰

  • 一般應用程式與工作負載。

  • 叢集中的 Xen 影像儲存。Xen 虛擬機器與虛擬伺服器可以儲存到叢集伺服器掛接的 OCFS2 磁碟區。如此即可便捷地在伺服器之間實現 Xen 虛擬機器的可攜性。

  • LAMP (Linux、Apache、MySQL 和 PHP | Perl | Python) 堆疊。

做為一款高效能、對稱、平行的叢集檔案系統,OCFS2 支援下列功能:

  • 叢集上的所有節點均可使用應用程式的檔案。使用者只需在叢集上的 OCFS2 磁碟區安裝一次即可。

  • 所有節點可直接透過標準檔案系統介面同時讀取及寫入儲存,讓叢集上執行的應用程式更易於管理。

  • 檔案存取透過 DLM 來協調。在多數情況下,DLM 控制都能起到很好的效果,但如果應用程式設計與 DLM 爭奪檔案存取協調權,則擴充性可能就會受到限制。

  • 所有後端儲存均可使用儲存備份功能。您可輕鬆建立共享應用程式檔案的複本,以利於提供有效的災難復原。

OCFS2 亦提供下列功能:

  • 中繼資料快取。

  • 中繼資料日誌。

  • 跨節點資料檔案一致性。

  • 支援的多區塊最大大小為 4 KB,叢集最大大小為 1 MB,磁碟區最大大小為 4 PB (拍位元組)。

  • 最多支援 32 個叢集節點。

  • 支援對資料庫檔案進行非同步的直接 I/O 存取,以提升資料庫效能。

13.2 OCFS2 套件與管理公用程式

OCFS2 核心模組 (ocfs2) 會自動安裝到 SUSE® Linux Enterprise Server 12 上的 High Availability Extension 中。若要使用 OCFS2,請確定叢集中的每個節點均已安裝下列套件︰ocfs2-tools 及與您的核心相符的 ocfs2-kmp-* 套件。

ocfs2-tools 套件提供下列管理 OFS2 磁碟區的公用程式。如需有關語法的資訊,請參閱其 man 頁面。

表格 13.1 OCFS2 共用程式

OCFS2 共用程式

描述

debugfs.ocfs2

以偵錯為目的,檢驗 OCFS 檔案系統。

fsck.ocfs2

檢查檔案系統是否有錯誤,並選擇性修復錯誤。

mkfs.ocfs2

在裝置上建立 OCFS2 檔案系統,通常是共用實體或邏輯磁碟上的分割區。

mounted.ocfs2

偵測並列出叢集系統上的所有 OCFS2 磁碟區。偵測並列出掛接 OCFS2 裝置的系統上之所有節點,或列出所有 OCFS2 裝置。

tunefs.ocfs2

變更 OCFS2 檔案系統參數,包括磁碟區標籤、節點插槽數目、所有節點插槽的日至大小,以及磁碟區大小。

13.3 設定 OCFS2 服務與 STONITH 資源

您必須先將 DLM 及 STONITH 資源設定為叢集中的服務,才能建立 OCFS 磁碟區。OCFS2 會使用使用者空間中執行的 Pacemaker 所提供的叢集成員服務。因此,需要將 DLM 設定為叢集中每個節點上都存在的複製品資源。

下面的程序將使用 crm 外圍程序來設定叢集資源。或者,也可以依照第 13.6 節「使用 Hawk 設定 OCFS2 資源」所述,使用 Hawk 來設定資源。

注意
注意:用於 cLVM 與 OCFS2 的 DLM 資源

cLVM 與 OCFS2 都需要在叢集的所有節點上執行的 DLM 資源,因此該資源通常會設定為複製品。如果您的環境中包含 OCFS2 與 cLVM,只需為 OCFS2 與 cLVM 設定一個 DLM 資源就足夠了。

過程 13.1 設定 STONITH 資源
注意
注意:需要 STONITH 裝置

您需要設定一部圍籬區隔裝置。如果沒有設定合適的 STONITH 機制 (如 external/sbd),組態將失敗。

  1. 啟動外圍程序,並以 root 或同等身分登入。

  2. 第 17.1.3.1 節「建立 SBD 分割區」 所述建立一個 SBD 分隔區。

  3. 執行 crm configure

  4. external/sbd 設定為圍籬區隔裝置,並且 /dev/sdb2 做為共享儲存上的專用分割區,用於活動訊號與圍籬區隔操作︰

    crm(live)configure# primitive sbd_stonith stonith:external/sbd \
          meta target-role="Started"
  5. 使用 show 檢閱所做的變更。

  6. 如果所有設定都正確,請使用 commit 提交變更,然後使用 exit 離開 crm 即時組態。

過程 13.2 設定 DLM 資源

該組態由一個包含數個基本資源的基礎群組與一個基礎複製品構成。之後,基礎群組與基礎複製品便可用於各種情況 (例如,用於 OCFS2 與 cLVM)。您只需根據需要新增相應的基本資源來擴充基礎群組。由於基礎群組有內部並存與順序條件約束,因此您不需要指定多個個別群組、複製品及其相依項,這使總體設定程序更為簡便。

對叢集中的某個節點執行下列步驟︰

  1. 啟動外圍程序,並以 root 或同等身分登入。

  2. 執行 crm configure

  3. 輸入以下指令以建立 DLM 的基本資源:

    crm(live)configure# primitive dlm ocf:pacemaker:controld \
          op monitor interval="60" timeout="60"
  4. 為 DLM 資源建立基礎群組。在建立更多的複製基本資源時,這些基本資源將新增至此群組。

    crm(live)configure# group base-group dlm
  5. 複製基礎群組,以使其在所有節點上執行。

    crm(live)configure#  clone base-clone base-group \
    	    	meta interleave=true target-role=Started
  6. 使用 show 檢閱所做的變更。

  7. 如果所有設定都正確,請使用 commit 提交變更,然後使用 exit 離開 crm 即時組態。

13.4 建立 OCFS2 磁碟區

依照第 13.3 節「設定 OCFS2 服務與 STONITH 資源」所述設定 DLM 叢集資源後,將系統設定為使用 OCFS2,並建立 OCFs2 磁碟區。

注意
注意:應用程式與資料檔案使用的 OCFS2 磁碟區

一般情況下,建議您將應用程式檔案與資料檔案儲存在不同的 OCFS2 磁碟區中。如果您的應用程式磁碟區和資料磁碟區對於掛接有不同的要求,請務必將它們儲存到不同的磁碟區中。

開始之前,請先準備要用於 OCFS2 磁碟區的區塊裝置。將裝置留為可用空間。

然後按過程 13.3, “建立並格式化 OCFS2 磁碟區” 中所述,使用 mkfs.ocfs2 建立並格式化 OCFS2 磁碟區。此指令最重要的參數列於表格 13.2 「OCFS2 的重要參數」。如需詳細資訊及指令語法,請參閱 mkfs.ocfs2 man 頁面。

表格 13.2 OCFS2 的重要參數

OCFS2 參數

描述與建議

磁碟區標籤 (-L)

磁碟區的描述性名稱可讓其掛接於不同節點時易於辨識。使用 tunefs.ocfs2 公用程式依需要修改標籤。

叢集大小 (-C)

叢集大小是配置給持有資料的檔案之空間最小單位。如需可用選項及建議,請參閱 mkfs.ocfs2 man 頁面。

節點插槽數目 (-N)

可同時掛接磁碟區的最大節點數目。對於每個節點,OCFS2 會分別為其建立系統檔案,例如日誌。存取磁碟區的節點可以是小 endian 架構 (如 x86_64) 和大 endian 架構 (如 s390x) 的組合。

節點特定的檔案會被視為本機檔案。節點插槽號碼會附加至本機檔案。例如︰journal:0000 隸屬於指派至插槽 0 的任一節點。

建立磁碟區時,請根據您希望同時掛接磁碟區的節點數量,設定節點插槽的最大磁碟區數目。使用 tunefs.ocfs2 公用程式可以視需要增加節點數。請注意,此值只能增加,不能減少。

如果未指定 -N 參數,系統會根據檔案系統的大小確定插槽數。

區塊大小 (-b)

檔案系統可定址的空間最小單位。請在建立磁碟區時指定區塊大小。如需可用選項及建議,請參閱 mkfs.ocfs2 man 頁面。

開啟/關閉特定功能 (--fs-features)

可提供以逗號分隔的功能標籤清單,mkfs.ocfs2 會根據此清單嘗試建立具有這些功能集的檔案系統。若要開啟功能,請在清單中包含該功能。若要關閉功能,則在名稱前預增 no

如需所有可用標籤的綜覽,請參閱 mkfs.ocfs2 man 頁面。

預定義功能 (--fs-feature-level)

可讓您從一組預定義檔案系統功能中進行選擇。如需可用選項,請參閱 mkfs.ocfs2 man 頁面。

使用 mkfs.ocfs2 建立並格式化磁碟區時,如果不指定任何具體功能,則預設會啟用下列功能︰backup-supersparseinline-dataunwrittenmetaeccindexed-dirsxattr

過程 13.3 建立並格式化 OCFS2 磁碟區

在其中個叢集節點上執行下列步驟。

  1. 開啟終端機視窗,並以 root 身分登入。

  2. 使用指令 crm status 檢查叢集是否上線。

  3. 使用 mkfs.ocfs2 公用程式建立並格式化磁碟區。如需此指令的語法資訊,請參閱 mkfs.ocfs2 man 頁面。

    例如,若要在 /dev/sdb1 上建立最多支援 32 個叢集節點的新 OCFS2 檔案系統,請輸入以下指令︰

    root #  mkfs.ocfs2 -N 32 /dev/sdb1

13.5 掛接 OCFS2 磁碟區

您可以按過程 13.5, “使用叢集資源管理員掛接 OCFS2 磁碟區” 中所述,手動或使用叢集管理員掛接 OCFS2 磁碟區。

過程 13.4 手動掛接 OCFS2 磁碟區
  1. 開啟終端機視窗,並以 root 身分登入。

  2. 使用指令 crm status 檢查叢集是否上線。

  3. 從指令行掛接磁碟區,請使用 mount 指令。

警告
警告:手動掛接的 OCFS2 裝置

如果您為了測試目的手動掛接了 OCFS2 檔案系統,則在開始將其做為叢集資源使用之前,務必要將其卸載恢復原狀。

過程 13.5 使用叢集資源管理員掛接 OCFS2 磁碟區

若要使用 High Availability 軟體掛接 OCFS2 磁碟區,請在叢集中設定 ocfs2 檔案系統資源。下面的程序將使用 crm 外圍程序來設定叢集資源。或者,也可以依照第 13.6 節「使用 Hawk 設定 OCFS2 資源」所述,使用 Hawk 來設定資源。

  1. 啟動外圍程序,並以 root 或同等身分登入。

  2. 執行 crm configure

  3. 設定 Pacemaker 以在叢集中的各節點上掛接 OCFS2 檔案系統︰

    crm(live)configure# primitive ocfs2-1 ocf:heartbeat:Filesystem \
          params device="/dev/sdb1" directory="/mnt/shared" fstype="ocfs2" options="acl" \
          op monitor interval="20" timeout="40"
  4. ocfs2-1dlm 基本資源新增至您在過程 13.2, “設定 DLM 資源”中建立的 base-group

    crm(live)configure# group base-group dlm ocfs2-1
         

    鑒於基礎群組的內部並存與順序條件約束,Pacemaker 只會在其上也有 dlm 資源在執行的節點上啟動 ocfs2-1 資源。

  5. 使用 show 檢閱所做的變更。

  6. 如果所有設定都正確,請使用 commit 提交變更,然後使用 exit 離開 crm 即時組態。

13.6 使用 Hawk 設定 OCFS2 資源

除了透過 crm 外圍程序為 OCFS2 手動設定 DLM 和檔案系統資源以外,您還可以使用 Hawk 設定精靈中的 OCFS2 樣板。

重要
重要:手動設定與使用 Hawk 的差別

設定精靈中的 OCFS2 樣板包含 STONITH 資源的組態。如果使用該精靈,仍需在共享儲存上建立 SBD 分割區,並依照過程 13.1, “設定 STONITH 資源”所述設定一個 STONITH 資源。

使用 Hawk 設定精靈中的 OCFS2 樣板還會導致資源組態與過程 13.2, “設定 DLM 資源”過程 13.5, “使用叢集資源管理員掛接 OCFS2 磁碟區”中所述的手動組態略有不同。

過程 13.6 使用 Hawk 的設定精靈設定 OCFS2 資源
  1. 啟動網頁瀏覽器並依第 5.1.1 節「啟動 Hawk 及登入」 所述登入叢集。

  2. 在左側導覽列中選取設定精靈

  3. 選取 OCFS2 檔案系統樣板,然後按下一步

    Hawk 會針對以下參數提供建議的值:

    • 資源 ID

    • 區塊裝置

    • 檔案系統類型

    如需關於某個選項的資訊,按一下該選項即可在 Hawk 中顯示簡要說明文字。

  4. 填寫所需資訊:輸入檔案系統的區塊裝置路徑,並視需要輸入其他掛接選項

    Hawk 設定精靈 — OCFS2 樣板
    圖形 13.1 Hawk 設定精靈 — OCFS2 樣板
  5. 按一下下一步

    精靈會顯示要套用至 CIB 的組態片段。

  6. 若要套用此組態,請按下一步

    如果動作成功,螢幕上會顯示一則訊息。如果一切都符合您的預期,請離開精靈。

13.7 在 OCFS2 檔案系統上使用配額

若要在 OCFS2 檔案系統上使用配額,請分別使用以下相應的配額功能或掛接選項來建立和掛接檔案系統:ursquota (個別使用者的配額) 或 grpquota (群組的配額)。您也可在以後使用 tunefs.ocfs2 在解下的檔案系統上啟用這些功能。

檔案系統啟用相應的配額功能後,將會在中繼資料中追蹤每個使用者 (或群組) 使用的空間量和檔案數量。由於 OCFS2 將配額資訊視為檔案系統內部的中繼資料,因此,您不需要執行 quotacheck(8) 程式。fsck.ocfs2 和檔案系統驅動程式自身中已內建所有功能。

若要對每個使用者或群組強制實施限制,請執行 quotaon(8),就像對其他任何檔案系統執行該指令一樣。

出於效能的考量,每個叢集每隔 10 秒會在本地執行一次配額計算,並將此資訊同步至通用中央儲存。您可以使用 tunefs.ocfs2、選項 usrquota-sync-intervalgrpquota-sync-interval 來調整此間隔。因此,配額資訊並非一直都是精確的,所以,當使用者或群組同時操作多個叢集節點時,可能會略微超出其配額限制。

13.8 更多資訊

如需有關 OCFS2 的詳細資訊,請參閱下列連結的內容:

http://oss.oracle.com/projects/ocfs2/

Oracle OCFS2 專案的首頁。

http://oss.oracle.com/projects/ocfs2/documentation

專案的文件首頁。

列印此頁面