最近,为少年时的好友公司写一个简单的文件管理系统,让他的公司可以方便管理各种文件,通过最初的技术选型,决定用moosefs.uf
1.安装fuse
ubuntu 16.04的内核已包括了fuse的核心功能,但是要和客户端打交道,还要安装libfuse;个人尝试了半天,在github的源代码那儿下载了fuse-3.1.0,按照其README又是下载meson又是下载ninja,还是安装不上,最后好象是坏在ninja install这一步。最后较顺利的安装手段是:
apt-get install libfuse-dev
2.安装moosefs
(1)下载moose
git clone https://github.com/moosefs/moosefs.git
(2)安装
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs --enable-mfsmount
make
make install
备注:在做make的时候可能会有错误,因为需要安装automake才可以进行编译的。
apt-get install automake
3.配置moosefs
(1)创建并挂接文件系统
1)创建目录
mkdir –p /storage/mfschunks
2)创建镜像文件mfschunks1
dd if=/dev/zero of=/storage/mfschunks/mfschunks1 bs=1024 count=1 seek=$((2*1024*1024-1))
3)创建文件系统
mkfs -t ext3 /storage/mfschunks/mfschunks1
4)创建挂接点
mkdir -p /mnt/mfschunks1
5)挂接文件系统
mount -t ext3 -o loop /storage/mfschunks/mfschunks1 /mnt/mfschunks1
按照(1-5)步骤继续挂接第二个文件系统mfschunks2
(2)文件权限设置
chown -R mfs:mfs /mnt/mfschunks1
chown -R mfs:mfs /mnt/mfschunks2
(3)修改配置文件
1)cd /etc
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfsexports.cfg.dist mfsexports.cfg
cp mfshdd.cfg.dist mfshdd.cfg
cp mfsmaster.cfg.dist mfsmaster.cfg
2)vi mfsexport.cfg
192.168.1.0/24 / rw,alldirs,maproot=0
3)vi mfshdd.cfg
/mnt/mfschunks1
/mnt/mfschunks2
4)cp /var/lib/mfs/metdata.mfs.empty /var/lib/mfs/metadata.mfs
5)echo 192.168.1.6 mfsmaster >> /etc/hosts
(4)启动
/usr/sbin/mfsmaster start
/usr/sbin/mfscgiserv
/usr/sbin/mfschunkserver start
此时可在http://192.168.1.6:9425/中查看运行状态
(5)挂接MooseFS文件系统到挂接点
1)建立挂接点
mkdir -p /mnt/mfs
2)挂接操作
/usr/bin/mfsmount /mnt/mfs -H mfsmaster
3)查看挂接情况
df -h | grep mfs
/storage/mfschunks/mfschunks1 2.0G 69M 1.9G 4% /mnt/mfschunks1
/storage/mfschunks/mfschunks2 2.0G 69M 1.9G 4% /mnt/mfschunks2
mfs#mfsmaster:9421 3.2G 0 3.2G 0% /mnt/mfs
(6)在mfs挂载点下创建目录,以一个副本的方式保存文件
mkdir -p /mnt/mfs/folder1
mfssetgoal -r 1 /mnt/mfs/folder1
若设置副本数为2,则将1改成2
mkdir -p /mnt/mfs/folder2
mfssetgoal -r 2 /mnt/mfs/folder2
拷贝同一个文件到两个目录:
cp /usr/src/mfs-1.6.15.tar.gz /mnt/mfs/folder1
cp /usr/src/mfs-1.6.15.tar.gz /mnt/mfs/folder2
4.至此,大功告成!