发表于 2019-2-1 09:15:05

linux分布式文件系统MooseFS

  MogileFS是一种分布式文件存储系统。可支持文件自动备份的功能,提高可用性和高扩展性。MogileFS不支持对一个文件内部的随机或顺序读写,因此只适合做一部分应用,如图片服务,静态HTML服务等,这些应用在文件写入后基本上不需要对文件进行修改,但是可以生成一个新的文件覆盖原有文件。
    分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连,分布式文件系统的实际基于客户机/服务器模式。一个经典型的系统扮演客户和服务器双重角色。例如,用户可以“发表”一个允许其他客户机访问的目录,一旦被访问,这个目录对客户机来说就像使用本地驱动器一样。
    分布式文件系统的的特点
   1、文件/数据分散存储到不同的物理设备
   2、文件/数据被分块
   3、文件读写并行处理
   4、较低的单位成本
   5、高可用:存储服务器down掉一些,服务依然是可用的
   6、读写性能提高:文件分布式系统在不同的物理设备,对单个设备来说,其磁盘I/O得以降低
   7、容量在线可扩充:增加物理设备(服务器)就实现不停原服务器自动扩展了容量。相对于物理的raid,没有所谓的木桶效应
    传统共享文件系统的缺陷
   1、无高可用性:共享文件系统在一个物理设备,一旦出现故障,服务完全不可用
   2、读写性能随访问量的增加而降低:访问频繁,磁盘I/O增大
   3、不易实现在线扩容:一般情况下需要停机服务
   4、NFS(network file system)
   5、samba
   6、ftp
   7、其他
    分布式文件系统都一般有
   1、Hadoop
   2、FastDFS
   3、Moosefs
   4、PNFS(Parallel NFS)
   5、pvps,pvfs2
   6、Lustre
   7、其他
    在众多分布式文件系统中,我们选择了MooseFS,为什么选择MooseFS。
    第一、实施起来简单。MFS的安装,部署、配置对于其他几种工具来说,要简单和容易的多。lustre 700多页的PDF文档。
    第二、不停服务扩容。MFS框架做好后,随时增加服务器容量;扩充和减少容量皆不会影响现有的服务。
    第三、回复服务器容易。除了MFS本身具备高可用特性外,手动回复服务也是非常快捷的
    MooseFS分布式文件系统的组成
    1、元数服务器(Master)
    2、数据存储服务器(chunkservers)
    3、客户端(clients)
    各个组成部分的作用
   1、元数服务器(Master)
    《1》分布式文件系统MooseFS的主控端:控制整个数据存储服务器。
    《2》目前只有一个master存在单点故障。
    《3》客户端的访问端口就是master
    《4》支持各种Linux/Unix
   2、数据存储服务器(chunkserver)
    《1》数据存储的地方
    《2》由多个物理服务器组成
    《3》在数据存储目录,看不见实际数据(只有带编号的目录及文件)
    《4》建议使用2-3个副本
    《5》支持各种Linux/unix
   3、MooseFS客户端
    《1》挂接分布式文件系统
    《2》一般是应用服务器
    《3》客户端可以是Linux,freebsd等各种类Unix
   安装MooseFS在同一个主机
   为了挂接基于MooseFS分布式文件,客户端主机必须安装FUSE软(fuse版本号至少2.6,推荐使用版本号大于2.7.2的fuse)。如果系统没有安装fuse,你必须手动对其进行安装。
      安装环境
Master Server
master               10.0.0.141    Centos5.5(64X)

Metalogger Server
metalogger         10.0.0.142    Centos5.5(64X)

Chunk Servers
chunk01            10.0.0.143    Centos5.5(64X)
chunk02            10.0.0.144    Centos5.5(64X)

Client Server
client01            10.0.0.150    Centos5.5(64X)
client02            10.0.0.155    Centos5.5(64X)



----------------------------------------------------
master 安装(10.0.0.141)

mkdir -p /root/tools/moosefs/
cd /root/tools/moosefs/

/usr/sbin/groupadd -g 660 mfs
/usr/sbin/useradd -g mfs mfs -u 660 -s /sbin/nologin

