安装软件:yum  install gcc make rpm-build zlib-devel fuse-devel -y
下载软件:mfs-1.6.26.tar.gz
rpbbuild -tb mfs-1.6.26.tar.gz (需要zlib-devel,fuse-devel的支持)
cd rpmbuild/RPMSx86_64
编译出5个rpm包,cgi与master是master端运行的,chunkserver是存储端运行的,client是客户端运行的。
mfs-cgi-1.6.26-1.x86_64.rpm          mfs-master-1.6.26-1.x86_64.rpm
mfs-chunkserver-1.6.26-1.x86_64.rpm  mfs-metalogger-1.6.26-1.x86_64.rpm
mfs-client-1.6.26-1.x86_64.rpm
master端安装:
rpm -ivh mfs-cgi-1.6.26-1.x86_64.rpm mfs-master-1.6.26-1.x86_64.rpm
rpm -ql mfs-master  查看安装路径
cat /etc/mfsmaster.cfg   默认配置
ll -d /var/lib/mfs/      默认这个目录的属主和属组是root
chown -R nobody /var/lib/mfs/
cd /var/lib/mfs
cp -p metadata.mfs.empty metadata.mfs #当master开启时,metadata.mfs文件就被改成metadata.mfs.bak,当master正常关闭时,metadata.mfs.bak又被改成metadata.mfs,这样可以正常启动。但当不正常关闭时,metadata.mfs.bak不会被改成metadata.mfs,此时开启的时候就会报错。需要手动执行 mfsmetarestore -a ,去修复mfsmaster,修复后就可以正常启动了。
cd /etc/
cp mfsmaster.cfg.dist mfsmaster.cfg
cp mfsexports.cfg.dist mfsexports.cfg
vim mfsexports.cfg    控制客户端的连接
在第二行改,192.168.0.0/24   /    rw,alldirs,maproot=0
vim /etc/hosts
192.168.0.189    mfsmaster
ll /var/lib/mfs   多了一个session.mfs 文件
cd /usr/share/mfscgi/
chmod +x mfs.cgi
mfsmaster  start
用浏览器访问:192.168.0.84:9425 ,到此master端安装完毕。
如果没有9425端口的话,执行mfscgiserv  就好了

下面配置存储端:
将master端编译出的rpm包拷贝到存储端,
scp mfs-chunkserver-1.6.26-1.x86_64.rpm 192.168.0.98:
存储端:
rpm -ivh mfs-chunkserver-1.6.26-1.x86_64.rpm
rpm -ql mfs-chunkserver
cd /etc
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg
vim  mfshdd.cfg
/mnt/mfschunks1   在最后一行添加,添加存储目录
vim /etc/hosts
192.168.0.84    mfsmaster
创建一块虚拟磁盘,并共享出去,配置成lvs
mkdir /mnt/mfschunks1
mount /dev/vg1/data1  /mnt/mfschunks1/
chown nobody:nobody  /mnt/mfschunks1/
mkdir  /var/lib/mfs
chown nobody:nobody  /var/lib/mfs
mfschunkserver  start

此时,则master端刷新浏览器,点击Disk,会出现共享的磁盘
然后lvextentd 扩展lvm,会发现共享的存储增加了。

如果有多个存储端,则配置和上面的步骤类似。

下面安装client端:
scp mfs-client-1.6.26-1.x86_64.rpm 192.168.0.82:
client端:
yum localinstall mfs-client-1.6.26-1.x86_64.rpm --nogpgcheck -y
rpm -ql mfs-client
cd /etc
cp mfsmount.cfg.dist  mfsmount.cfg
vim mfsmount.cfg
mfsmaster=mfsmaster   将前面的#去掉
/mnt/mfs              将前面的#去掉
vim /etc/hosts
192.168.0.84    mfsmaster
mkdir /mnt/mfs
mfsmount
df -h    发现挂载/mnt/mfs
cd  /mnt/mfs
mkdir  dir1
mkdir  dir2
mfsgetgoal  dir1/  显示dir1: 1,发现只会写入一份
mfsgetgoal  dir2/
mfssetgoal  -r 2  dir2/   修改,使写入的内容保存两份(在两个存储端)
mfsgetgoal  dir2/   此时,显示dir2: 2
cp  /etc/passwd  dir1/
cp  /etc/passwd  dir2/
mfsfileinfo  dir1/passwd
mfsfileinfo  dir2/passwd    发现写了两份
或者mfscheckfile  dir2/passwd  查看写了两份
mfscheckfile  dir1/passwd
此时在master端,刷新浏览器,点击Mount 会有挂载出现
此时在存储端:mfschunkserver  stop
master端刷新,会少一个存储
在client端:mfsfileinfo  dir1/passwd  发现没有存储
如果 cat dir1/passwd   会卡住
在将刚才stop的存储start
在client端:mfsfileinfo  dir1/passwd  此时就好了
rm  dir1/passwd  -f    
cd
mfsgettrashtime  /mnt/mfs/dir1   会发现回收站缓存一天时间(86400s)
mkdir  /mnt/mfsmeta
mfsmount -m  /mnt/mfsmeta/  -H  mfsmaster
cd /mnt/mfsmeta
ls   会有reserved 和trash 两个目录
cd trash
ll    会有undel目录和一个文件
cat  那个文件     显示dir1/passwd
mv  那个文件    undel
ll     此时就没有那个文件了
cd  /mnt/mfs
ll dir1/    就会出现原先删除的文件