最近,为少年时的好友公司写一个简单的文件管理系统,让他的公司可以方便管理各种文件,通过最初的技术选型,决定用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
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.至此,大功告成!