wget http://www.moosefs.org/tl_files/mfscode/mfs-1.6.20-2.tar.gz
tar zxvf mfs-1.6.20-2.tar.gz
cd mfs-1.6.20-2
./configure \
--prefix=/elain/apps/mfs \
--sysconfdir=/elain/apps/mfs/etc \
--localstatedir=/elain/apps/mfs/lib \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfschunkserver \
--disable-mfsmount
make && make install
cd ..

cd /elain/apps/mfs/etc/
cp mfsmaster.cfg.dist mfsmaster.cfg
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
cp mfsexports.cfg.dist mfsexports.cfg

vi mfsexports.cfg

10.0.0.0/24             /       rw,alldirs,maproot=0

cd /elain/apps/mfs/lib/mfs
cp metadata.mfs.empty metadata.mfs

vi /etc/hosts

10.0.0.141         mfsmaster

运行mfs服务
/elain/apps/mfs/sbin/mfsmaster start

master metaloggers module: listen on *:9419
master chunkservers module: listen on *:9420
main master server module: listen on *:9421

运行监控平台
/elain/apps/mfs/sbin/mfscgiserv

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

这时,可通过浏览器访问:http://10.0.0.141:9425/查看 master 的运行情况

-----------------------------------------------------
metalogger   安装(10.0.0.142)

cd /root/tools/
/usr/sbin/groupadd -g 660 mfs
/usr/sbin/useradd -g mfs mfs -u 660 -s /sbin/nologin

wget http://www.moosefs.org/tl_files/mfscode/mfs-1.6.20-2.tar.gz
tar zxvf mfs-1.6.20-2.tar.gz
cd mfs-1.6.20-2
./configure \
--prefix=/elain/apps/mfs \
--sysconfdir=/elain/apps/mfs/etc \
--localstatedir=/elain/apps/mfs/lib \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfschunkserver \
--disable-mfsmount
make && make install
cd ..

cd /elain/apps/mfs/etc/
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

vi /etc/hosts

10.0.0.141         mfsmaster

/elain/apps/mfs/sbin/mfsmetalogger start

----------------------------------------------------
Chunk01安装(10.0.0.143)

cd /root/tools/

/usr/sbin/groupadd -g 660 mfs
/usr/sbin/useradd -g mfs mfs -u 660 -s /sbin/nologin

wget http://www.moosefs.org/tl_files/mfscode/mfs-1.6.20-2.tar.gz
tar zxvf mfs-1.6.20-2.tar.gz
cd mfs-1.6.20-2
./configure \
--prefix=/elain/apps/mfs \
--sysconfdir=/elain/apps/mfs/etc \
--localstatedir=/elain/apps/mfs/lib \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfsmaster
make && make install
cd ..

cd /elain/apps/mfs/etc/
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg

vi /etc/hosts

10.0.0.141         mfsmaster

mkdir /data/mfschunks{1,2}
chown -R mfs:mfs /data/mfschunks{1,2}

vi /elain/apps/mfs/etc/mfshdd.cfg

/data/mfschunks1
/data/mfschunks2

/elain/apps/mfs/sbin/mfschunkserver start

-------------------------------------------------
Chunk02安装(10.0.0.144)
cd/root/tools/
/usr/sbin/groupadd -g 660 mfs
/usr/sbin/useradd -g mfs mfs -u 660 -s /sbin/nologin

wget http://www.moosefs.org/tl_files/mfscode/mfs-1.6.20-2.tar.gz
tar zxvf mfs-1.6.20-2.tar.gz
cd mfs-1.6.20-2
./configure \
--prefix=/elain/apps/mfs \
--sysconfdir=/elain/apps/mfs/etc \
--localstatedir=/elain/apps/mfs/lib \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfsmaster
make && make install
cd ..

cd /elain/apps/mfs/etc/
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg

vi /etc/hosts

10.0.0.141         mfsmaster

mkdir /data/mfschunks{1,2}
chown -R mfs:mfs /data/mfschunks{1,2}

vi /elain/apps/mfs/etc/mfshdd.cfg

/data/mfschunks1
/data/mfschunks2

/elain/apps/mfs/sbin/mfschunkserver start

---------------------------------------------------------
Client01 Server安装 (10.0.0.150)

cd /root/tools/
/usr/sbin/groupadd -g 660 mfs
/usr/sbin/useradd -g mfs mfs -u 660 -s /sbin/nologin

