Ubuntu下使用ISCSI+OCFS2实现网络存储及文件共享

ISCSI解决多个客户端访问数据服务器的通信问题,OCFS2解决数据的同步问题

1. 系统及网络结构

因为是测试,所以使用VMware,开了3台虚拟机,安装Ubuntu 14.04。
1台作iscsi的target,提供磁盘(为了避免破坏计算机数据,插了个8G的U盘作为共享磁盘)
另2台作为客户机,测试数据访问
Ubuntu下使用ISCSI+OCFS2实现网络存储及文件共享_第1张图片
图1.1 机器准备


2. 安装iscsi和ocfs2

iscsi的安装见ubuntu(服务端)+windows(客户端)搭建iscsi,USB接入的磁盘一般是sdb,共享路径改为/dev/sdb

其中target机器安装iscsi的服务端,另两台node机器安装iscsi的客户端(initiator),安装完后两个客户端连接共享磁盘


OCFS2的安装主要参考OCFS2 + ISCSI Centralized storage in Ubuntu 10.10:

step1.

sudo apt-get install ocfs2-tools

3台机器都需要安装

安装ocfs2-tools就可以了,原文的ocfs2会提示没这个包

此外之所以用ocfs2而不用gfs,是因为ubuntu 14.04没有gfs的安装包(ubuntu 12.04应该可以)

据文章Ubuntu 12.04配置GFS2,ocfs2测试性能要好于gfs。。。


step2:

sudo touch /etc/ocfs2/cluster.conf
3台机器都需要新建一个ocfs2的配置文件,然后填写:

node:
	ip_port=7777
	ip_address=192.168.134.140
	number=0
	name=target
	cluster=ocfs2

node:
	ip_port=7777
	ip_address=192.168.134.144
	number=1
	name=node1
	cluster=ocfs2

node:
	ip_port=7777
	ip_address=192.168.134.20
	number=2
	name=node2
	cluster=ocfs2

cluster:
	node_count=3
	name=ocfs2
确保3台机器的内容一致,其中特别要注意的是name,需要与相应机器的hostname一致,它是可以改的:

sudo vi /etc/hostname

Ubuntu 14.04 配置共享的RBD(基于OCFS2)一文还提到,需要在每台机器的/etc/hosts里添加所有机器的ip与主机名,不确定这里需不需要,这次实验顺手添加了


step3:

启动ocfs2和o2cb服务

sudo /etc/init.d/o2cb enable
sudo /etc/init.d/ocfs2 start
如果cluster.conf写错,会在o2cb时报错,一般是name的问题

step4:

将共享磁盘重新分区

sudo fdisk /dev/sdb
会有参数提示,这里参考文章Ubuntu下分区格式化U盘(fdisk&&mkfs),先按d删除分区,再按n添加新分区,其他都填默认值

step5:

将共享磁盘格式化为ocfs2

sudo mkfs.ocfs2 -b 4k -C 32k -N 4 -L cluster-storage /dev/sdb1
-b和-C分别为块大小和群集单元大小;b支持512字节到4k,4k是推荐大小,几乎适合所有磁盘大小;c支持4k到1M,对大文件,128k比较适合

-N 4为节点数+1,这里共3台机器,取4

-L 为格式化后磁盘的名字


格式化时可能会因为磁盘已挂载而报错,先umount一下再格式化

sudo umount /dev/sdb1

step4和step5都在target机器上完成


step6:

在两台客户机上挂载共享磁盘到指定目录

sudo mkdir /shareData
sudo mount -t ocfs2 /dev/sdb1 /shareData
确保所有客户机的指定目录相同

搞定!

可以在两台客户机上测试修改文件,内容能同步


P.S 之前的一次测试使用2台机器,不在一个网段,结果target机器隔一会就重启,然后估计客户机因为失去连接,也接着重启。不知道是不是因为网段的问题。。。

你可能感兴趣的:(Ubuntu下使用ISCSI+OCFS2实现网络存储及文件共享)