阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Moosefs分布式文件系统的配置

197次阅读
没有评论

共计 7871 个字符,预计需要花费 20 分钟才能阅读完成。

Moosefs 分布式文件系统,所需主机:
管理服务器 managing server (master  vm3)
元数据日志服务器 Metalogger server(Metalogger)(vm6)
数据存储服务器 data servers (chunkservers)(两台 vm5 vm6 做负载均衡)
客户机挂载使用 client computers

1. 生成 rpm, 便于部署:
[root@vm3~]# yum install -y fuse-devel zlib-devel gcc rpm-build.x86_64
[root@vm3~]# mv mfs-1.6.27-5.tar.gz mfs-1.6.27.tar.gz
[root@vm3~]# rpmbuild -tb mfs-1.6.27-5.tar.gz
[root@vm3~]# cd rpmbuild/
[root@vm3rpmbuild]# ls
BUILD  BUILDROOT  RPMS  SOURCES  SPECS  SRPMS
[root@vm3rpmbuild]# cd RPMS/x86_64/
[root@vm3x86_64]# ls
mfs-cgi-1.6.27-4.x86_64.rpm          mfs-client-1.6.27-4.x86_64.rpm
mfs-cgiserv-1.6.27-4.x86_64.rpm      mfs-master-1.6.27-4.x86_64.rpm
mfs-chunkserver-1.6.27-4.x86_64.rpm  mfs-metalogger-1.6.27-4.x86_64.rpm

2. 主控服务器 Master server 安装:
[root@vm3x86_64]# rpm -ivh mfs-master-1.6.27-4.x86_64.rpm mfs-cgi*
Preparing…                ########################################### [100%]
  1:mfs-cgi                ########################################### [33%]
  2:mfs-cgiserv            ########################################### [67%]
  3:mfs-master            ########################################### [100%]
[root@vm3x86_64]# cd /etc/mfs/
[root@vm3mfs]# ls
mfsexports.cfg.dist  mfsmaster.cfg.dist  mfstopology.cfg.dist
[root@vm3mfs]# cp mfsexports.cfg.dist mfsexports.cfg
[root@vm3mfs]# cp mfsmaster.cfg.dist mfsmaster.cfg
[root@vm3mfs]# cp mfstopology.cfg.dist mfstopology.cfg
[root@vm3mfs]# vim mfsexports.cfg
  # Allow “meta”.
  172.25.254.0/24                        .      rw  允许 172.25.254. 网段可写
[root@vm3mfs]# vim /etc/hosts           
 172.25.254.3 vm3.example.com mfsmaster
[root@vm3mfs]# cd /var/lib/mfs/
[root@vm3mfs]# cp metadata.mfs.empty metadata.mfs
[root@vm3mfs]# chown nobody /var/lib/mfs/ -R
[root@vm3mfs]# mfsmaster start
[root@vm3mfs]# mfsmaster test
mfsmaster pid: 6643
[root@vm3mfs]# cd /usr/share/mfscgi/
[root@vm3mfscgi]# chmod +x *.cgi
[root@vm3mfscgi]# mfscgiserv #启动 CGI 监控服务

现在再通过浏览器访问 http://172.25.254.3:9425/ 应该可以看见这个 MooseFS 系统的全部信息, 包括主控 master 和存储服务 chunkserver。
                   
3. 配置数据存储服务器 data servers (chunkservers)(vm5 vm6)
[root@vm3x86_64]# pwdcd
/root/rpmbuild/RPMS/x86_64
[root@vm3x86_64]# scp mfs-chunkserver-1.6.27-4.x86_64.rpm 172.25.254.5:
[root@vm3x86_64]# scp mfs-chunkserver-1.6.27-4.x86_64.rpm 172.25.254.6:

切换到 vm5
[root@vm5~]# rpm -ivh mfs-chunkserver-1.6.27-4.x86_64.rpm
Preparing…                ###########################################[100%]
 1:mfs-chunkserver        ########################################### [100%]
