您的位置:首页 > 其它

MogileFS

2016-04-15 13:39 351 查看
什么是分布式文件系统?什么是分布式文件系统(DistributedFileSystem)?顾名思义,就是分布式+文件系统。它包含了2方面,从文件系统的客户端的角度来看,他就是一个标准的文件系统,提供了API,由此可以进行文件的创建、删除、读写等操作;从内部来看的话,分布式文件系统则与普通的文件系统不同,它不在是本地的磁盘中,它的内容和目录都不是存储在本地磁盘中,而是通过网络传输到远程主机上,并且同一个文件存储在不只一台远程主机中,而是在一簇主机中进行分布式存储,协同提供服务。常见的分布式文件系统GFS:GoogleFileSystemHDFS:适合存储大文件;TFS:在名称节点上将元数据存储于关系型数据中,文件数量不再受限于名称节点的内存空间;可以存储海量小文件;Lustre:企业级应用,重量级;GlusterFS:适用于存储少量大文件,流媒体,云MooseFS:通用简便,适用于存储小文件,大文件也不错Mogilefs:使用Perl语言,FastDFSFastDFS:在内存中存储Ceph:内核级别,支持PB级别存储MogileFSMogileFS是一个开源的分布式文件存储系统,由LiveJournal旗下的DangaInteractive公司开发。Danga团队开发了包括Memcached、MogileFS、Perlbal等多个知名的开源项目。目前使用MogileFS的公司非常多,如日本排名先前的几个互联公司及国内的yupoo(又拍)、digg、豆瓣、1号店、大众点评、搜狗和安居客等,分别为所在的组织或公司管理着海量的图片。MogileFS:3个重要组成tracker:追踪原数据database:存储元单元storage:存储数据tracker:tracker(跟踪器)MogileFS的核心,是一个高度器,服务进程为mogilefsd。mogadm,mogtool的所有操作都要跟trackers打交道,Client的一些操作也需要定义好tracker,因此最好同时运行多个tracker来做负载均衡。database:使用mogdbsetup程序来初始化数据库。数据库保存了Mogilefs的所有元数据,因此数据库部分非常重要,如果这儿挂了,那么整个Mogilefs将处于不可用状态。所以最好是HA结构。storage:mogstored(进程名),一个准备停当的mogstored节点可通过mogadm命令添加到现在现在集群中,存储节点需定义“设备(dev)用做存储空间”,每个“设备”在当前集群都需要通过一个惟一的设备ID(DevID)来识别client:客户端用与mogilefs建立通讯,完成数据存取。特性:(1)工作在应用层(2)无单点故障(3)自动完成文件复制,复制的最小单位不是文件,而class,也就是是把需要的冗余的文件组成了一块了,而这一块就是class(4)传输无需特殊协议(5)名称空间(6)不共享任何数据,只通过数据副本做冗余(7)简单的命名空间:用于domain定义名称空间(相当一个目录),每个文件对应一个key,同一个domain内key是唯一的。(8)定位文件时,在domain,定位文件的id号。-------------------------------------------------------------------------------------------------------------------------------------------一:环境介绍:1台Trcacker,2台StoreNode.MYSQL和Trcacker共用一台。TrackerIP:192.168.2.20Mysql:192.168.2.20StoreNode:192.168.2.35192.168.2.36二:Trcacker服务安装如下软件,建议使用elpo源解决依赖MogileFS-Server.noarch0:2.46-2.el6MogileFS-Server-mogilefsd.noarch0:2.46-2.el6MogileFS-Server-mogstored.noarch0:2.46-2.el6MogileFS-Utils.noarch0:2.19-1.el6perl-IO-AIO.x86_640:3.71-2.el6perl-MogileFS-Client.noarch0:1.14-1.el6perl-Net-Netmask.noarch0:1.9015-8.el6perl-Perlbal.noarch0:1.78-1.el6(2)安装mysql给root远程授权MariaDB[(none)]>GRANTALLON*.*TO'root'@'192.168.2.%'IDENTIFIEDBY'123456'WITHGRANTOPTION;MariaDB[(none)]>FLUSHPRIVILEGES;(2):初始化mysql#mogdbsetup--dbhost=192.168.2.20--dbrootuser=root--dbrootpass=123456--dbname=mogdb--dbuser=moguser--dbpass=mogpass下面为初始化的过程ThiswillattempttosetuporupgradeyourMogileFSdatabase.Itwon'tdestroyexistingdata.Runwith--helpformoreinformation.Runwith--yestoshutuptheseprompts.Continue?[N/y]:yCreate/Upgradedatabasename'mogdb'?[Y/n]:yGrantallprivilegestouser'moguser',connectingfromanywhere,tothemogilefsdatabase'mogdb'?[Y/n]:y(3)配置tracker端(mogilefsd)
db_user=moguser
//连接名为moguser
#servicemogilefsdstart//重启mogilefsd三:配置StoreNode.2个节点,分别安装下面软件:MogileFS-Server-2.46-2.el6.noarch.rpmMogileFS-Server-mogilefsd-2.46-2.el6.noarch.rpmMogileFS-Server-mogstored-2.46-2.el6.noarch.rpmMogileFS-Utils-2.19-1.el6.noarch.rpmperl-Net-Netmask-1.9015-8.el6.noarch.rpmperl-Perlbal-1.78-1.el6.noarch.rpmperl-MogileFS-Client-1.14-1.el6.noarch.rpmperl-IO-AIO
(1)配置mogstared
配置文件/etc/mogilefs/mogstared.conf,主要的配置选项如下:
docroot=
/mogdata/data
//文件存取目录(2)这里假设存储数据目录是/mogdate/data下,在实际中会是单独的存储设备。
#chown
mogilefs.mogilefs
/mogdata/data/
-R
#servicemogstoredstart
上面步骤在192.168.2.35192.168.2.36分别进行相同的操作。
(3)配置tracker端,首先查看数据源
#mogstats--db_dsn="DBI:mysql:mogdb:host=192.168.2.20"--db_user="moguser"--db_pass="mogpass"--stats="all"(4)tracker端上用mogadm添加主机#mogadm--trackers=192.168.2.20:7001hostadd192.168.2.35--ip=192.168.2.35--status=alive#mogadm--trackers=192.168.2.20:7001hostadd192.168.2.36--ip=192.168.2.36--status=alive查看添加后的主机#mogadm--trackers=192.168.2.20:7001hostlist(5)添加设备,并设定设备号,设备号不能重复#mogadm--trackers=192.168.2.20:7001deviceadd192.168.2.351#mogadm--trackers=192.168.2.20:7001deviceadd192.168.2.363查看添加后的设备#mogadm--trackers=192.168.2.20:7001devicelist分别在/mogdata/data/目录下建立dev1和dev3,并把属主属主改成mogilefs
在192.168.2.35:
#chown
-Rmogilefs.mogilefs
/mogdata/data
#chown
-Rmogilefs.mogilefs
/mogdata/data
(6)添加域images,files
#mogadm--trackers=192.168.2.20:7001domainaddimages
#mogadm--trackers=192.168.2.20:7001domainaddfiles查看域
#mogadm--trackers=192.168.2.20:7001domainlist
(7)添加一个class(这个根据实际需要添加,在这里是非必要步骤)#mogadm--trackers=192.168.2.20:7001classaddimagesclass1--mindevcount=2(2为保留2个副本)添加后查看#mogadm--trackers=192.168.2.20:7001classlist四:测试:

