ocfs2: 搭建環境


OCFS2是基於共享磁盤的集群文件系統,它在一塊共享磁盤上創建OCFS2文件系統,讓集群中的其它節點可以對磁盤進行讀寫操作。OCFS2由兩部分內容構成,一部分實現文件系統功能,位於VFS之下和Ext4同級別;另一部分實現集群節點的管理。

如上圖所示,測試環境中OCFS2集群由三台服務器組成。我們將cvm服務器中的/dev/sda8分區作為共享磁盤,共享磁盤通過iSCSI共享給client01和client02服務器。

共享磁盤

如果cvm節點中沒有單獨的磁盤分區,可以參考Linux命令總結:fdisk從現有的磁盤分區中划分出一個新分區。測試環境中,我們將cvm節點的/dev/sd8分區作為共享磁盤。磁盤分區通過iSCSI掛給集群中的其它節點,關於iSCSI的用法可以參考iSCSI:環境搭建一文。

另外,值得注意的是cvm節點自己也要通過iSCSI連接共享磁盤,並且mount時掛載iscsi共享磁盤sdb而不是sda8。否則,在cvm節點寫入的數據不能同步到其它節點,並可能導致節點重啟。

配置集群

OCFS2集群中每個節點的配置都相同,因此只要在其中一個節點中准備好配置,然后scp到其余節點即可。

root@cvm:~# cat /etc/ocfs2/cluster.conf 
cluster:
        node_count = 3            <== 集群節點數目
        name = ocfs2              <== 集群名字

node:
        ip_port = 777
        ip_address = 192.168.7.10
        number = 0                <== 節點編號
        name = client01           <== 節點名字
        cluster = ocfs2
node:
        ip_port = 777
        ip_address = 192.168.7.11
        number = 1
        name = client02
        cluster = ocfs2
node:
        ip_port = 777
        ip_address = 192.168.7.8
        number = 2
        name = cvm
        cluster = ocfs2

注意:如果粗心大意地將任意兩個節點的編號寫成一樣,那么執行/etc/init.d/o2cb online ocfs2命令時會出現o2cb_ctl: Internal logic failure while adding node cvm的錯誤信息。

啟動OCFS2服務

加載OCFS2服務

root@cvm:~# /etc/init.d/o2cb load
Loading filesystem "configfs": OK
Mounting configfs filesystem at /sys/kernel/config: OK
Loading stack plugin "o2cb": OK
Loading filesystem "ocfs2_dlmfs": OK
Creating directory '/dlm': OK
Mounting ocfs2_dlmfs filesystem at /dlm: OK

啟動集群,只有啟動集群后才可以格式化共享磁盤。

root@cvm:~# /etc/init.d/o2cb online 
Setting cluster stack "o2cb": OK
Starting O2CB cluster ocfs2: OK

root@cvm:~# /etc/init.d/o2cb start 

查看集群狀態

root@client02:~# /etc/init.d/o2cb status 
Driver for "configfs": Loaded
Filesystem "configfs": Mounted
Stack glue driver: Loaded
Stack plugin "o2cb": Loaded
Driver for "ocfs2_dlmfs": Loaded
Filesystem "ocfs2_dlmfs": Mounted
Checking O2CB cluster ocfs2: Online
Heartbeat dead threshold = 31
  Network idle timeout: 30000
  Network keepalive delay: 2000
  Network reconnect delay: 2000
Checking O2CB heartbeat: Active

如果狀態中提示Checking O2CB heartbeat: Not active信息,那么說明還沒掛載共享磁盤。

掛載磁盤

在其中一個節點上,將共享磁盤格式化成ocfs2格式。 格式化命令中,-N代表集群允許的最大節點數目。

root@cvm:~# mkfs -t ocfs2 -N 4 /dev/sda8

在每個節點中將共享磁盤掛載到一個掛載點上,這跟掛載Ext4文件系統一致。測試中,我們將磁盤都掛載到test_ocfs2目錄。

root@cvm:~# mount -t ocfs2 /dev/sdb test_ocfs2/
root@client01:~# mount -t ocfs2 /dev/sdb test_ocfs2/
root@client02:~# mount -t ocfs2 /dev/sdb test_ocfs2/

查看掛載情況

root@client01:~# mounted.ocfs2 -f
Device                FS     Nodes
/dev/sdb              ocfs2  client01, client02, cvm

最后,在每個節點中創建一個和自己主機名相同的目錄,任意一個節點都可以看到其它節點創建的目錄。

root@cvm:# ls test_ocfs2 
client01  client02  cvm

目錄client01在主機client01中創建,目錄client02在主機client02中創建,目錄cvm在主機cvm中創建。但在每個節點中都能夠看到其它節點創建的目錄。

其它

日志路徑: /var/log/syslog

實際應用中,單獨使用一台服務器的磁盤總是捉襟見肘,並且存在單點故障的問題。這時,可以通過Ceph提供虛擬共享磁盤(即rbd塊)給ocfs2集群使用。

參考文獻

1、OCFS2在Linux下的配置文檔
2、


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM