分布式存储之MogileFS分布式文件系统简单应用
一. 分布式存储原理:
a) 分布式存储系统,是将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是 可靠性和安全性的焦点,不能满足大规模存储数据的需要。分布式网络存储采用扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
b) 网络存储系统分为
1. 从传统的直接存储系统DAS(直接附加存储)
2. 发展出了网络存储架构SAN(存储区域网络)
3. NAS(网络附加存储)
4. FAS(网络化存储)
c) 存储分类:
1. 封闭系统的存储
2. 开放系统的存储:
i. 内置存储
ii. 外挂存储:
a) 直连式存储(DAS)
b) 网络存储(FAS):
i. 网络附加存储(NAS)
ii. 存储区域网络(SAN)
d) NAS存储:
NAS存储也通常被称为附加存储,顾名思义,就是存储设备通过标准地网络拓扑结构他(例如以太网)添加到一群计算机上,NAS是文件级的存储方法,它的重点在于帮助工作组和部门机构解决迅速增加存储容量的需求。如今用户采用NAS较多的功能是文件共享,图片共享
、电影共享等等,而且随着云计算的发展,一些NAS厂商也推出了云存储功能,大大方便了企业和个人用户的使用。
NAS产品是真正即插即用的产品。NAS设备一般支持多计算机平台,用户通过网络支持协议可进入相同的文档,因而NAS设备无需改造即可用于混合Unix/Windows NT局域网内,同时NAS的应用非常灵活。
但NAS又一个关键性问题,即备份过程中的带宽消耗。与将备份数据流从LAN中转移出去的存储区域网(SAN)不同,NAS仍使用网络进行备份和恢复。NAS 的一个缺点是它将存储事务由并行SCSI连接转移到了网络上。这就是说LAN除了必须处理正常的最终用户传输流外,还必须处理包括备份操作的存储磁盘请求。
SAN存储:
存储区域网络,这个是通过光纤通道交换机连接存储阵列和服务器主机,最后成为一个专用的存储网络。SAN经过十多年历史的发展,已经相当成熟,成为业界的事实标准(但各个厂商的光纤交换技术不完全相同,其服务器和SAN存储有兼容性的要求)。
SAN提供了一种与现有LAN连接的简易方法,并且通过同一物理通道支持广泛使用的SCSI和IP协议。SAN不受现今主流的、基于SCSI存储结构的布局限制。特别重要的是,随着存储容量的爆炸性增长,SAN允许企业独立地增加它们的存储容量。SAN的结构允许任何服务器连接到任何存储阵列,这样不管数据置放在那里,服务器都可直接存取所需的数据。因为采用了光纤接口,SAN还具有更高的带宽。
因为SAN解决方案是从基本功能剥离出存储功能,所以运行备份操作就无需考虑它们对网络总体性能的影响。SAN方案也使得管理及集中控制实现简化,特别是对于全部存储设备都集群在一起的时候。最后一点,光纤接口提供了10公里的连接长度,这使得实现物理上分离的、不在机房的存储变得非常容易。
总结:DAS存储一般应用在中小企业,与计算机采用直连方式,NAS存储则通过以太网添加到计算机上,SAN存储则使用FC接口,×××能更佳的存储。NAS与SAN的主要区别体现在操作系统在什么位置。
二. MogileFS文件系统
mogilefs的特性
1.支持多节点冗余
2.可实现自动的文件复制
3.使用名称空间(命名空间),每个文件通过key来确定
4.不需要RAID,应用层可以直接实现RAID,不共享任何东西,通过“集群”接口提供服务
5.工作与应用层,没有特殊的组件要求
6.不共享任何数据,mogilefs不需要依靠昂贵的SAN来共享磁盘,每个机器只用维护好自己的硬盘
mogilefs主要由三部分构成:tracker节点、database节点、storage节点
1.tracker(mogileFSd进程):这个是 MogileFS 的核心部分,他是一个调度器,
2.MogileFSd 进程就是trackers进程程序,trackers 做了很多工作:Replication(复制),Deletion(删除),Query(查询),Reaper(接受),Monitor(监听)等等,这个是基于事件的( event-based ) 父进程/消息总线来管理所有来之于客户端应用的交互(requesting operations to be performed),,包括将请求负载平衡到多个“query workers”中,然后让 MogileFSd 的子进程去处理;
3.Database:用来存放 MogileFS 的元数据 (命名空间, 和文件在哪里),是Trackers 来操作和管理它,可以用mogdbsetup程序来初始化数据库,因为数据库保存了MogileFS的所有元数据,建议做成HA架构;
4.Storage Nodes:这个是 MogileFS 存储文件存放在这些机器上,也是 mogstored 节点,也叫 Storage Server,一台存储主要都要启动一个 mogstored 服务.扩容就是增加这些机器,实际文件存放的地方。
MogileFs工作流程图:
每次文件的上传和读取,都要经过前端TrackerServer服务器,trackServer服务器受到client端请求,查询数据库,返回一个上传或者是读取的可用的后端StorageServer的地址,然后由client端直接操作后端StorageServer服务器。ipload操作返回就是成功或者失败的结构,read操作就是犯规对应的查询数据
三. MogileFs管理的几个概念
1. Domain:一个mogileFS可以有多个Domain,用来存放不同文件(大小,类型),同一个Domain内key必须唯一,不同Domain内,key可以相同;
2.每一个存储节点称为一个主机host,一个主机上可以有多个存储设备dev(单独的硬盘),每个设备都有ID号,Domain+Fid用来定位文件
3.Class:文件属性管理,定位文件存储在不同设备上的分数
四. MogileFS的安装及配置
A).实验环境:
1. tracker+mysql :172.17.252.64
2. storage 1:172.17.250.2
3. storage2 :172.17.254.208
安装所需要的包(tracker和storage都需要装)
yum -y install make gcc unzip perl-DBD-MySQL perl perl-CPAN perl-YAML perl-Time-HiRes
MogileFS-Server-2.46-2.el7.centos.noarch.rpm
MogileFS-Server-mogilefsd-2.46-2.el7.centos.noarch.rpm
MogileFS-Server-mogstored-2.46-2.el7.centos.noarch.rpm
MogileFS-Utils-2.19-1.el7.centos.noarch.rpm
perl-Danga-Socket-1.61-1.el6.rf.noarch.rpm
perl-MogileFS-Client-1.14-1.el7.centos.noarch.rpm
perl-Perlbal-1.78-1.el6.noarch.rpm
B).在tracker+mysql节点上配置
1.初始化数据库
Mysql > GRANT ALL PRIVILEGES ON *.* TO 'mogile' @'127.0.0.1' IDENTIFIED BY 'mogile' WITH GRANT OPTION;
2.mysql>flush privileges;
3.添加运行用户
useradd -r mogilefs
mkdir /var/run/mogilefsd/
chown -R mogilefs.mogilefs /var/run/mogilefsd #yum安装的话已经完成
mogdbsetup --dbpass=mogile
4. 修改主配置文件
5. 定义一个tracker特殊的配置
Vim /etc/mogilefs/mogilefs.conf
trackers=172.17.252.64:7001
6. 启动服务
C)配置storage节点
1.安装所需要的包
2.vim /etc/mogilefs/mogstored.conf
docroot = /data/mogdata
3. mkdir /data/mogdata
chown mogilefs.mogilefs /data/mogdata
4. 3./etc/init.d/mogstored start
D)tracker+mysql节点的配置
1. 添加主机,将主机信息注册到数据库中
modam (--tracker=172.17.252.64:7001) host add node1 --ip=172.17.250.2 --port=7500 --status=alive
mogadm (--tracker=172.17.252.64:7001) host add node2 --ip=172.17.254.208 --port=7500 --status=alive
2.检查主机是否加入到MogileFs的系统中
mogadm host list
3. MogileFS 中的存储设备管理
1.建一个目录 ( 并且需要 mount 一个硬盘给这个目录 ) 给这个"设备" 使用, 我们这的例子是使用dev1在主机中建一个目录,建目录使用 dev + ID 这种格式,记的所有系统中 ID 不能重复.也必须和配置文件中的路径一样(上面已经建立过)
2.给“设备”加入存储的节点当中。相当于为每个设备加入MogileFS的存储系统
mogadm -tracker=172.17.252.64:7001 device add node1 1
mogadm -tracker=172.17.252.64:7001 device add node2 2
3.检查是否加入
Mogadm check
4.添加域和添加类,并上传文件
mogadm domain add img #添加名为img的域
mogadm class add img(域名) m26(类名) --mindevcount=3 #添加类
mogupload --domain=img --key=test --file=1.jpg #上传文件
5.查看文件
Mogfileinfo --domain=img -key=bug4
Mogfileinfo --domain=img -key=bug3
7. 测试访问