分布式文件系统MooseFS初探

简介:

 这几天在看架构方面的资料,关于共享存储方面的参考sery的文章,自已简单的测试了一下,测试步骤及结果如下:

 

一,测试环境:

服务器用途

操作系统

IP地址

服务器型号

CPU型号

内存

Master Server

CentOS 5.2 Final x86_64

192.168.0.180

IBM System x3550

Intel(R) Xeon(R) CPU  E5420  @ 2.50GHz

8GB

Matelogger Server

CentOS 5.2 Final x86_64

192.168.0.178

IBM System x3550

Intel(R) Xeon(R) CPU  E5420  @ 2.50GHz

8GB

Chunk Server

CentOS 5.2 Final x86_64

192.168.0.172

IBM System x3550

Intel(R) Xeon(R) CPU  E5420  @ 2.50GHz

8GB

Chunk Server

CentOS 5.2 Final x86_64

192.168.0.176

IBM System x3550

Intel(R) Xeon(R) CPU  E5420  @ 2.50GHz

8GB

Client

CentOS 5.2 Final x86_64

192.168.0.197

IBM System x3550

Intel(R) Xeon(R) CPU  E5420  @ 2.50GHz

8GB

 

 

二,Master server安装及配置:

1,建组及用户:

groupadd mfs

useradd -g mfs mfs

 

2,编译及安装:

./configure --prefix=/usr/local/mfs --sysconfdir=/etc --localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount

make && make install

 

3,更改相关文件:

[root@localhost mfs]# cd /etc/

[root@localhost etc]# cp mfsmaster.cfg.dist mfsm

mfsmaster.cfg.dist      mfsmetalogger.cfg.dist 

[root@localhost etc]# cp mfsmaster.cfg.dist mfsmaster.cfg

[root@localhost etc]# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

[root@localhost etc]# cp mfsexports.cfg.dist mfsexports.cfg

[root@localhost mfs]# cd /var/lib/mfs/

[root@localhost mfs]# cp metadata.mfs.empty metadata.mfs

 

 

[root@localhost etc]# vi /etc/hosts

 

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1               localhost.localdomain localhost

::1             localhost6.localdomain6 localhost6

192.168.0.180 mfsmaster

 

 

4,启动服务:

[root@localhost mfs]# /usr/local/mfs/sbin/mfsmaster start

working directory: /var/lib/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

 

root@localhost mfs]# /usr/local/mfs/sbin/mfscgiserv

starting simple cgi server (host: any , port: 9425 , rootpath: /usr/local/mfs/share/mfscgi)

 

 

三,Matelogger Server安装及配置:

1,建组及用户:

groupadd mfs

useradd -g mfs mfs

mkdir -p /var/bak/mfschunk01/

chown mfs.mfs /var/bak/mfschunk01/

 

 

 

2,编译及安装:

./configure --prefix=/usr/local/mfs --sysconfdir=/etc --localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount

make && make install

 

3,更改相关文件:

[root@localhost mfs-1.6.17]# cd /etc/

[root@localhost etc]# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

 

[root@localhost etc]# vi /etc/mfsmetalogger.cfg

MASTER_HOST = mfsmaster

MASTER_PORT = 9419

#去掉上面2行的注释

 

 

[root@localhost etc]# vi /etc/hosts

 

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1      sworddb.com              localhost.localdomain localhost

::1             localhost6.localdomain6 localhost6

114.80.160.5  kuafu.com

192.168.0.178 mfsmaster

 

4,启动服务:

[root@localhost etc]# /usr/local/mfs/sbin/mfsmetalogger start

working directory: /var/lib/mfs

lockfile created and locked

initializing mfsmetalogger modules ...

mfsmetalogger daemon initialized properly

 

 

四,Chunk Server 1 安装及配置:

1,建组及用户:

groupadd mfs

useradd -g mfs mfs

 

2,编译及安装:

./configure --prefix=/usr/local/mfs --sysconfdir=/etc --localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster

 

make && make install

 

 

3,更改相关文件:

[root@localhost mfs-1.6.17]# cd /etc/

[root@localhost etc]# cp mfschunkserver.cfg.dist mfschunkserver.cfg

[root@localhost etc]# cp mfshdd.cfg.dist mfshdd.cfg

[root@localhost etc]#

 

[root@localhost var]# mkdir -p /var/bak/mfschunk01

[root@localhost var]# chown -R mfs:mfs /var/bak/mfschunk01/

 

[root@localhost var]# vi /etc/mfshdd.cfg

 

# mount points of HDD drives

#

#/mnt/hd1

#/mnt/hd2

#etc.

/var/bak/mfschunk01/

 

[root@sworddb mfschunk02]# vi /etc/mfschunkserver.cfg

WORKING_USER = mfs

WORKING_GROUP = mfs

MASTER_HOST = mfsmaster

MASTER_PORT = 9420

MASTER_TIMEOUT = 60

#去掉上面5行前的注释

~

 

[root@localhost var]# vi /etc/hosts

 

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1               localhost.localdomain localhost

::1             localhost6.localdomain6 localhost6

#192.168.0.180  magicdb.com

192.168.0.180   mfsmaster

 

 