[root@vm5~]# cd /etc/mfs/
[root@vm5mfs]# ls
mfschunkserver.cfg.dist  mfshdd.cfg.dist
[root@vm5mfs]# cp mfschunkserver.cfg.dist mfschunkserver.cfg
[root@vm5mfs]# cp mfshdd.cfg.dist mfshdd.cfg
[root@vm5mfs]# mkdir /var/lib/mfs
[root@vm5mfs]# chown nobody /var/lib/mfs/
[root@vm5mfs]# vim mfshdd.cfg
# mount points of HDD drives
#
#/mnt/hd1
#/mnt/hd2
#etc.
/mnt/chunk1
[root@vm5mfs]# mkdir /mnt/chunk1
[root@vm5mfs]# chown nobody /mnt/chunk1
[root@vm5mfs]# mfschunkserver
working directory: /var/lib/mfs
lockfile created and locked
initializing mfschunkserver modules …
hdd space manager: path to scan: /mnt/chunk1/
hdd space manager: start background hdd scanning (searching for available chunks)
main server module: listen on *:9422
[root@vm5mfs]# vim /etc/hosts
加入 172.25.254.3 mfsmaster

在 vm6 做类似操作:
[root@vm6mfs]# vim mfshdd.cfg
# mount points of HDD drives
#
#/mnt/hd1
#/mnt/hd2
#etc.
/mnt/chunk2

4. 客户端挂载读取
[root@vm3x86_64]# scp mfs-client-1.6.27-4.x86_64.rpm 172.25.254.1:
[root@benberba ~]# rpm -ivh mfs-client-1.6.27-4.x86_64.rpm
Preparing…                ########################################### [100%]
  1:mfs-client            ########################################### [100%]
[root@benberba ~]# cd /etc/mfs/
[root@benberba mfs]# ls
mfsmount.cfg.dist
[root@benberba mfs]# cp mfsmount.cfg.dist mfsmount.cfg
[root@benberba mfs]# mkdir /mnt/mfs
[root@benberba mfs]# vim mfsmount.cfg
mfsmaster=mfsmaster
/mnt/mfs
[root@benberba mfs]# vim /etc/hosts
172.25.254.3 mfsmaster
[root@benberba mfs]# mfsmount
mfsmaster accepted connection with parameters: read-write,restricted_ip ; root mapped to root:root
MFS 测试:
在 MFS 挂载点下创建两个目录, 并设置其文件存储份数
[root@benberba mfs]# cd /mnt/mfs/
[root@benberba mfs]# mkdir dir1
[root@benberba mfs]# mkdir dir2
[root@benberba mfs]# mfssetgoal -r 2 dir2  设置在 dir2 中文件存储份数为两个, 默认是一个
[root@benberba mfs]# cp /etc/passwd dir1
[root@benberba mfs]# cp /etc/passwd dir2

查看文件信息
[root@benberba mfs]# mfsfileinfo dir1/passwd
dir1/passwd:
    chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
        copy 1: 172.25.254.6:9422
[root@benberba mfs]# mfsfileinfo dir2/passwd
dir2/passwd:
    chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
        copy 1: 172.25.254.5:9422
        copy 2: 172.25.254.6:9422

