MFS概述
MFS是一种分布式文件系统,它把数据分散存放在多个物理服务器上,前面只放置一台负责“调度”元数据服务器,最终呈现给用户的则是一个统一的资源。
优点:
相对于集中式文件系统来说,分布式系统拥有更好的扩展性、稳定性、数据的安全性。
缺点:
master只能做单点,会出现单点故障
常规特征
对标准的文件操作来说,mfs用起来跟其它的类unix系统类似:
1.分层次的结构(目录树)
2.存储POSIX文件属性(权限、最后访问和修改时间)
3.支持特殊文件(块和字符设备、管道以及套接字)
4.符号连接和硬连接
5.对文件系统的访问可以通过IP地址和(或者)密码进行限制
独有特征
1.高可靠(数据的多个拷贝被存储在不同的计算机上)
2.通过附加新的计算机或者硬盘可以实现容量的动态扩展
3.删除的文件可以根据一个可配置的时间周期进行保留(一个文件系统级别的回收站)
4.不受访问和写入影响的文件连贯快照
体系机构
1.管理服务器(master server)
一台管理整个文件系统的独立主机,存储着每个文件的元数据(文件的大小、属性、位置信息,包括所有非常规文件的所有信息,例如目录、套接字、管道以及设备文件)
2.数据服务器群(chunk servers)
任意数目的商用服务器,用来存储文件数据并在彼此之间同步(如果某个文件有超过一个备份的话)
3.元数据备份服务器(metalogger server)
任意数量的服务器,用来存储元数据
变化日志并周期性下载主要元数据文件,以便用于管理服务器意外停止时好接替其位置。
4.访问mfs的客户端
5.任意数量的主机,可以通过mfsmount进程与管理服务器(接收和更改元数据)和数据服务器(改变实际文件数据)进行交流。
架构及实现原理
1.MFS文件系统架构包括以下四种角色:
a.管理服务器 managing server (Master):负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝。
b.元数据日志服务器 Metalogger server(Metalogger):负责备份Master服务器的变化日志文件,文件类型为changelog_ml.*.mfs,以便于在master server出问题的时候接替其进行工作。
c.数据存储服务器 (chunkservers):负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数据传输
d.客户机挂载使用client computers:通过fuse内核接口挂接远程管理服务器上所管理的数据存储服务器,看起来共享的文件系统和本地 unix 文件系统使用一样的效果。
2.实现原理
(1) MFS 写入数据过程:
? 客户端向元数据服务器发送写入请求。
? 元数据服务器与Chunk Server进行交互(只有当所需的分块Chunks不存在的时候才进行这个交互):
? 元数据服务器只是在某些服务器创建新的分块chunks。
? Chunk Servers告知元数据服务器,步骤a已经操作成功。
? 元数据服务器告知客户端,你可以在哪个Chunk Server的哪些Chunks写入数据。
? 客户端向指定的Chunk Server写入数据
? Chunk Server与其他Chunk Server进行数据同步。
? Chunk Server之间同步成功。
? Chunk Server告知客户端数据写入成功。(2 )MFS 读取数据数据过程:
? 客户端向元数据服务器发出读请求。
? 元数据服务器把所需数据存放的位置(Chunk Server的IP地址和chunk编号)告知客户端。
? 客户端向已知的Chunk Server请求发送数据。
? Chunk Server向客户端发送数据
实验案例:
使用5台服务器模拟搭建MFS文件系统,拓扑图如下
实验环境
软件包链接:https://pan.baidu.com/s/11_BcT5ahW01FAx73WT5q1w
密码:ibuy
搭建master sever
1.关闭防火墙
systemctl stop firewalld.service
setenforce 0
2.解压软件包
yum install -y gcc gcc-c++ zlib-devel #安装环境工具包
useradd mfs -s /sbin/nologin #添加进程用户
tar zvxf mfs-1.6.27-5.tar.gz -C /opt #解压软件包
3.编译安装
cd /opt/mfs-1.6.27/ #切换到此目录下
./configure \
--prefix=/usr/local/mfs \ #指定安装目录
--with-default-user=mfs \ #指定运行用户
--with-default-group=mfs \ #指定运行组
--disable-mfschunkserver \ #禁用mfs的chunk功能
--disable-mfsmount #禁用mfs的mount功能
make && make install #编译安装
4.复制文件
cd /usr/local/mfs/etc/mfs
cp mfsmaster.cfg.dist mfsmaster.cfg #主配置文件
cp mfsexports.cfg.dist mfsexports.cfg #挂载以及权限设定文件
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg #日志文件
cd /usr/local/mfs/var/mfs
cp metadata.mfs.empty metadata.mfs #master元数据文件
5.创建软连接
ln -s /usr/local/mfs/sbin/* /usr/local/bin/
6.开启服务
mfsmaster start #开启mfs
ps -ef | grep mfs # 查看启动端口
/usr/local/mfs/sbin/mfsmaster -s #停止
搭建logger server服务
1.解压软件包
useradd mfs -s /sbin/nologin #创建进程用户
tar zvxf mfs-1.6.27-5.tar.gz -C /opt #解压软件包
2.编译安装
cd /opt/mfs-1.6.27/
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfschunkserver \ #禁用mfs的chunk功能
--disable-mfsmount #禁用mfs的mount功能
make && make install
3.复制文件
cd /usr/local/mfs/etc/mfs
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
4.修改配置文件
vim mfsmetalogger.cfg
#约15行
MASTER_HOST = 192.168.65.159 #指向master的IP地址
5.开启服务
/usr/local/mfs/sbin/mfsmetalogger start
ps -ef | grep mfs #查看端口
/usr/local/mfs/sbin/mfsmetalogger -s 停止
搭建chunkserver1 (2配置相同)
1.环境包
yum install -y gcc gcc-c++ zlib-devel #安装工具包
useradd mfs -s /sbin/nologin #创建进程用户
2.解压软件包
tar zvxf mfs-1.6.27-5.tar.gz -C /opt
3.编译安装
cd /opt/mfs-1.6.27/
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfsmaster \ #禁用mfs的master功能
--disable-mfsmount #禁用mfs的mount功能
make && make install #编译安装
4.复制文件
cd /usr/local/mfs/etc/mfs
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg
5.修改配置文件
vim mfschunkserver.cfg #约12行
MASTER_HOST = 192.168.65.159 #指向master的IP
vim mfshdd.cfg
/data #添加目录
6.创建mfs分区目录
mkdir /data #创建mfs分区目录
chown -R mfs.mfs /data/ #赋予权限
7.启动服务
/usr/local/mfs/sbin/mfschunkserver start
搭建client
1.解压fuse软件包
yum install -y gcc gcc-c++ zlib-devel
tar zvxf fuse-2.9.2.tar.gz -C /opt
2.编译安装
cd /opt/fuse-2.9.2/
./configure
make && make install
3.添加环境变量
vim /etc/profile
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKGCONFIG
PATH
source /etc/profile
4.解压mfs软件包
tar zvxf mfs-1.6.27-5.tar.gz -C /opt
useradd -s /sbin/nologin mfs
5.编译安装
cd /opt/mfs-1.6.27/
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfsmaster \
--disable-mfschunkserver \ #禁用mfs的chunk功能
--enable-mfsmount # 开启mfs的mount功能
make && make install #编译安装
6.挂载mfs文件系统
cd /usr/local/mfs/etc/mfs
mkdir /opt/mfs #创建挂载点
modprobe fuse #加载fuse模块到内核
/usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.65.159 #挂载MFS
7.优化客户端
vim /etc/profile
export PATH=/usr/local/mfs/bin:$PATH
source /etc/profile #刷新环境变量使其生效
mfsgetgoal -r /opt/mfs #复制文本
8.启动监控
/usr/local/mfs/sbin/mfscgiserv
netstat -ntap | grep 9425
9.客户端访问 http://192.168.65.159:9425
原文地址:http://blog.51cto.com/13760351/2292344