Linux搭建MFS分布式文件系统
说明:
架构规划
元数据服务器 mfs-master-1 172.16.100.2
备份服务器 mfs-metalogger 172.16.100.4
数据存储服务器 mfs-chunkserver-1 172.16.100.5
数据存储服务器 mfs-chunkserver-2 172.16.100.6
数据存储服务器 mfs-chunkserver-3 172.16.100.7
节点说明:
Master Server:
由于 Master Server 控制着整个 MooseFS 中的各个组件,并且负责对外提供服务,因此我们一定需要保证 Master Server 处于非常稳定的状态。比如,针对 Master Server采用双电源双路配置,多块磁盘使用RAID1或RAID10,进行冗余。前面也提到,Master Server 将所有访问的元数据信息都放在内存当中,提供用户访问。因此,当文件数量增加的时候,内存使用量也会增加。根据官方的数据,100万个文件chunk信息,大概需要300M的内存空间来进行。对于磁盘来讲,Master Server 对磁盘的使用量不是很大,这个取决于所用的文件和chunk块的数目(记录在主元数据文件)以及对文件作出操作的数量(记录在元数据更改日志),一般情况下 20G 可以用来存储信息 2500 万个文件变更记录长达50小时。由此看来,作为Master Server 内存量够大才是重中之重。
Metalogger Server:
在 MooseFS 的设计中,虽然 Metalogger Server 只是用来收集 MooseFS 主服务器的元数据(文件更改的信息的变化)的备份,对硬件的要求不应该高于主服务器的备份。但是需要注意的是,如果在Master Server没有做高可用的情况下,主服务器宕机之后,我们是需要启用Metalogger Server 来顶替主服务器的。因此,从这方面考虑,Metalogger Server 至少也是和 Master Server 的配置相同的,这点切记!
Chunk Server:
针对 Chunk Server,它是真正存储数据的载体。因此,我们对它的要求就简单粗暴了很多,只要保障硬盘的性能即可。如果是普通的业务,可以选择多块盘做RAID5即可,当然RAID0或RAID10都是可以的。需要注意的是,由于 MooseFS 的默认负载均衡算法的问题,我建议所有 Chunk Server 的磁盘大小保持一致。这样子,我们才能保证 MooseFS 在使用过程中,各个 Chunk 节点的数据使用量是大致一致的。否则,磁盘容量大的 Chunk Server 使用量会加大,而磁盘容量小的 Chunk Server 的使用量会变小。切记,切记!当然,如果公司员工有能力的话,也可以对 MooseFS 的负载均衡算法中每次对carry 变量的增加算法这一部分进行改进,来避免默认算法的缺点,使存储数据能够均衡分布在各个 Chunk Server 上。
部署:
部署 Master Server
1、参数介绍
--disable-mfsmaster # 不创建成管理服务器(用于纯节点的安装)
--disable-mfschunkserver # 不创建成数据存储chunkserver服务器
--disable-mfsmount # 不创建mfsmount和mfstools(如果用开发包安装,他们会被默认创建的)
--enable-mfsmount # 确定安装mfsmount和mfstools(如果
--prefix=DIRECTORY # 锁定安装目录(默认是/usr/local)
--sysconfdir=DIRECTORY # 选择配置文件目录(默认是${prefix}/etc))
--localstatedir=DIRECTORY # 选择变量数据目录(默认是${prefix}/var,MFS元数据被存储在mfs的子目录下,默认是${prefix}/var/mfs )
--with-default-user # 运行守护进程的用户,如果配置文件中没有设定用户,默认为nobody用户
--with-default-group # 运行守护进程的用户组,如果配置文件中没有设定用户组,默认为nogroup用户组
2、安装Master Server
yum install zlib-devel -y
groupadd -g 1000 mfs
useradd -u 1000 -g mfs -s /sbin/nologin mfs
cd /usr/local/src
wget http://moosefs.org/tl_files/mfscode/mfs-1.6.27-5.tar.gz
tar zxf mfs-1.6.27-5.tar.gz
cd mfs-1.6.27
./configure --prefix=/usr/local/mfs-1.6.27 --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
make
make install
ln -s /usr/local/mfs-1.6.27 /usr/local/mfs
官方文档:
https://moosefs.com/download/centosfedorarhel.html
版本6:
curl "http://ppa.moosefs.com/MooseFS-3-el6.repo" > /etc/yum.repos.d/MooseFS.repo
curl "http://ppa.moosefs.com/RPM-GPG-KEY-MooseFS" > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS
版本7:
curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo
--------------------------------------------------------------
安装Master Server
yum install moosefs-master moosefs-cli moosefs-cgi moosefs-cgiserv
/etc/init.d/moosefs-master start
查看日志,端口,防火墙开放9419 9420 9421端口
--------------------------------------------------------------
安装Chunkservers
yum install moosefs-chunkserver
安装Metaloggers
yum install moosefs-metalogger
安装Clients
yum install moosefs-client
开机自动挂载:
yum install fuse
vim /etc/fstab
mfsmount /mnt/mfs fuse defaults 0 0
mfsmaster.host.name: /mnt/mfs moosefs defaults 0 0
启动服务
service moosefs-master start
service moosefs-chunkserver start
写入文件测试