本节我们将来认识下分布式文件系统,不过我主要讲的是关于其中的一个比较流行的mogilefs进行介绍,好了其他的不多说了,下面我们就开始吧。
什么是分布式文件系统?
什么是分布式文件系统(Distributed File System)?顾名思义,就是分布式+文件系统。它包含了2方面,从文件系统的客户端的角度来看,他就是一个标准的文件系统,提供了API,由此可以进行文件的创建、删除、读写等操作;从内部来看的话,分布式文件系统则与普通的文件系统不同,它不在是本地的磁盘中,它的内容和目录都不是存储在本地磁盘中,而是通过网络传输到远程主机上,并且同一个文件存储在不只一台远程主机中,而是在一簇主机中进行分布式存储,协同提供服务。
常见的分布式文件系统
GFS :Google File System
HDFS:适合存储大文件;
TFS:在名称节点上将元数据存储于关系型数据中,文件数量不再受限于名称节点的内存空间;可以存储海量小文件;
Lustre: 企业级应用,重量级;
GlusterFS: 适用于存储少量大文件 ,流媒体,云
MooseFS: 通用简便,适用于存储小文件,大文件也不错
Mogilefs: 使用Perl语言,FastDFS
FastDFS:在内存中存储
Ceph:内核级别,支持PB级别存储
MogileFS
MogileFS是一个开源的分布式文件存储系统,由LiveJournal旗下的DangaInteractive公司开发。Danga团队开发了包括Memcached、MogileFS、Perlbal等多个知名的开源项目。目前使用MogileFS的公司非常多,如日本排名先前的几个互联公司及国内的yupoo(又拍)、digg、豆瓣、1号店、大众点评、搜狗和安居客等,分别为所在的组织或公司管理着海量的图片。
MogileFS的特性:
1、 应用层: 用户空间文件系统,无须特殊的核心组件
2、无单点:(tracker, mogstore, database(MySQL))
3、自动文件复制:复制的最小单位不是文件,而class;
4、传输中立,无特殊协议:可以通过NFS或HTTP进行通信;
5、比RAID好多了
6、简单的命名空间: 每个文件对应一个key:用于domain定义名称空间
7、不共享任何数据:
MogileFS组件:
Tracker nodes: MogileFS的核心,是一个调度器;服务进程为mogilefsd; 职责:删除、复制、监控、查询等;
storge nodes:mogstored进程: 数据存储的位置,通常是一个HTTP(WebDAV)服务器,用来数据的创建、删除、获取;
Database nodes(MySQL):用于为tracker存储元数据信息,mogileFS
实验:构建基于Nginx+mogilefs的分布式文件系统
实验拓扑图:
总的实验步骤如下:由于有些步骤连在一起做,所以做的时候可能并不是完全按照以下步骤进行:
安装tracker:
1、安装相关的包:
MogileFS-Server-2.46-2.el6.noarch.rpm
MogileFS-Server-mogilefsd-2.46-2.el6.noarch.rpm
perl-Net-Netmask-1.9015-8.el6.noarch.rpm
MogileFS-Server-mogstored-2.46-2.el6.noarch.rpm
perl-Perlbal-1.78-1.el6.noarch.rpm
2、授权数据库用户,并初始mysql数据库
# mogdbsetup
3、修改配置文件
db_dsn = DBI:mysql:DBNAME:host=HOSTNAME
4、启动mogilefsd进程
安装mogstord:
1、安装相关的包
MogileFS-Server-2.46-2.el6.noarch.rpm
MogileFS-Server-mogilefsd-2.46-2.el6.noarch.rpm
perl-Net-Netmask-1.9015-8.el6.noarch.rpm
MogileFS-Server-mogstored-2.46-2.el6.noarch.rpm
perl-Perlbal-1.78-1.el6.noarch.rpm
perl-IO-AIO
2、准备存储设备
挂载至某路径下,确认此路径下存在文件devN
此路径的属主和属组为mogilefs.mogilefs
3、修改配置文件/etc/mogilefs/mogstored.conf
docRoot=
前面的挂载路径;
配置mogielfs:
1、向tracker添加各mogstored主机
mogadm --trackers=TRACKER_NODE host add
2、向tracker添加各设备
mogadm --trackers=TRACKER_NODE device add
3、为tracker定义名称空间domain
mogadm --trackers=TRACKER_NODE domain add
4、为domain添加一个或多个class
mogadm --trackers=TRACKER_NODE class add
可同时副本的最少个数;
好了下面就开始安装了。
2个storage节点都装上以下几个包