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、

ocfs2: 搭建环境的更多相关文章

  1. Xamarin 跨移动端开发系列(01) -- 搭建环境、编译、调试、部署、运行

    如果是.NET开发人员,想学习手机应用开发(Android和iOS),Xamarin 无疑是最好的选择,编写一次,即可发布到Android和iOS平台,真是利器中的利器啊!好了,废话不多说,就开始吧, ...

  2. AspectJ基础学习之二搭建环境(转载)

    AspectJ基础学习之二搭建环境(转载) 一.下载Aspectj以及AJDT 上一章已经列出了他的官方网站,自己上去download吧.AJDT是一个eclipse插件,开发aspectj必装,他可 ...

  3. app整体搭建环境:tabBar切换不同控制器的封装(自定义导航+自定义uiviewcontroler+系统自带tabbar+自定义tabbarController)

    首先,一个app的搭建环境非常重要.既要实现基本功能,又要考虑后期优化的性能. 现在很多应用不仅仅是系统自带的控制器,由于需求复杂,基本上需要自定义多控制器来管理. 新建一个BasicNavigati ...

  4. [转]phonegap 2.9 IOS Xcode 搭建环境

    phonegap 2.9 IOS Xcode 搭建环境   一:下载phoneGap2.9和安装Xcode5(目前最新版) 选择2.9是因为3.0以上坑爹版本编译神马的要在有网络情况. 二: 下载ph ...

  5. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:2.搭建环境-2.7. 配置资源与参数

    2.7.配置资源与参数 2.7.1. 修改主机名称 [root@linuxrac1 ~]# cd /etc/sysconfig [root@linuxrac1 sysconfig]# vi netwo ...

  6. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:2.搭建环境-2.6. 安装Oracle所依赖的必要包

    2.6. 安装Oracle所依赖的必要包 2.6.1. 检查Oracle所依赖的必要rpm包 [root@localhost /]#rpm -q binutils compat-libstdc elf ...

  7. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:2.搭建环境-2.5. 配置网络

    2.5. 配置网络 2.5.1. 配置网络 Oracle Rac数据库涉及到公用网络和私有网络,因此要做网络划分和IP地址规划,下表列出了要安装的RAC数据库对应的IP地址.主机名以及网络连接类型: ...

  8. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:2.搭建环境-2.4. 安装JDK

    2.4.安装JDK 2.4.1.准备JDK 在百度搜索:JDK下载 2.4.2.上传JDK put E:\软件安装文件\jdk-8u11-linux-x64.rpm /home/linuxrac1/D ...

  9. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:2.搭建环境-2.3配置共享磁盘

    2.3.配置共享磁盘 2.3.1.创建共享磁盘 在cmd中进入WMware Workstation 10.0 安装目录: 1.创建存储Oracle Clusterware文件  (Oracle Clu ...

随机推荐

  1. cx_Oracle 报错 Reason: image not found

    (Study_env) ➜ DAL python -c "import cx_Oracle"Traceback (most recent call last): File &quo ...

  2. php 之跨域上传图片

    因为要将所有上传的图片上传到一台独立的图片服务器上面,js上传时存在跨域问题,网上找到这种,通过php curl方式,将图片重新发送到另外一台服务器上保存,并返回图片路径!这种方式存在一定问题:1,上 ...

  3. python基础知识3——基本的数据类型2——列表,元组,字典,集合

    磨人的小妖精们啊!终于可以归置下自己的大脑啦,在这里我要把--整型,长整型,浮点型,字符串,列表,元组,字典,集合,这几个知识点特别多的东西,统一的捯饬捯饬,不然一直脑袋里面乱乱的. 一.列表 1.列 ...

  4. WAP端 经验记录2

    1. LightboxV2 插件 点击A 应该关闭弹层的效果,但是 SAMSUNG 手机上原生浏览器上,看上去不会关闭却跳转了,但当点击回退按钮的时候就会看见弹层已经消失(其实之前的关闭效果已经记录了 ...

  5. SNS网站成功原因剖析_完结

    SNS网站成功原因剖析 前言 亿注册用户)为例,讨论下 Fackbook成功的原因,进而分析结合国内环境,讨论当前国内流行的 SNS网站成功失败要素. 一.Facebook (一) Facebook总 ...

  6. JavaScript DOM编程艺术读书笔记(三)

    第七章 动态创建标记 在web浏览器中往文档添加标记,先回顾下过去使用的技术: <body> <script type="text/javascript"> ...

  7. jQuery multiselect的使用

    1,下载插件 https://github.com/ehynds/jquery-ui-multiselect-widget

  8. MIME Type

    一.首先,我们要了解浏览器是如何处理内容的.在浏览器中显示的内容有 HTML.有 XML.有 GIF.还有 Flash --那么,浏览器是如何区分它们,决定什么内容用什么形式来显示呢?答案是 MIME ...

  9. [原创.数据可视化系列之五]韩国"萨德"系统防御图

    自从7月8日美国和韩国共同宣布将在韩国部署萨德反导系统后,韩国国内对此事的巨大争议以及本地区一些国家的强烈不满情绪在持续发酵.“萨德”(THAAD)全称“末段高空区域防御系统”,是美国导弹防御局和美国 ...

  10. design pattern

    1. visitor design pattern http://butunclebob.com/ArticleS.UncleBob.IuseVisitor