4,启动服务:

[root@localhost var]# /usr/local/mfs/sbin/mfschunkserver start

working directory: /var/lib/mfs

lockfile created and locked

initializing mfschunkserver modules ...

hdd space manager: scanning folder /var/bak/mfschunk01/ ...

hdd space manager: /var/bak/mfschunk01/: 0 chunks found

hdd space manager: scanning complete

main server module: listen on *:9422

no charts data file - initializing empty charts

mfschunkserver daemon initialized properly

 

注:重复上面步骤安装Chunk Server 2,有以下2个需要注意的地方:

mkdir -p /var/bak/mfschunk02/

[root@localhost var]# vi /etc/mfshdd.cfg

 

# mount points of HDD drives

#

#/mnt/hd1

#/mnt/hd2

#etc.

/var/bak/mfschunk02/

 

 

 

五,Client 安装及配置:

 

1,安装FUSE:

[root@youxia197 local]# tar -zxvf fuse-2.7.4.tar.gz

[root@youxia197 local]# cd fuse-2.7.4

[root@youxia197 fuse-2.7.4]# ./configure

[root@youxia197 fuse-2.7.4]# make && make install

 

2,编译及安装:

[root@youxia197 local]# cd mfs-1.6.17

./configure --prefix=/usr/local/mfs --sysconfdir=/etc --localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs --enable-mfsmount --disable-mfsmaster --disable-mfschunkserver

[root@youxia197 mfs-1.6.17]# export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

 

 

3,连接mfsmaster服务器:

[root@youxia197 opt]# /usr/local/mfs/bin/mfsmount /mnt/mfs/ -H mfsmaster

mfsmaster accepted connection with parameters: read-write,restricted_ip ; root mapped to root:root

[root@youxia197 ~]# df -h | grep mfs

mfs#mfsmaster:9421    157G  529M  156G   1% /mnt/mfs

 

 

4,设置文件副本数量为3

[root@youxia197 opt]# /usr/local/mfs/bin/mfsrsetgoal 3 /mnt/mfs

deprecated tool - use "mfssetgoal -r"

/mnt/mfs:

 inodes with goal changed:                         5

 inodes with goal not changed:                     0

 inodes with permission denied:                    0

[root@youxia197 opt]#

 

 

5,复制一个文件到/mnt/mfs目录中,并查看副本数量:

[root@youxia197 mfs]# /usr/local/mfs/bin/mfsgetgoal /mnt/mfs/mfs-1.6.17.tar.gz

/mnt/mfs/mfs-1.6.17.tar.gz: 3

 

 

未完待续










本文转自 trt2008 51CTO博客,原文链接:http://blog.51cto.com/chlotte/380282,如需转载请自行联系原作者
目录
相关文章
|
存储 监控 Unix
分布式网络文件系统--MooseFS
一.介绍 1.简介   MooseFS是一个具备冗余容错功能的分布式网络文件系统,它将数据分别存放在多个物理服务器或单独磁盘或分区上,确保一份数据有多个备份副本。对于访问的客户端或者用户来说,整个分布式网络文件系统集群看起来就像一个资源一样。
1979 0
|
存储 关系型数据库 MySQL
|
20天前
|
NoSQL Java 中间件
【📕分布式锁通关指南 02】基于Redis实现的分布式锁
本文介绍了从单机锁到分布式锁的演变,重点探讨了使用Redis实现分布式锁的方法。分布式锁用于控制分布式系统中多个实例对共享资源的同步访问,需满足互斥性、可重入性、锁超时防死锁和锁释放正确防误删等特性。文章通过具体示例展示了如何利用Redis的`setnx`命令实现加锁,并分析了简化版分布式锁存在的问题,如锁超时和误删。为了解决这些问题,文中提出了设置锁过期时间和在解锁前验证持有锁的线程身份的优化方案。最后指出,尽管当前设计已解决部分问题,但仍存在进一步优化的空间,将在后续章节继续探讨。
463 131
【📕分布式锁通关指南 02】基于Redis实现的分布式锁
|
23天前
|
NoSQL Java Redis
Springboot使用Redis实现分布式锁
通过这些步骤和示例,您可以系统地了解如何在Spring Boot中使用Redis实现分布式锁,并在实际项目中应用。希望这些内容对您的学习和工作有所帮助。
153 83
|
5月前
|
NoSQL Java Redis
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
|
19天前
|
缓存 NoSQL 搜索推荐
【📕分布式锁通关指南 03】通过Lua脚本保证redis操作的原子性
本文介绍了如何通过Lua脚本在Redis中实现分布式锁的原子性操作,避免并发问题。首先讲解了Lua脚本的基本概念及其在Redis中的使用方法,包括通过`eval`指令执行Lua脚本和通过`script load`指令缓存脚本。接着详细展示了如何用Lua脚本实现加锁、解锁及可重入锁的功能,确保同一线程可以多次获取锁而不发生死锁。最后,通过代码示例演示了如何在实际业务中调用这些Lua脚本,确保锁操作的原子性和安全性。
48 6
【📕分布式锁通关指南 03】通过Lua脚本保证redis操作的原子性

热门文章

最新文章