上传文件:mogupload

#mogupload--trackers=192.168.2.20:7001--domain=files--key='/33.jpg'--file=/root/linux.jpg#mogupload--trackers=192.168.2.20:7001--domain=images--key='/22.jpg'--file=/root/2222.jpg#mogupload--trackers=192.168.2.20:7001--domain=images--key='/11.jpg'--file=/root/1111.jpg

查看文件信息:mogfileinfo

#mogfileinfo--trackers=192.168.2.20:7001--domain=files--key='/33.jpg'#mogfileinfo--trackers=192.168.2.20:7001--domain=images--key='/11.jpg'#mogfileinfo--trackers=192.168.2.20:7001--domain=images--key='/22.jpg'红把部分可以用浏览器访问下载图片:#mogfetch--trackers=192.168.2.20:7001--domain=images--key='/11.jpg'--file='/tmp/3.jpg'列出domain中已存文件#moglistkeys--trackers=192.168.2.20:7001--domain=files;#moglistkeys--trackers=192.168.2.20:7001--domain=images;试验2:NGINX反向代理添加一台服务器,ip为192.168.2.30,服务器同时做为Tracker和Storaged:(1)安装#yuminstallMogileFS-Server-2.46-2.el6.noarch.rpmMogileFS-Server-mogilefsd-2.46-2.el6.noarch.rpmMogileFS-Server-mogstored-2.46-2.el6.noarch.rpmMogileFS-Utils-2.19-1.el6.noarch.rpmperl-Net-Netmask-1.9015-8.el6.noarch.rpmperl-Perlbal-1.78-1.el6.noarch.rpmperl-MogileFS-Client-1.14-1.el6.noarch.rpmperl-IO-AIO.x86_640:3.71-2.el6(2)在192.168.2.30上初始化数据库#mogdbsetup--dbhost=192.168.2.20--dbrootuser=root--dbrootpass=123456--dbname=mogdb--dbuser=moguser--dbpass=mogpass
(3)配置tracker端(mogilefsd)
###################
#servicemogilefsdstart//配置文件修改后重启mogilefsd
(4)下面为重启mogilefsd后就能从192.168.2.30上查看到原已添加的主机。(5)配置mogstared#cat/etc/mogilefs/mogstored.confmaxconns=10000httplisten=0.0.0.0:7500mgmtlisten=0.0.0.0:7501docroot=/mogdata/data/(6)建立目录
#mkdir-p/mogdata/data#chownmogilefs.mogilefs/mogdata/data/-R#servicemogstoredstart(7)添加主机,因为192.168.2.30服务器同时做为Tracker和Storaged,所以Tracker的ip为192.168.2.30,Storaged的ip也为192.168.2.30,添加的主机名,这里用的是ip,所以也为192.168.2.30#mogadm--trackers=192.168.2.30:7001hostadd192.168.2.30--ip=192.168.2.30--status=alive添加设备为192.168.2.30,设备号为4,#mogadm--trackers=192.168.2.30:7001deviceadd192.168.2.304建立dev4目录,为改变权限#mkdir/mogdata/data/dev4#chown-Rmogilefs.mogilefs/mogdata/data查看trackers:如下图NGINX在编译时添加第三方模块:
make
&&
make
install
NGINX.conf文件配置如下:upstreamtrackers{server192.168.2.20:7001;server192.168.2.30:7001;}location/upload{mogilefs_trackertrackers;mogilefs_domainimages;//指定使用的domain,这个很关键,mogilefs_methodsGET;//GETPUTDELETE;允许上传,删除时方法mogilefs_noverifyon;mogilefs_pass{proxy_pass$mogilefs_path;proxy_hide_headerContent-Type;proxy_bufferingoff;}}访问如下:#curl-XDELETEhttp://192.168.2.10/upload/66.jpg请求方法允许删除时,可以直接删除
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  文件系统 分部式