关闭 mfschunkserver2 后再查看文件信息(即 [root@vm6mfs]# mfschunkserver stop)
[root@benberba mfs]# mfsfileinfo dir1/passwd
dir1/passwd:
    chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
        no valid copies !!!
[root@benberba mfs]# mfsfileinfo dir2/passwd
dir2/passwd:
    chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
        copy 1: 172.25.254:9422
启动 mfschunkserver2 后, 文件回复正常([root@vm6mfs]# mfschunkserver start)。
[root@benberba mfs]# mfsfileinfo dir2/passwd
dir2/passwd:
    chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
        copy 1: 172.25.254.5:9422
        copy 2: 172.25.254.6:9422

恢复误删文件
[root@benberba mfs]# rm -f dir1/passwd
[root@benberba mfs]# mfsgettrashtime dir1/
dir1/: 86400
文件删除后存放在“垃圾箱”中的时间称为隔离时间, 这个时间可以用 mfsgettrashtime 命令来查
看, 用 mfssettrashtime 命令来设置, 单位为秒, 默认为 86400 秒。
[root@benberba mfs]# mkdir /mnt/mfsmeta
[root@benberba mfs]# mfsmount -m /mnt/mfsmeta/ -H mfsmaster
mfsmaster accepted connection with parameters: read-write,restricted_ip
[root@benberba mfs]# cd /mnt/mfsmeta/trash
[root@benberba trash]# ls
00000004|dir1|passwd  undel
[root@benberba trash]# mv 00000004\|dir1\|passwd undel/
到 dir1 目录中可以看到 passwd 文件恢复
[root@benberba ~]# mfsfileinfo /mnt/mfs/dir1/passwd
/mnt/mfs/dir1/passwd:
    chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
        copy 1: 172.25.254.6:9422
在 MFSMETA 的目录里, 除了 trash 和 trash/undel 两个目录, 还有第三个目录 reserved, 该目
录内有已经删除的文件, 但却被其他用户一直打开着。在用户关闭了这些被打开的文件后,
reserved 目录中的文件将被删除, 文件的数据也将被立即删除。此目录不能进行操作

为了安全停止 MooseFS 集群, 建议执行如下的步骤:
# umount -l /mnt/mfs    #客户端卸载 MooseFS 文件系统
# mfschunkserver stop  #停止 chunk server 进程
# mfsmetalogger stop  #停止 metalogger 进程
# mfsmaster stop          #停止主控 master server 进程
安全的启动 MooseFS 集群:
# mfsmaster start          #启动 master 进程
# mfschunkserver start  #启动 chunkserver 进程
# mfsmetalogger start    #启动 metalogger 进程
# mfsmount                    #客户端挂载 MooseFS 文件系统
实际上无论如何顺序启动或关闭, 未见任何异常,master 启动后,metalogger、chunker、client
三个元素都能自动与 master 建立连接。

故障测试:
Client 客户端断电、断网对 MFS 的体系不产生影响.
如果客户端误杀 killall -9 mfsmount 进程, 需要先 umount /mnt/mfs, 然后再 mfsmount。否则会
提示:/mnt/mfs: Transport endpoint is not connected

 

 

mfschunkserver:

断网、杀掉 mfschunkserver 程序对 MFS 系统无影响。
断电:
# 无文件传输时, 对两个 chunker 都无影响;
# 当有文件传输时, 但是文件设置存储一份时, 对文件的存储无影响。
# 文件设置存储两份, 数据传输过程中, 关掉 chunker1, 等待数据传输完毕后, 启动
chunker1.chunker1 启动后, 会自动从 chunker2 复制数据块。整个过程中文件访问不受影响。
# 文件设置存储两份, 数据传输过程中, 关掉 chunker1, 不等待数据传输完毕, 开机启动
chunker1.chunker1 启动后,client 端会向 chunker1 传输数据, 同时 chunker1 也从 chunker2 复
制缺失的块。
只要不是两个 chunker 服务器同时挂掉的话, 就不会影响文件的传输, 也不会影响服务的使用。

master 端:
断网、杀掉 MFS 的 master 服务对 MFS 系统无影响。
断电可能会出现以下的情况:
# 当没有文件传输时, 可在服务器重启之后, 运行 mfsmetarestore –a 进行修复, 之后执行
mfsmaster start 恢复 master 服务。
# mfsmetarestore -a
loading objects (files,directories,etc.) … ok
loading names … ok
loading deletion timestamps … ok
loading chunks data … ok
checking filesystem consistency … ok
connecting files and chunks … ok
store metadata into file: /var/lib/mfs/metadata.mfs
# mfsmaster start
working directory: /var/lib/mfs
lockfile created and locked
initializing mfsmaster modules …
loading sessions … ok
sessions file has been loaded
exports file has been loaded
mfstopology configuration file (/etc/mfstopology.cfg) not found – using defaults
loading metadata …
loading objects (files,directories,etc.) … ok
loading names … ok
loading deletion timestamps … ok
loading chunks data … ok
checking filesystem consistency … ok
connecting files and chunks … ok
all inodes: 5
directory inodes: 3
file inodes: 2
chunks: 2
metadata file has been loaded
stats file has been loaded
master <-> metaloggers module: listen on *:9419
master <-> chunkservers module: listen on *:9420
main master server module: listen on *:9421
mfsmaster daemon initialized properly
# 当有文件传输时, 可能会在 /usr/local/mfs/sbin/mfsmetarestore –a 进行修复时可能会出现:
# mfsmetarestore -a
loading objects (files,directories,etc.) … ok
loading names … ok
loading deletion timestamps … ok
loading chunks data … ok
checking filesystem consistency … ok
connecting files and chunks … ok
�S:115: error: 32 (Data mismatch)
此时无法修复也无法启动 master 服务, 有个应急的办法是将 metadata.mfs.back 复制成
metadata.mfs, 然后再启动 master。这样将会丢失那些正在传输的数据。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-08/121958.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计7871字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中