跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Linux Enterprise High Availability Extension 文件 / 管理指南 / 儲存和資料複製 / OCFS2
適用範圍 SUSE Linux Enterprise High Availability Extension 15 SP5

20 OCFS2

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

20.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 存取,以提升資料庫效能。

注意
注意:對 OCFS2 的支援

僅當與 SUSE Linux Enterprise High Availability Extension 所提供的 pcmk (Pacemaker) 堆疊搭配使用時,SUSE 才支援 OCFS2。與 o2cb 堆疊組合使用時,SUSE 不提供對 OCFS2 的支援。

20.2 OCFS2 套件和管理公用程式

CFS2 核心模組 (ocfs2) 會自動安裝到 SUSE® Linux Enterprise Server 15 SP5 上的 High Availability Extension 中。若要使用 OCFS2,請確定已在叢集中的每個節點上安裝以下套件:ocfs2-tools 和與核心相符的 ocfs2-kmp-* 套件。

ocfs2-tools 套件提供以下用於管理 OCFS2 磁碟區的公用程式。如需有關語法的資訊,請參閱其手冊頁。

debugfs.ocfs2

檢查 OCFS2 檔案系統的狀態以進行除錯。

defragfs.ocfs2

減少 OCFS2 檔案系統的碎片。

fsck.ocfs2

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

mkfs.ocfs2

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

mounted.ocfs2

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

tunefs.ocfs2

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

20.3 設定 OCFS2 服務和 STONITH 資源

建立 OCFS2 磁碟區之前,您必須先將 DLM 及 STONITH 資源設定為叢集中的服務。

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

程序 20.1︰ 設定 STONITH 資源
注意
注意:需要 STONITH 裝置

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

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

  2. 程序 13.3 「啟始化 SBD 裝置」 所述建立一個 SBD 分隔區。

  3. 執行 crm configure.

  4. external/sbd 設定為圍籬區隔裝置,並將 /dev/sdb2 做為共用儲存裝置上專用於存放活動訊號和圍籬區隔資訊的分割區:

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

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

如需為 DLM 設定資源的詳細資料,請參閱第 19.2 節 「設定 DLM 叢集資源」

20.4 建立 OCFS2 磁碟區

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

注意
注意:用於儲存應用程式和資料檔案的 OCFS2 磁碟區

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

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

然後按mkfs.ocfs2 中所述,使用 程序 20.2 「建立並格式化 OCFS2 磁碟區」 建立並格式化 OCFS2 磁碟區。下面列出了此指令最重要的參數。如需詳細資訊及指令語法,請參閱 mkfs.ocfs2 手冊頁。

磁碟區標籤 (-L)

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

叢集大小 (-C)

配置給檔案以儲存資料的最小空間單位。如需可用選項及建議,請參閱 mkfs.ocfs2 手冊頁。

節點插槽數量 (-N)

可同時掛接磁碟區的最大節點數量。OCFS2 會分別為每個節點建立系統檔案,例如日誌。存取磁碟區的節點可以是 little-endian 架構 (如 AMD64/Intel 64) 和 big-endian 架構 (如 S/390x) 的組合。

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

建立磁碟區時,請根據您希望同時掛接磁碟區的節點數量,設定節點插槽的最大磁碟區數量。使用 tunefs.ocfs2 公用程式可以視需要增加節點數。該值不能減小,並且一個節點插槽會佔用 100 MiB 磁碟空間。

如果未指定 -N 參數,系統會根據檔案系統的大小確定節點插槽數。如需預設值,請參閱 mkfs.ocfs2 手冊頁。

區塊大小 (-b)

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

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

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

如需所有可用標記的綜覽,請參閱 mkfs.ocfs2 手冊頁。

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

用於從一組預先定義的檔案系統功能中進行選擇。如需可用選項,請參閱 mkfs.ocfs2 手冊頁。

如果使用 mkfs.ocfs2 建立和格式化磁碟區時未指定任何功能,預設會啟用以下功能:unwrittenbackup-supermetaeccsparseindexed-dirsinline-dataxattr

程序 20.2︰ 建立並格式化 OCFS2 磁碟區

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

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

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

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

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

    # mkfs.ocfs2 -N 32 /dev/sdb1

20.5 掛接 OCFS2 磁碟區

您可以按程序 20.4 「使用叢集資源管理員掛接 OCFS2 磁碟區」 中所述,手動或使用叢集管理員掛接 OCFS2 磁碟區。

若要掛接多個 OCFS2 磁碟區,請參閱程序 20.5 「使用叢集資源管理員掛接多個 OCFS2 磁碟區」

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

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

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

提示
提示:在單個節點上掛接現有的 OCFS2 磁碟區

您可以在單個節點 (不具有功能完備的叢集堆疊) 上掛接 OCFS2 磁碟區:例如,用於快速存取備份中的資料。若要執行此操作,請使用 mount 指令 (帶 -o nocluster 選項)。

警告

此掛接方法缺少針對整個叢集的保護能力。為了避免檔案系統損毀,您必須確保僅將其掛接到一個節點上。

