目录
* 分布式原理
* MFS原理
* 案例实施
* 总结归纳
分布式原理
分布式文件系统是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。简单来说,就是把分散的共享文件夹,集合到一个虚拟文件夹内,客户只要打开这个虚拟文件夹,就可以访问到所有连接到虚拟文件夹内的共享文件。
MFS原理
MFS是一个具有容错性的网络分布式文件系统,它把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源。
(1)MFS文件系统
- 元数据服务器(master)---在整个体系中负责管理文件系统,维护元数据。
- 元数据日志服务器(metalogger)---备份master服务器的日志变化,数据丢失时,可从日志文件中恢复。
- 数据存储服务器(chunk server)---真正存储数据的服务器。存储时把文件分块保存,并在数据服务器间进行复制。
- 客户端(client)---可以像挂载NFS一样挂载MFS文件系统
(2)读取数据处理过程
(3)写入数据处理过程
案例环境
主机 | 操作系统 | IP地址 | 主要软件 |
---|---|---|---|
Master Server | CentOS-7-x86_64 | 192.168.37.128 | mfs-1.6.27-5.tar.gz |
Metalogger Server | CentOS-7-x86_64 | 192.168.37.130 | mfs-1.6.27-5.tar.gz |
Chunk Server1 | CentOS-7-x86_64 | 192.168.37.131 | mfs-1.6.27-5.tar.gz |
Chunk Server2 | CentOS-7-x86_64 | 192.168.37.132 | mfs-1.6.27-5.tar.gz |
Client | CentOS-7-x86_64 | 192.168.37.133 | mfs-1.6.27-5.tar.gz;fuse-2.9.2.tar.gz |
源码包:链接:https://pan.baidu.com/s/1UdorWep8OzdlL7CPbgyzJQ 提取码:62nv
案例实施
一、搭建Master Server
1、下载源码包及安装环境包
yum install gcc gcc-c++ zlib-devel -y
systemctl stop firewalld.service
setenforce 0
2、创建用户
useradd -s /sbin/nologin mfs
3、安装mfs
tar zxvf mfs-1.6.27-5.tar.gz -C /opt
cd /opt/mfs-1.6.27
./configure --prefix=/usr/local/mfs \ #工作目录
--with-default-user=mfs \ #运行masterserver的用户
--with-default-group=mfs \ #运行masterserver的组
--disable-mfschunkserver \ #关闭节点服务
--disable-mfsmount #关闭客户端服务
make && make install
4、复制配置文件
cd /usr/local/mfs/etc/mfs
cp mfsexports.cfg.dist mfsexports.cfg #被挂载目录及权限配置文件
cp mfsmaster.cfg.dist mfsmaster.cfg #主配置文件
cp mfstopology.cfg.dist mfstopology.cfg #拓扑架构感知
5、配置文件(此处无任何操作,主要对配置文件进行简介)
mfsmaster.cfg
#WORKING_ USER = mfs #运行master server 的用户
#WORKING_ GROUP = mfs #运行master server 的组
#SYSLOG_IDENT = mfsmaster #master server 在syslog 中的标识,说明是由master serve 产生的
#LOCK_MEMORY = 0 #是否执行mlockall()以避免mfsmaster 进程溢出(默认为0)
#NICE_LEVEL = -19 #运行的优先级(如果可以默认是-19; 注意: 进程必须是用root 启动)
#EXPORTS_FILENAME = /usr/local/mfs/etc/mfsexports.cfg #被挂接目录及其权限控制文件的存放位置
#DATA_PATH = /usr/local/mfs/var/mfs #数据存放路径,此目录下大致有三类文件,changelog,sessions 和stats;
#BACK_LOGS = 50 #metadata 的改变log 文件数目(默认是50)
#REPLICATIONS_ DELAY_INIT = 300 #延迟复制的时间(默认是300s)
#REPLICATIONS_ DELAY_DISCONNECT = 3600 #chunkserver 断开的复制延迟(默认是3600)
#MATOML_LISTEN_HOST = * #metalogger 监听的IP 地址(默认是*,代表任何IP)
#MATOML_LISTEN_PORT = 9419 #metalogger 监听的端口地址(默认是9419)
#MATOCS_LISTEN_ HOST = * #用于chunkserver 连接的IP 地址(默认是*,代表任何IP
#MATOCS_LISTEN_PORT = 9420 #用于chunkserver 连接的端口地址(默认是9420)
#MATOCU_LISTEN_HOST = * #用于客户端挂接连接的IP 地址(默认是*,代表任何IP)
#MATOCU_LISTEN_PORT = 9421 #用于客户端挂接连接的端口地址(默认是9421)
#CHUNKS_LOOP_TIME = 300 #chunks 的回环频率(默认是:300 秒)
#CHUNKS_DEL_LIMIT = 100
#CHUNKS_WRITE_REP_LIMIT = 1 #在一个循环里复制到一个chunkserver 的最大chunk 数目(默认是1)
#CHUNKS_READ_REP_LIMIT = 5 #在一个循环里从一个chunkserver 复制的最大chunk 数目(默认是5)
#REJECT_OLD_ CLIENTS = 0 #弹出低于1.6.0 的客户端挂接(0 或1,默认是0)
mfsexports.cfg
#Allow everything but "meta".
* / rw,alldirs,admin,maproot=0:0
#Allow "meta".
* . rw
每个条目被分为三部分:客户端IP 允许挂载的目录 客户端拥有的权限
alldirs:所有子目录都支持挂载
maproot:映射为root,还是指定的用户
6、启动服务
/usr/local/mfs/sbin/mfsmaster start
netstat -ntap | grep mfsmaster
#/usr/local/mfs/sbin/mfsmaster -s //停止
二、搭建Metalogger Server
1、下载源码包及安装环境包
yum install gcc gcc-c++ zlib-devel -y
systemctl stop firewalld.service
setenforce 0
2、创建用户
useradd -s /sbin/nologin mfs
3、安装mfs
tar zxvf mfs-1.6.27-5.tar.gz -C /opt
cd /opt/mfs-1.6.27
./configure --prefix=/usr/local/mfs \ #工作目录
--with-default-user=mfs \ #运行masterserver的用户
--with-default-group=mfs \ #运行masterserver的组
--disable-mfschunkserver \ #关闭节点服务
--disable-mfsmount #关闭客户端服务
make && make install
4、复制配置文件
cd /usr/local/mfs/etc/mfs
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
5、修改配置文件
vim mfsmetalogger.cfg
MASTER_HOST = 192.168.37.128 #指向master server
6、开启服务
/usr/local/mfs/sbin/mfsmetalogger start
netstat -ntap | grep mfsmetalogger
三、搭建Chunk Server
1、下载源码包及安装环境包
yum install gcc gcc-c++ zlib-devel -y
systemctl stop firewalld.service
setenforce 0
2、创建用户
useradd -s /sbin/nologin mfs
3、安装mfs
tar zxvf mfs-1.6.27-5.tar.gz -C /opt
cd /opt/mfs-1.6.27
./configure --prefix=/usr/local/mfs \ #工作目录
--with-default-user=mfs \ #运行masterserver的用户
--with-default-group=mfs \ #运行masterserver的组
--disable-mfsmaster \ #关闭主服务
--disable-mfsmount #关闭客户端服务
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
MASTER_HOST = 192.168.37.128 ** #指向master server**
vim mfshdd.cfg #末行插入
/data
mkdir /data
chown -R mfs.mfs /usr/local/mfs #权限设置
6、开启服务
/usr/local/mfs/sbin/mfschunkserver start
netstat -ntap | grep mfschunkserver
四、客户端
1、安装环境包
yum install gcc gcc-c++ zlib-devel -y
systemctl stop firewalld.service
setenforce 0
2、安装fuse插件(mfs客户端依赖于fuse)
tar zxvf fuse-2.9.2.tar.gz -C /opt #加载内核的小插件
cd /opt/fuse-2.9.2
./configure
make && make install
3、设置环境变量
vim /etc/profile #末行插入环境变量
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
#pkg-config 是通过库提供的一个 .pc 文件获得库的各种必要信息的,这些信息可以通过 pkg-config 提供的参数单独提取出来直接供编译器和连接器使用。
source /etc/profile
4、安装mfs客户端
useradd -s /sbin/nologin mfs #创建用户
tar zxvf mfs-1.6.27 -C /opt
cd /opt/mfs-1.6.27
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver --enable-mfsmount
make && make install
5、挂载mfs文件系统
mkdir /opt/mfs
modprobe fuse #加载fuse模块到内核
/usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.37.128
df -h
6、优化mfs客户端常用操作
#mfs安装后生成/usr/local/mfs/bin目录,为方便使用其目录下的命名,可以加入到环境变量
vim /etc/profile
export PATH=/usr/local/mfs/bin:$PATH #识别mfs中所有命令
source /etc/profile
7、常用操作
mfsgetgoal -r /opt/mfs #复制文本
mfsgetgoal test #查询复制份数
8、开启监控
#在master server开启监控,端口为9425
/usr/local/mfs/sbin/mfscgiserv
netstat -ntap | grep 9425
9、客户端测试
客户端通过浏览器访问 http://192.168.37.128:9425
监控界面各部分含义如下:
- Info:显示MFS基本信息。
- Servers:列出现有的Chunk Server。
- Disks:列出现有的Chunk Server的硬盘信息。
- Exports:列出可被挂载的目录。
- Mounts:列出被挂载的目录。
- Operations:显示正在执行的操作。
- Resources:列出当前储存信息。
- Quotas:列出当前配额信息。
- Master Charts:显示Master Server操作情况。
- Server Charts:显示Chunk Server操作情况、数据传输及系统状态。
总结归纳
1、本实验中master只能做单点,会出现单点故障。
2、要保证Master Server的高可用,需要增加一台master,做群集服务,本章主要讲述其原理及操作,后续会有群集的博文更新。
3、master发生故障时,可以从metalogger中恢复。
4、希望与大家一起学习,不断成长!
原文地址:http://blog.51cto.com/13784264/2288364