分布式存储MooseFS
MooseFS
简介
http://moosefs.org/
MFS特性
- 安装和配置简单方便
- 可靠性高(数据的多个拷贝被存储在多个不同的服务器上)
- 通过添加新的服务器或硬盘就可以实现容量的动态扩展
- 删除的数据可在一定时间内保留(类似windows里面的回收站机制,数据保留时间需要配置)
系统优点
系统缺点
系统应用场景
大规模高并发的线上数据存储及访问(大文件、小文件)
大规模的数据处理,如日志分析。HDFS
温馨提示:有很多应用不适合用分布式文件系统,我们不要为了用而用。
结构原理
每个角色的作用如下:
1、管理服务器,负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复多节点拷贝。
2、元数据日志服务器,负责备份master服务器的变化日志文件,文件类型为changelog_ml.*.mfs,以便于在master server出问题的时候接替其进行工作。
3、数据存储服务器,负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数据传输。
4、客户端,通过fuse内核接口挂接远程管理服务器上所管理的数据存储服务器,看起来共享的文件系统和本地unix文件系统使用一样的效果。
|
|
|
|
读流程
写流程
约定
规划
|
|
|
|
版本 |
moosefs-2.0.91-1.tar.gz |
配置全网hosts
cat >>/etc/hosts<<EOF
192.168.233.150 mfsmaster
192.168.233.111 mfsmaster.etiantian.org
192.168.233.154 mfsbackup
192.168.233.155 mfsdata01
192.168.233.156 mfsdata02
192.168.233.160 mfsdata03
192.168.233.157 mfsclient
EOF
Master安装
安装配置
下载安装包
[root@M-s tools]# wget http://ppa.moosefs.com/src/moosefs-2.0.91-1.tar.gz
或去这个页面找到相应版本
packs: https://sourceforge.net/projects/moosefs/files/
例:https://sourceforge.net/projects/moosefs/files/3.0.78/moosefs-packages-linux-3.0.78.tar.gz/download
创建mfs用户和组
useradd mfs -M -s /bin/nologin
编译安装
#yum install fuse fuse-devel -y
#yum install zlib-devel -y
tar xf moosefs-2.0.91-1.tar.gz
cd moosefs-2.0.91
./configure --prefix=/application/mfs-2.0.91 --with-default-user=mfs --with-default-group=mfs
make
make install
编译时如出现此错误:
checking for library containing pcap_lib_version... no
****** mfsnetdump disabled ******
* mfsnetdump needs pcap library *
*********************************
checking for FUSE... no
******************************** mfsmount disabled ********************************
* fuse library is too old or not installed - mfsmount needs version 2.6 or higher *
***********************************************************************************
checking for fuse_version in -lfuse... no
#yum install fuse fuse-devel -y
checking for zlibVersion in -lz... no
configure: error: zlib development library not found
#yum install zlib-devel -y
做软连接
将来升级时,重新做软连接即可
[root@M-s moosefs-2.0.91]# ln -s /application/mfs-2.0.91/ /application/mfs
检查的习惯必要丢
[root@M-s moosefs-2.0.91]# ll /application/|grep mfs
lrwxrwxrwx. 1 root root 24 11月 25 10:05 mfs -> /application/mfs-2.0.91/
drwxr-xr-x. 7 root root 4096 11月 25 10:03 mfs-2.0.91
主服务器目录结构
[root@M-s moosefs-2.0.91]# ll /application/mfs/
总用量 20
drwxr-xr-x. 2 root root 4096 11月 25 10:03 bin
drwxr-xr-x. 3 root root 4096 11月 25 10:03 etc
drwxr-xr-x. 2 root root 4096 11月 25 10:03 sbin
drwxr-xr-x. 4 root root 4096 11月 25 10:03 share
drwxr-xr-x. 3 root root 4096 11月 25 10:03 var
应用配置文件
[root@M-s mfs]# pwd
/application/mfs/etc/mfs
[root@M-s mfs]# ll
总用量 32
-rw-r--r--. 1 root root 3040 11月 25 10:03 mfschunkserver.cfg.dist
-rw-r--r--. 1 root root 4051 11月 25 10:03 mfsexports.cfg.dist
#exports==联想到nfs有木有,mfs是参考了nfs的配置方法。mfsexports.cfg即权限控制文件,挂载给谁,读写权限等
-rw-r--r--. 1 root root 946 11月 25 10:03 mfshdd.cfg.dist
-rw-r--r--. 1 root root 6868 11月 25 10:03 mfsmaster.cfg.dist
#主配置文件
-rw-r--r--. 1 root root 1953 11月 25 10:03 mfsmetalogger.cfg.dist
-rw-r--r--. 1 root root 402 11月 25 10:03 mfsmount.cfg.dist
-rw-r--r--. 1 root root 1052 11月 25 10:03 mfstopology.cfg.dist
去掉dist,使之生效
[root@M-s mfs]# cp mfsexports.cfg.dist mfsexports.cfg
[root@M-s mfs]# cp mfsmaster.cfg.dist mfsmaster.cfg
[root@M-s mfs]# echo "192.168.233.0/24 / rw,alldirs,mapall=mfs:mfs,pawwsword=123456" > mfsexports.cfg
本命令提示:
允许的地址
被挂载的目录 :根,表示所有的数据服务器
权限:
ro 只读模式共享
rw 读写的方式共享
alldirs 允许挂载任何指定的子目录
maproot 映射为root;mapall指定用户
password 指定客户端密码
配置vip,对外提供服务
提示:此处修改配置文件,希望重启后还生效;要是做负载均衡,将来做迁移的话用命令就可以,不要在配置文件中配置,即:
cd /etc/sysconfig/network-scripts
cp ifcfg-eth0 ifcfg-eth0:0
vi ifcfg-eth0:0
DEVICE=eth0:0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=192.168.233.111
NETMASK=255.255.255.0
DNS2=8.8.8.8
DNS1=219.146.0.130
USERCTL=no
PEERDNS=yes
IPV6INIT=no
使用IP命令添加:
原本配置有IP址,默认会添加辅助地址
ifconfig eth0:1 192.168.1.2 netmask 255.255.255.0
ip addr {add|del} IPADDR dev INTERFACE
例:
ip addr add 192.168.233.112/24 dev eth0:0 添加辅助ip
ip addr del 192.168.233.111/24 dev eth0:0 删除辅助ip
CentOS 7
nmcli connection modify eno16777736 +ipv4.addresses 172.16.100.1/24
启动主服务器mfs master
两种启动方式
[root@M-s ~]# mfsmaster start
open files limit has been set to: 16384
working directory: /var/lib/mfs#####这应当是我之前用yun安装的原因
lockfile created and locked
initializing mfsmaster modules ...
exports file has been loaded
topology file has been loaded
loading metadata ...
metadata 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@M-s mfs]# /application/mfs/sbin/mfsmaster start
open files limit has been set to: 4096
working directory: /application/mfs-2.0.91/var/mfs
lockfile created and locked
initializing mfsmaster modules ...
exports file has been loaded
mfstopology configuration file (/application/mfs-2.0.91/etc/mfstopology.cfg) not found - using defaults
loading metadata ...
can't find metadata.mfs - try using option '-a'
init: metadata manager failed !!!
error occurred during initialization – exiting
排错:
[root@M-s var]# cd /application/mfs/var/mfs
[root@M-s mfs]# ll
总用量 4
-rw-r--r--. 1 mfs mfs 8 11月 25 10:03 metadata.mfs.empty
[root@M-s mfs]# cp metadata.mfs.empty metadata.mfs
正常启动:
[root@M-s mfs]# /application/mfs/sbin/mfsmaster start
open files limit has been set to: 4096
working directory: /application/mfs-2.0.91/var/mfs
lockfile created and locked
initializing mfsmaster modules ...
exports file has been loaded
mfstopology configuration file (/application/mfs-2.0.91/etc/mfstopology.cfg) not found - using defaults
loading metadata ...
metadata 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
停止主服务器
看健康状态
提示:kill -9 mongodb mysql等都会出问题,可能会起不来
其他相关配置
环境变量
echo "export PATH=$PATH:/application/mfs/sbin:/application/mfs/bin" >> /etc/profile
. /etc/profile
提示:如果是yum安装的,不用此步骤。直接用
服务名+start/stop即可
开启主服务器图形监控
效果图
此处用的ie浏览器,用搜狗的时候回出图不全,其他的没有测试。
备份服务器BACKUP(metalogger)
安装
同master
配置
安装与主完全相同,区别在于配置文件。
#如果不是用域名来区别主机,这步省略即可
cd /application/mfs/etc/mfs/
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
sed -i 's@# MASTER_HOST = mfsmaster@MASTER_HOST = mfsmaster.etiantian.org@g' mfsmetalogger.cfg
远程检测master
[root@BK mfs]# nmap mfsmaster.etiantian.org -p 9419|grep open
9419/tcp open unknown
启动
[root@BK mfs]# /application/mfs/sbin/mfsmetalogger start
open files limit has been set to: 4096
working directory: /application/mfs/var/mfs
lockfile created and locked
initializing mfsmetalogger modules ...
mfsmetalogger daemon initialized properly
查看检测
已和master的9419建立连接
[root@BK mfs]# netstat -an | grep EST
tcp 0 52 192.168.233.154:52113 192.168.233.1:59385 ESTABLISHED
tcp 0 0 192.168.233.154:44573 192.168.233.111:9419 ESTABLISHED
[root@M-s local]# netstat -an | grep EST
tcp 0 0 192.168.233.150:52113 192.168.233.1:51728 ESTABLISHED
tcp 0 0 192.168.233.111:9419 192.168.233.154:44573 ESTABLISHED
数据服务器
安装
同master
配置mfschunkserver.cfg
cd /application/mfs/etc/mfs/
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg
修改配置文件
sed -i 's@# MASTER_HOST = mfsmaster@MASTER_HOST = mfsmaster.etiantian.org@g' mfschunkserver.cfg
分区
本例采用虚拟机添加硬盘及分区方便,故用的fdisk,生产中可以采用dd if 的方式
fdisk
mkfs.ext3 /dev/sdb1
tune2fs -c -1
挂载
mkdir /mfsdata
chown -R mfs.mfs /mfsdata
mount -t ext3 /dev/sdb1 /mfsdata
df -h | grep mfs
#[root@data01 mfs]# df -h | grep mfs #挂载好了
#/dev/sdb1 106M 5.6M 95M 6% /mfsdata
卸载
umount /mfsdata
加入开机自启
vi /etc/fstab
/dev/sdb1 /mfsdata ext3 defaults 0 0
查看一下
[root@data02 mfs]# mount -a #挂载
[root@data02 mfs]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 2.7G 15G 15% /
tmpfs 120M 0 120M 0% /dev/shm
/dev/sda1 190M 27M 153M 15% /boot
/dev/sdb1 106M 5.6M 95M 6% /mfsdata
空间分的太少了。。。。 - _- 满了 -_-
卸载以后
配置mfshdd.cfg
[root@data02 mfs]# echo "/mfsdata" > mfshdd.cfg
启动
[root@data02 mfs]# /application/mfs/sbin/mfschunkserver start
open files limit has been set to: 16384
working directory: /application/mfs-2.0.91/var/mfs
lockfile created and locked
setting glibc malloc arena max to 8
setting glibc malloc arena test to 1
initializing mfschunkserver modules ...
hdd space manager: path to scan: /mfsdata/
hdd space manager: start background hdd scanning (searching for available chunks)
main server module: listen on *:9422
no charts data file - initializing empty charts
mfschunkserver daemon initialized properly
[root@data02 mfs]# lsof -i :9422
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mfschunks 29994 mfs 11u IPv4 62727 0t0 TCP *:9422 (LISTEN)
[root@data02 mfs]# netstat -an | grep EST
tcp 0 0 192.168.233.156:3306 192.168.233.156:54672 ESTABLISHED
tcp 0 0 192.168.233.156:54672 192.168.233.156:3306 ESTABLISHED
tcp 0 52 192.168.233.156:52113 192.168.233.1:59380 ESTABLISHED
tcp 0 0 192.168.233.156:36061 192.168.233.111: ESTABLISHED
安装客户端
视频到008开头。
检查的几种方法
查本地进程及端口
[root@data02 mfs]# netstat -lntup | grep EST
[root@data02 mfs]# netstat -lntup | grep mfs
[root@data02 mfs]# lsof -i :9422
查和主服务器间的连接
[root@data02 mfs]# netstat -an | grep EST
查看主服务器的日志
[root@M-s ~]# tail /var/log/messages
Nov 25 17:27:28 zhang mfsmaster[26306]: csdb: generate new server id for (192.168.233.160:9422): 1
Nov 25 17:27:28 zhang mfsmaster[26306]: chunkserver register end (packet version: 6) - ip: 192.168.233.160 / port: 9422
Nov 25 17:27:42 zhang mfsmaster[26306]: csdb: server not found (192.168.233.155:9422,0), add it to database
Nov 25 17:27:42 zhang mfsmaster[26306]: chunkserver register begin (packet version: 6) - ip: 192.168.233.155 / port: 9422, usedspace: 0 (0.00 GiB), totalspace: 0 (0.00 GiB)
Nov 25 17:27:42 zhang mfsmaster[26306]: csdb: generate new server id for (192.168.233.155:9422): 2
Nov 25 17:27:42 zhang mfsmaster[26306]: chunkserver register end (packet version: 6) - ip: 192.168.233.155 / port: 9422
Nov 25 17:27:51 zhang mfsmaster[26306]: csdb: server not found (192.168.233.156:9422,0), add it to database
Nov 25 17:27:51 zhang mfsmaster[26306]: chunkserver register begin (packet version: 6) - ip: 192.168.233.156 / port: 9422, usedspace: 0 (0.00 GiB), totalspace: 0 (0.00 GiB)
Nov 25 17:27:51 zhang mfsmaster[26306]: csdb: generate new server id for (192.168.233.156:9422): 3
Nov 25 17:27:51 zhang mfsmaster[26306]: chunkserver register end (packet version: 6) - ip: 192.168.233.156 / port: 9422
批量安装
mfs master
1#install mfs master
yum install fuse fuse-devel -y
yum install zlib-devel -y
cd /home/zhang/tools
wget http://ppa.moosefs.com/src/moosefs-2.0.91-1.tar.gz
useradd mfs -M -s /bin/nologin
tar xf moosefs-2.0.91-1.tar.gz
cd moosefs-2.0.91
./configure --prefix=/application/mfs-2.0.91 --with-default-user=mfs --with-default-group=mfs
make
make install
ln -s /application/mfs-2.0.91/ /application/mfs
ll /application/|grep mfs
cd ../
2#config master
cd /application/mfs/etc/mfs
cp mfsmaster.cfg.dist mfsmaster.cfg
cp mfsexports.cfg.dist mfsexports.cfg
echo "192.168.233.0/24 / rw,alldirs,mapall=mfs:mfs,pawwsword=123456" > mfsexports.cfg
3#启动master
echo "export PATH=$PATH:/application/mfs/sbin:/application/mfs/bin" >> /etc/profile
. /etc/profile
mfsmaster start
mfs backup(metaloggers)
安装
同master
配置
cd /application/mfs/etc/mfs/
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
sed -i 's@# MASTER_HOST = mfsmaster@MASTER_HOST = mfsmaster.etiantian.org@g' mfsmetalogger.cfg
dataserver(chunkserver)
其他
MfsMaster Install:
yum install -y fuse-devel zlib-devel
useradd mfs -s /sbin/nologin
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmount --disable-mfschunkserver
make && make install
Mfschunk Install:
yum install -y fuse-devel zlib-devel
useradd mfs -s /sbin/nologin
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfsmount
make && make install
MfsMount Install:
yum install -y fuse-devel zlib-devel
useradd mfs -s /sbin/nologin
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver
make && make install
分布式存储MooseFS的更多相关文章
- day30 NFS服务器概述
02. NFS存储服务概念介绍 NFS是Network File System的缩写,中文意思是网络文件共享系统, 它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录 存储服 ...
- Centos下MooseFS(MFS)分布式存储共享环境部署记录
分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连,分布式文件系统的实际基于客户机/服务器模式.目前 ...
- MooseFS 分布式存储
一.MooseFS介绍 MooseFS主要由管理服务器(master).元日志服务器(Metalogger).数据存储服务器(chunkserver)构成. 管理服务器:主要作用是管理数据存储服务器, ...
- GlusterFS分布式存储学习笔记
分布式文件系统 分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源并不直接与本地节点相连,而是分布于计算网络中的一个或者多个节点的计算机上.目前意义上的分布 ...
- FastDFS分布式存储
分布式存储分类 通用分布式存储:mogilefs, fastdfs, ...(无文件系统接口, 通过API访问) 专用分布式存储:即分布式文件系统, moosefs, ...(有文件系统接口) GFS ...
- mfs分布式文件系统,分布式存储,高可用(pacemaker+corosync+pcs),磁盘共享(iscsi),fence解决脑裂问题
一.MFS概述 MooseFS是一个分布式存储的框架,其具有如下特性:(1)通用文件系统,不需要修改上层应用就可以使用(那些需要专门api的dfs很麻烦!).(2)可以在线扩容,体系架构可伸缩性极强. ...
- 全能成熟稳定开源分布式存储Ceph破冰之旅-上
@ 目录 概述 定义 传统存储方式及问题 优势 生产遇到问题 架构 总体架构 组成部分 CRUSH算法 数据读写过程 CLUSTER MAP 部署 部署建议 部署版本 部署方式 Cephadm部署 前 ...
- 分布式存储 FastDFS-5.0.5线上搭建
前言: 由于公司项目需要,最近开始学习一下分布式存储相关知识,确定使用FastDFS这个开源工具.学习之初,自己利用VMware虚拟机搭建了一个5台机器的集群,摸清了安装过程中可能出现的问 ...
- 分布式存储 CentOS6.5虚拟机环境搭建FastDFS-5.0.5集群
前言: 由于公司项目需要,最近开始学习一下分布式存储相关知识,确定使用FastDFS这个开源工具.利用周末的时间在虚拟机上搭建了分布式存储系统,在搭建过程中,发现网上的资料说的并不是很全, ...
随机推荐
- python(5):scipy之numpy介绍
python 的scipy 下面的三大库: numpy, matplotlib, pandas scipy 下面还有linalg 等 scipy 中的数据结构主要有三种: ndarray(n维数组), ...
- Nginx详解六:Nginx基础篇之Nginx日志
1.Nginx日志类型 error.log:记录Nginx处理http请求的错误的状态,以及Nginx服务本身服务运行的错误的状态 access_log:记录通过Nginx的http请求的访问状态,用 ...
- JS:事件循环机制、调用栈以及任务队列
点击查看原文 写在前面 js里的事件循环机制十分有趣.从很多面试题也可以看出来,考察简单的setTimeout也就是考察这个机制的. 在之前,我只是简单地认为由于函数执行很快,setTimeout执行 ...
- vue @click 使用三目运算(实现动态更换绑定的函数)
转载:https://www.jianshu.com/p/ea4471c9f333 @click 错误写法 @click="dialogStatus=='create'?createData ...
- Python元组(tuple)
元组(tuple)是Python中另一个重要的序列结构,与列表类型,也是由一系列按特定顺序排列的元素组成,但是他是不可变序列.在形式上元组的所有元素都放在"()"中,两个元素使用& ...
- Eclipse编写ExtJS5卡死问题
本篇以eclipse为例,导入后在编译时很容易出现eclipse的卡死现象,这主要是js文件的校验引起的. 我们可通过如下方法进行配置: 打开该项目的.project文件,删除如下配置即可: < ...
- 步步为营-81-HttpModule(再谈Session)
说明:session用于记录数据信息并存放在服务器内存中,但是存在一些问题.例如当使用服务器集群是会出现session丢失等情况.虽然微软提供了一些解决方案(Session进程外存储,或者存到数据库中 ...
- windows server 2012 R2 远程桌面授权模式尚未配置
windows server 2012 R2 远程桌面授权模式尚未配置,远程桌面服务将在120天内停止工作.如何破解这个宽限期,目前企业7位协议号码均不包含2012 R2以上授权. 那么只能蛋疼的“破 ...
- 关于 java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.String
今天遇到了这个异常,其实是自己经验欠缺所致.我是通过mybatis查询到数据库传过来的主键,是一个32位的char类型. 代码: //查询总账表的该组织总账记录,包括该条记录的主键id.账户余额Dzz ...
- sqlserver数据库不能重命名报错5030
在学习asp.net的时候使用mssql'经常会出现这种错误,数据库不能重名名5030的错误,其实很简单原因就是有应用程序正在占用这个连接,使用这样一行命令就可以查询出正在占用的连接 use mast ...