wget http://cdnetworks-kr-2.dl.sourceforge.net/project/fuse/fuse-2.X/2.8.5/fuse-2.8.5.tar.gz
tar -zxvf fuse-2.8.5.tar.gz
cd fuse-2.8.5
./configure
make
make install
cd ..

运行以下export命令,否则挂载moosefs系统会失败

vi /etc/profile
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
source /etc/profile

cd /root/tools/moosefs/
wget http://www.moosefs.org/tl_files/mfscode/mfs-1.6.20-2.tar.gz
tar -zxvf mfs-1.6.20-2.tar.gz
cd mfs-1.6.20-2
./configure \
--prefix=/elain/apps/mfs \
--sysconfdir=/elain/apps/mfs/etc \
--localstatedir=/www/lib \
--with-default-user=mfs \
--with-default-group=mfs \
--enable-mfsmount
make && make install
cd ..

vi /etc/hosts

10.0.0.141         mfsmaster

挂接操作
mkdir -p /elain/data/htdocs/elain/upload
/elain/apps/mfs/bin/mfsmount /elain/data/htdocs/elain/upload/ -H mfsmaster
umount -l /elain/data/htdocs/elain/upload

-------------------------------------------------------
Client02 Server安装 (10.0.0.155)
cd /root/tools/
/usr/sbin/groupadd -g 660 mfs
/usr/sbin/useradd -g mfs mfs -u 660 -s /sbin/nologin

wget http://cdnetworks-kr-2.dl.sourceforge.net/project/fuse/fuse-2.X/2.8.5/fuse-2.8.5.tar.gz
tar zxvf fuse-2.8.5.tar.gz
cd fuse-2.8.5
./configure
make
make install
cd ..

运行以下export命令,否则挂载moosefs系统会失败

vi /etc/profile
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
source /etc/profile

#加载fuse
modprobe fuse

lsmod |grep fuse                                                                                          
fuse                   830578

wget http://www.moosefs.org/tl_files/mfscode/mfs-1.6.20-2.tar.gz
tar -zxvf mfs-1.6.20-2.tar.gz
cd mfs-1.6.20-2
./configure \
--prefix=/elain/apps/mfs \
--sysconfdir=/elain/apps/mfs/etc \
--localstatedir=/elain/apps/mfs/lib \
--with-default-user=mfs \
--with-default-group=mfs \
--enable-mfsmount
make && make install
cd ..

vi /etc/hosts

10.0.0.141         mfsmaster

挂接操作
mkdir -p /mnt/mfs
/elain/apps/mfs/bin/mfsmount /mnt/mfs -H mfsmaster

安装完毕。

停止 MooseFS
为了安全停止 MooseFS 集群,建议执行如下的步骤:

umount -l /mnt/mfs                                                #客户端卸载MooseFS 文件系统
/elain/apps/mfs/sbin/mfschunkserver stop                            #停止 chunk server 进程
/elain/apps/mfs/sbin/mfsmetalogger stop                           #停止 metalogger 进程
/elain/apps/mfs/sbin/mfsmaster stop                                 #停止主控 master server 进程

安全的启动MooseFS集群

/elain/apps/mfs/sbin/mfsmaster start                              #启动 master 进程
/elain/apps/mfs/sbin/mfschunkserver start                           #启动 chunkserver 进程
/elain/apps/mfs/sbin/mfsmetalogger start                            #启动 metalogger 进程
/elain/apps/mfs/bin/mfsmount /mnt/mfs -Hmaster                  #客户端挂载 MooseFS 文件系统


MooseFS 命令的使用方法及参考文档:
http://www.moosefs.org/reference-guide.html#using-moosefs
http://www.moosefs.org/moosefs-faq.html

FAQ:
/elain/apps/mfs/bin/mfsmount /elain/data/htdocs/elain/upload -H master
mfsmaster accepted connection with parameters: read-write,restricted_ip ; root mapped to root:root
fuse: device not found, try 'modprobe fuse' first
error in fuse_mount
答:modprobe fuse
# lsmod |grep fuse
fuse                   830576
  
   
   




页: [1]
查看完整版本: linux分布式文件系统MooseFS