设为首页 收藏本站
查看: 1941|回复: 0

[经验分享] 分布式存储

[复制链接]

尚未签到

发表于 2019-2-1 09:32:21 | 显示全部楼层 |阅读模式
第1章 介绍
写在前面,自己的理解。
对比nfs文件共享系统,其目的都是一样的。nfs的运行过程是客户端先向服务端的rpc服务请求nfs的端口号,然后客户端再根据端口号找到对应的nfs服务,进行读写。
而mfs将nfs服务端的结构再进行细分,mfs的主服务端(master server)仅仅充当一个类似rpcbind的作用,而真正的数据存放在别的主机上(chunk server),客户端向mfs主服务端请求存储位置,主服务端回复客户端数据存放的位置,客户端根据返回的位置寻找对应主机进行读写。
另mfs自带高可用,它还有一个元数据备份服务器(metalogger Server),当主服务端(master server)产生问题时,它可以暂时顶替。
1.1介绍
  MooseFS是一个具备冗余容错功能的分布式网络文件系统,它将数据分别存放在多个物理服务器或单独磁盘或分区上,确保一份数据有多个备份副本。对于访问的客户端或者用户来说,整个分布式网络文件系统集群看起来就像一个资源一样。从其对文件操作的情况看,MooseFS就相当于一个类UNIX文件系统:
  1、mfs是一个分层的目录树结构
  2、存储支持POSIX标准的文件属性(权限,最后访问和修改时间)
  3、支持特殊的文件,如:块设备,字符设备,管道和套接字,链接文件(符号链接和硬链接)
  4、支持基于IP地址和密码的方式访问文件系统
1.2特性
  1、高可靠性,每一份数据可以设置多个副本(多份数据),并可以存储在不同的主机上
  2、高可扩展性,可以很轻松的通过增加主机磁盘容量或增加主机数量来动态扩展整个文件系统的存储量
  3、高可容错性,我们可以通过对mfs进行系统设置,实现当数据文件被删除后的一段时间内,依然存放于主机的回收站中,以备误删恢复数据
  4、高数据一致性,即便文件被写入/访问时,我们依然可以完成对文件的一致性快照
  
1.3优缺点
  优点:
  1、由于MFS是基于GPL发布的,因此完全免费,并且开发和社区都很活跃,资料也非常丰富
  2、轻量、易部署、易配置、易维护
  3、通用文件系统,不需要修改上层应用就可以使用(那些需要专门 API 的DFS确实有点麻烦)
       4、扩容成本低、支持在线扩容,不影响业务,体系架构可伸缩性极强(官方的case可以扩到70台了!)
       5、体系架构高可用,所有组件无单点故障
       6、文件对象高可用,可设置任意的文件冗余程度(提供比 Raid 10 更高的冗余级别)
  7、提供系统负载,将数据读写分配到所有的服务器上,加速读写性能
  8、提供诸多高级特性,比如类似Windows的回收站功能、类似JAVA语言的GC(垃圾回收)、快照功能等
  9、MooseFS 是 Google Filesystem 的一个 c 实现
  10、自带 Web Gui 的监控接口
  11、提高随机读或写效率和海量小文件的读写效率(有待进一步证明)
  缺点:
  1、Master Server 本身的性能瓶颈。MFS的主备架构情况类似于MySQL的主从复制,从可以扩展,主却不容易扩展。短期的对策就是按照业务来做切分。
  2、随着MFS体系架构中存储文件的总数上升,Master Server对内存的需求量会不断增大(MFS把文件系统的结构缓存到 Maset Server 的内存中)。根据官方提供的数据,8g对应2500kw的文件数,2亿文件就得64GB内存。短期的对策也是按照业务来做切分。
  3、Master server的单点解决方案的健壮性。目前官方自带的是把数据信息从MasterServer同步到MetaloggerServer上,MasterServer一旦出问题MetaloggerServer可以恢复升级为MasterServer,但是需要恢复时间。目前,也可以通过第三方的高可用方案(heartbeat+drbd+moosefs)来解决 Master Server 的单点问题。
  4、Metalogger Server 复制元数据的间隔时间较长(可调整)
  
