快捷搜索:   nginx

分布式文件系统MFS(moosefs)实现存储共享

最近做的项目中,所有牵涉到服务器(比如图片、pdf及word)的部分全用的是 NFS+软链接实现;如果牵涉到存放到windows2003上就采用在前端Nginx分发来实现;如果是少量并发的话这样完全没问题,但随着客户端 的增多压力就很明显了。
这种架构除了性能问题而外,还存在单点故障,一旦这个NFS服务器发生故障,所有靠共享提供数据的应用就不再可用,尽管用rsync方式同步数据到另外一 个服务器上做nfs服务的备份,但这对提高整个的性能毫无帮助。基于这样一种需求,我们需要对nfs服务器进行优化或采取别的解决方案,然而优化并不 能对应对日益增多的客户端的性能要求,因此唯一的选择只能是采取别的解决方案了;通过调研,分布式文件是一个比较合适的选择。采用分布式文件系统后, 服务器之间的数据访问不再是一对多的关系(1个NFS服务器,多个NFS客户端),而是多对多的关系,这样一来,性能大幅提升毫无问题;通过几种分布式文 件系统的对比和测试,我们最终选择了moosefs。
moosefs的优势:
1、通用文件系统,不需要修改上层应用就可以使用。
2、可以在线扩容,体系架构可伸缩性极强(官方的case可以扩到70台了)。
3、部署简单(sa们特别高兴,领导们特别happy)。
4、体系架构高可用,所有组件无单点故障。
5、文件对象高可用,可设置任意的文件冗余程度(提供比raid1+0更高的冗余级别),而绝对不会影响读或者写的性能,只会加速哦)。
6、提供Windows回收站的功能(不怕误操作了,提供类似oralce 的闪回等高级dbms的即时回滚特性,oralce这些特性可是收费的哦)。
7、提供netapp,emc,ibm等商业存储的snapshot特性。
8、google filesystem的一个c实现(google在前面开路哦)。
9、提供web gui监控接口。
10、提高随机读或写的效率。
11、提高海量小文件的读写效率。

moosefs服务端及客户端的安装及配置
1.1 安装mfs master
wget
tar zxvf mfs-1.6.11.tar.gz
cd mfs-1.6.11
useradd mfs -s /sbin/nologin
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs
make
make install
cd /usr/local/mfs/etc/
cp mfsmaster.cfg.dist mfsmaster.cfg
cp mfsexports.cfg.dist mfsexports.cfg
vim mfsmaster.cfg
vim mfsexports.cfg
cd ..
cd var/
mfs/
cp metadata.mfs.empty metadata.mfs
cat metadata.mfs
/usr/local/mfs/sbin/mfsmaster start
ps axu | grep mfsmaster
lsof -i
tail -f /var/log/messages

1.2 启动master服务
/usr/local/mfs/sbin/mfsmaster start
working directory: /usr/local/mfs/var/mfs
lockfile created and locked
initializing mfsmaster modules ...
loading sessions ... ok
sessions file has been loaded
exports file has been loaded
loading metadata ...
create new empty filesystemmetadata file has been loaded
no charts data file - initializing empty charts
master <-> metaloggers module: listen on *:9419
master <-> chunkservers module: listen on *:9420
main master server module: listen on *:9421
mfsmaster daemon initialized properly

1.3. 停止master服务
/usr/local/mfs/sbin/mfsmaster -s

1.4 启动和停止web gui
启动: /usr/local/mfs/sbin/mfscgiserv
停止: kill /usr/local/mfs/sbin/mfscgiserv

1.5 相关配置文件
vim mfsexports.cfg
192.168.28.0/24 . rw
192.168.28.0/24 /       rw

2. mfs chunkserver
2.1 从块设备创建本地文件系统
fdisk -l
mkfs.ext3 /dev/sdb
mkdir /data
chown mfs:mfs /data
mount -t ext3 /dev/sdb /data
df -ah
/dev/sdb              133G 188M 126G   1% /data

2.2 创建50G的loop device文件
df -ah
dd if=/dev/zero of=/opt/mfs.img bs=1M count=50000
losetup /dev/loop0 mfs.img
mkfs.ext3 /dev/loop0
mkdir /data
chown mfs:mfs /data
mount -o loop /dev/loop0 /data
df -ah

2.3 安装chunkserver
wget
tar zxvf mfs-1.6.11.tar.gz
cd mfs-1.6.11
useradd mfs -s /sbin/nologin
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs
make
make install
cd /usr/local/mfs/etc/
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg

2.4 启动chunkvserver
/usr/local/mfs/sbin/mfschunkserver start
ps axu |grep mfs
tail -f /var/log/messages

2.5 停止chunksever
/usr/local/mfs/sbin/mfschunkserver stop

3. mfs client
3.1 安装fuse
yum install kernel.x86_64 kernel-devel.x86_64 kernel-headers.x86_64
###reboot server####
yum install fuse.x86_64 fuse-devel.x86_64 fuse-libs.x86_64
modprobe fuse

3.2 安装mfsclient
wget
tar zxvf mfs-1.6.11.tar.gz
cd mfs-1.6.11
useradd mfs -s /sbin/nologin
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --enable-mfsmount
make
make install

3.3 挂载文件系统
cd /mnt/
mkdir mfs
/usr/local/mfs/bin/mfsmount /mnt/mfs/ -H 192.168.28.242
mkdir mfsmeta
/usr/local/mfs/bin/mfsmount -m /mnt/mfsmeta/ -H 192.168.28.242

※目前moosefs在遨游上已经是很成熟的应用了,我也考虑在后期的项目实施中 用到此项技术,感觉其它还好,就是比较耗机器,这样跟券商谈判时又要说服他们多点预算成本了,呵呵。moosefs的性能测试详见
顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论