程序 20.4︰ 使用叢集資源管理員掛接 OCFS2 磁碟區

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

  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" \
      op monitor interval="20" timeout="40" \
      op start timeout="60" op stop timeout="60" \
      meta target-role="Started"
  4. ocfs2-1 基本資源新增至您在程序 19.1 「設定 DLM 的基礎群組」中建立的 g-storage 群組。

    crm(live)configure# modgroup g-storage add ocfs2-1

    受限於基本群組的內部並存與順序條件約束,ocfs2-1 資源將僅在已有 dlm 資源在執行的節點上啟動。

    重要
    重要:不要為多個 OCFS2 資源使用群組

    若將多個 OCFS2 資源新增至一個群組,會在 OCFS2 磁碟區之間建立相依關係。例如,如果使用 crm configure group g-storage dlm ocfs2-1 ocfs2-2 建立了一個群組,那麼停止 ocfs2-1 也將停止 ocfs2-2,啟動 ocfs2-2 也將啟動 ocfs2-1

    若要在叢集中使用多個 OCFS2 資源,請依照程序 20.5 「使用叢集資源管理員掛接多個 OCFS2 磁碟區」所述使用並存和順序條件約束。

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

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

程序 20.5︰ 使用叢集資源管理員掛接多個 OCFS2 磁碟區

若要在叢集中掛接多個 OCFS2 磁碟區,請為每個磁碟區設定一個 OCFS2 檔案系統資源,並將其與您在程序 19.2 「設定獨立的 DLM 資源」中建立的 dlm 資源並存。

重要

不要使用 DLM 將多個 OCFS2 資源新增至一個群組。這會在 OCFS2 磁碟區之間建立相依關係。例如,如果 ocfs2-1ocfs2-2 在同一個群組中,那麼停止 ocfs2-1 也將停止 ocfs2-2

  1. root 或同等身分登入節點。

  2. 執行 crm configure

  3. 為第一個 OCFS2 磁碟區建立基本資源:

    crm(live)configure# primitive ocfs2-1 Filesystem \
      params directory="/srv/ocfs2-1" fstype=ocfs2 device="/dev/disk/by-partlabel/ocfs2-1" \
      op monitor interval=20 timeout=40 \
      op start timeout=60 interval=0 \
      op stop timeout=60 interval=0
  4. 為第二個 OCFS2 磁碟區建立基本資源:

    crm(live)configure# primitive ocfs2-2 Filesystem \
      params directory="/srv/ocfs2-2" fstype=ocfs2 device="/dev/disk/by-partlabel/ocfs2-2" \
      op monitor interval=20 timeout=40 \
      op start timeout=60 interval=0 \
      op stop timeout=60 interval=0
  5. 複製 OCFS2 資源,使其可以在所有節點上執行:

    crm(live)configure# clone cl-ocfs2-1 ocfs2-1 meta interleave=true
    crm(live)configure# clone cl-ocfs2-2 ocfs2-2 meta interleave=true
  6. 為兩個 OCFS2 資源新增並存條件約束,使其只能在正在執行 DLM 的節點上執行:

    crm(live)configure# colocation co-ocfs2-with-dlm inf: ( cl-ocfs2-1 cl-ocfs2-2 ) cl-dlm
  7. 為兩個 OCFS2 資源新增順序條件約束,使其只能在 DLM 執行後才能啟動:

    crm(live)configure# order o-dlm-before-ocfs2 Mandatory: cl-dlm ( cl-ocfs2-1 cl-ocfs2-2 )
  8. 使用 show 檢閱所做的變更。

  9. 如果所有設定均正確無誤,請使用 commit 提交變更,然後使用 quit 離開 crm 即時組態。

20.6 使用 Hawk2 設定 OCFS2 資源

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

重要
重要:手動設定與使用 Hawk2 的區別

設定精靈中的 OCFS2 範本包含 STONITH 資源的組態。如果使用該精靈,仍需在共用儲存上建立 SBD 分割區,並依照程序 20.1 「設定 STONITH 資源」所述設定一個 STONITH 資源。

使用 Hawk2 設定精靈中的 OCFS2 範本還會導致資源組態與程序 19.1 「設定 DLM 的基礎群組」程序 20.4 「使用叢集資源管理員掛接 OCFS2 磁碟區」中所述的手動組態略有不同。

程序 20.6︰ 使用 Hawk2 的精靈設定 OCFS2 資源
  1. 登入 Hawk2:

    https://HAWKSERVER:7630/
  2. 在左側導覽列中,選取精靈

  3. 展開檔案系統類別,然後選取 OCFS2 File System

  4. 按照螢幕上的指示執行操作。如需關於某個選項的資訊,按一下該選項即可在 Hawk2 中顯示簡要說明文字。在最後一個設定步驟之後,驗證所輸入的值。

    精靈會顯示將套用於 CIB 的組態代碼片段以及任何其他變更 (如果需要)。

    Image
  5. 檢查建議的變更。如果一切都符合您的預期,請套用變更。

    如果動作成功,螢幕上會顯示一則訊息。

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

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

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

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

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

20.8 更多資訊

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

https://ocfs2.wiki.kernel.org/

OCFS2 專案首頁。

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

Oracle 上的原 OCFS2 專案首頁。

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

專案的原文件首頁。