1.4应用场景
  谈及MooseFS的应用场景,其实就是去谈分布式文件系统的应用场景。
  1、大规模高并发的数据存储及访问(小文件、大文件),TFS适合小文件(/etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS
添加yum源
[root@master ~]# curl"http://ppa.moosefs.com/MooseFS-3-el6.repo"> /etc/yum.repos.d/MooseFS.repo
master端安装
[root@master ~]# yum install -y moosefs-mastermoosefs-cli moosefs-cgi moosefs-cgiserv
chunk端安装
[root@chunk01 ~]# yum install -ymoosefs-chunkserver
metalogger端安装
[root@metalogger ~]# yum install moosefs-metalogger-y
客户端安装
[root@web ~]# yum install moosefs-client -y2.3配置
2.3.1配置master端
[root@master mfs]# ll /etc/mfs
total 44
-rw-r--r-- 1 root root 4102 Oct 10 18:45mfsexports.cfg
-rw-r--r-- 1 root root 4057 Aug  2 19:43 mfsexports.cfg.sample
-rw-r--r-- 1 root root 8521 Oct 10 17:49mfsmaster.cfg
-rw-r--r-- 1 root root 8521 Aug  2 19:43 mfsmaster.cfg.sample
-rw-r--r-- 1 root root 1052 Oct 10 17:49mfstopology.cfg
-rw-r--r-- 1 root root 1052 Aug  2 19:43 mfstopology.cfg.sample  这是mfs的三个配置文件
  mfsmaster.cfg  :主文件
  mfsexports.cfg  :mfs挂载权限设置,参考NFS文件系统中的exports.cfg
  mfstopology.cfg   :机架感知
[root@master mfs]# vim mfsexports.cfg(把前面两行没注释的删掉)
10.0.0.0/24       /    rw,alldirs,maproot=0:0  #类似nfs的export配置文件
[root@master mfs]# /etc/init.d/moosefs-master start2.3.2配置chunk server端
[root@chunk01 ~]# sed -i '71a MASTER_HOST = 10.0.0.103'/etc/mfs/mfschunkserver.cfg
[root@chunk01 ~]# echo "/tmp" >/etc/mfs/mfshdd.cfg  #将/tmp目录作为存放数据的目录
[root@chunk01 ~]# /etc/init.d/moosefs-chunkserverstart
这里看一下tmp目录,由于是块状文件,所以数据在chunk端是不可读的。
[root@chunk02 ~]# ls /tmp/
00  08  10  18  20  28  30  38  40  48  50  58  60  68  70  78  80  88  90  98  A0  A8  B0  B8  C0  C8  D0  D8  E0  E8  F0  F8
01  09  11  19  21  29  31  39  41  49  51  59  61  69  71  79  81  89  91  99  A1  A9  B1  B9  C1  C9  D1  D9  E1  E9  F1  F9
02  0A  12  1A  22  2A  32  3A  42  4A  52  5A  62  6A  72  7A  82  8A  92  9A  A2  AA  B2  BA  C2  CA  D2  DA  E2  EA  F2  FA
03  0B  13  1B  23  2B  33  3B  43  4B  53  5B  63  6B  73  7B  83  8B  93  9B  A3  AB  B3  BB  C3  CB  D3  DB  E3  EB  F3  FB
04  0C  14  1C  24  2C  34  3C  44  4C  54  5C  64  6C  74  7C  84  8C  94  9C  A4  AC  B4  BC  C4  CC  D4  DC  E4  EC  F4  FC
05  0D  15  1D  25  2D  35  3D  45  4D  55  5D  65  6D  75  7D  85  8D  95  9D  A5  AD  B5  BD  C5  CD  D5  DD  E5  ED  F5  FD
06  0E  16  1E  26  2E  36  3E  46  4E  56  5E  66  6E  76  7E  86  8E  96  9E  A6  AE  B6  BE  C6  CE  D6  DE  E6  EE  F6  FE
07  0F  17  1F  27  2F  37  3F  47  4F  57  5F  67  6F  77  7F  87  8F  97  9F  A7  AF  B7  BF  C7  CF  D7  DF  E7  EF  F7  FF2.3.3配置metalogger端
[root@metalogger ~]# vim /etc/mfs/mfsmetalogger.cfg
META_DOWNLOAD_FREQ = 1  #每隔1小时同步一下日志
MASTER_HOST = 10.0.0.103[root@metalogger ~]# /etc/init.d/moosefs-metaloggerstart2.3.4客户端配置
[root@web ~]# mfsmount /mnt -H 10.0.0.103
[root@web ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       8.8G  1.5G  6.9G 18% /
tmpfs           238M     0  238M  0% /dev/shm
/dev/sda1       190M   40M  141M 22% /boot
10.0.0.103:9421  17G  3.5G   14G 21% /mnt  

  

  测试一下
[root@web ~]# dd if=/dev/zero of=/mnt/1.txt bs=1M count=10
去chunk01端查看,
[root@chunk01 ~]# tree /tmp/
/tmp/
├── 00
│   └── chunk_0000000000000001_00000001.mfs
├── 01
├── 02
├── 03
同时chunk02 也同步了该数据
[root@chunk02 ~]# tree /tmp/
/tmp/
├── 00
│   └── chunk_0000000000000001_00000001.mfs
├── 01
├── 02
├── 03
随后我又找了一个客户端 也挂载到/mnt下  也能发现1.txt这个文件
[root@m01 ~]# ll /mnt/
total 10240
-rw-r--r-- 1 root root 10485760 Oct 10 19:51 1.txt  其实搭建起来还是很简单的,重点在于理解mfs服务的原理。
  有关原理部分借鉴多个博客,如有侵权请联系删除
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-670303-1-1.html 上篇帖子: Redhat5.4 系统上部署 MooseFS分布式文件系统的部署 下篇帖子: moosefs2.0初探及部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表