分布式存储之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连接的简易方法,并且通过同一物理通道支持广泛使用的SCSIIP协议。SAN不受现今主流的、基于SCSI存储结构的布局限制。特别重要的是,随着存储容量的爆炸性增长,SAN允许企业独立地增加它们的存储容量。SAN的结构允许任何服务器连接到任何存储阵列,这样不管数据置放在那里,服务器都可直接存取所需的数据。因为采用了光纤接口,SAN还具有更高的带宽。

因为SAN解决方案是从基本功能剥离出存储功能,所以运行备份操作就无需考虑它们对网络总体性能的影响。SAN方案也使得管理及集中控制实现简化,特别是对于全部存储设备都集群在一起的时候。最后一点,光纤接口提供了10公里的连接长度,这使得实现物理上分离的、不在机房的存储变得非常容易。

总结:DAS存储一般应用在中小企业,与计算机采用直连方式,NAS存储则通过以太网添加到计算机上,SAN存储则使用FC接口,×××能更佳的存储。NASSAN的主要区别体现在操作系统在什么位置。

 

二. MogileFS文件系统

mogilefs的特性

1.支持多节点冗余

2.可实现自动的文件复制

3.使用名称空间(命名空间),每个文件通过key来确定

4.不需要RAID,应用层可以直接实现RAID,不共享任何东西,通过“集群”接口提供服务

5.工作与应用层,没有特殊的组件要求

6.不共享任何数据,mogilefs不需要依靠昂贵的SAN来共享磁盘,每个机器只用维护好自己的硬盘

mogilefs主要由三部分构成:tracker节点、database节点、storage节点

1trackermogileFSd进程):这个是 MogileFS 的核心部分,他是一个调度器,

2MogileFSd 进程就是trackers进程程序,trackers 做了很多工作:Replication(复制),Deletion(删除),Query(查询),Reaper(接受),Monitor(监听)等等,这个是基于事件的( event-based ) 父进程/消息总线来管理所有来之于客户端应用的交互(requesting operations to be performed),,包括将请求负载平衡到多个“query workers”中,然后让 MogileFSd 的子进程去处理;

3Database:用来存放 MogileFS 的元数据 (命名空间和文件在哪里),是Trackers 来操作和管理它,可以用mogdbsetup程序来初始化数据库,因为数据库保存了MogileFS的所有元数据,建议做成HA架构;

4Storage Nodes:这个是 MogileFS 存储文件存放在这些机器上,也是 mogstored 节点,也叫 Storage Server,一台存储主要都要启动一个 mogstored 服务.扩容就是增加这些机器,实际文件存放的地方。

MogileFs工作流程图:

每次文件的上传和读取,都要经过前端TrackerServer服务器,trackServer服务器受到client端请求,查询数据库,返回一个上传或者是读取的可用的后端StorageServer的地址,然后由client端直接操作后端StorageServer服务器。ipload操作返回就是成功或者失败的结构,read操作就是犯规对应的查询数据

分布式存储之MogileFS简单应用_MogileFS

三. MogileFs管理的几个概念

1. Domain:一个mogileFS可以有多个Domain,用来存放不同文件(大小,类型),同一个Domainkey必须唯一,不同Domain内,key可以相同;

2.每一个存储节点称为一个主机host,一个主机上可以有多个存储设备dev(单独的硬盘),每个设备都有ID号,Domain+Fid用来定位文件

3.Class:文件属性管理,定位文件存储在不同设备上的分数

 

四. MogileFS的安装及配置

A.实验环境:

1. tracker+mysql  172.17.252.64

2. storage 1172.17.250.2

3. storage2 172.17.254.208

安装所需要的包(trackerstorage都需要装)

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;

分布式存储之MogileFS简单应用_MogileFS_02

2.mysql>flush  privileges

3.添加运行用户

useradd -r mogilefs

mkdir /var/run/mogilefsd/

chown -R mogilefs.mogilefs /var/run/mogilefsd #yum安装的话已经完成

mogdbsetup --dbpass=mogile

分布式存储之MogileFS简单应用_MogileFS_03 

4. 修改主配置文件

 分布式存储之MogileFS简单应用_MogileFS_04

5. 定义一个tracker特殊的配置

Vim   /etc/mogilefs/mogilefs.conf

trackers=172.17.252.64:7001

6. 启动服务

分布式存储之MogileFS简单应用_MogileFS_05 

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

分布式存储之MogileFS简单应用_MogileFS_06

2.检查主机是否加入到MogileFs的系统中

mogadm host list

分布式存储之MogileFS简单应用_MogileFS_07

 

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

分布式存储之MogileFS简单应用_MogileFS_08

3.检查是否加入分布式存储之MogileFS简单应用_MogileFS_09

Mogadm check

 分布式存储之MogileFS简单应用_MogileFS_10

4.添加域和添加类,并上传文件

mogadm domain add img   #添加名为img的域

mogadm class add img(域名) m26(类名) --mindevcount=3  #添加类

mogupload   --domain=img  --key=test --file=1.jpg  #上传文件

分布式存储之MogileFS简单应用_MogileFS_11

5.查看文件

Mogfileinfo  --domain=img  -key=bug4

分布式存储之MogileFS简单应用_MogileFS_12

Mogfileinfo  --domain=img  -key=bug3  

分布式存储之MogileFS简单应用_MogileFS_13 

7. 测试访问

分布式存储之MogileFS简单应用_MogileFS_14 

 

 

分布式存储之MogileFS简单应用_MogileFS_15