linux分布式存储介绍

大纲:

    一、常见分布式文件系统

    二、MogileFS基本原理

    三、MogileFS的实现

    四、Fastdfs基本原理

    五、Fastdfs的实现

    六、Mogilefs与FastDFS的对比

数据存储是个永恒的话题,从结绳记数到文字出现,实现了数据信息表示方式的演化和进步,而存储介质的变化,在这一过程中,更是呈现了种类繁多的样式,记录是保存信息的一种有效方式,但随着时间的推移,数据信息的安全和持久必将打破传统的存储介质和存储思维的束缚,随着计算机技术的发展,再加上网络和通讯技术的成熟,存储变得无处不在,需要时时更新。存储需要保持实时读写,提供复杂的查询功能,缺乏容灾和备份能力,大量无结构的数据的存储和处理,对传统的存储方式提出挑战。这个时候,分布式存储,应运而生,就是将数据信息分散存储。

一、常见分布式文件系统

Google Filesystem   GFS+MapReduce擅长处理单个大文件
Hadoop Distributed Filesystem GFS的山寨版+MapReduce,擅长处理单个大文件
ClusterFS 擅长处理单个大文件
Taobao Filesystem   擅长处理海量小文件
MogileFS 擅长处理海量小文件
Ceph PB级别的分布式文件系统
MooseFS     通用简便,适用于研发能力不强的公司
Lustre   一种平行分布式文件系统

二、MogileFS基本原理

MogileFS是一个开源的分布式文件存储系统,由LiveJournal旗下的Danga Interactive公司开发。其主要特性包括支持多节点冗余、实现文件自动复制、无需RAID、无特殊组件要求等。mogilefs主要有以下三部分构成:
1、Tracker:MogileFS 的核心部分,称为调度器,MogileFSd 进程就是trackers进程程序,trackers 做了很多工作:Replication,Deletion,Query,Reaper,Monitor 等等,这个是基于事件的( event-based ) 父进程/消息总线来管理所有来之于客户端应用的交互(requesting operations to be performed),,包括将请求负载平衡到多个“query workers”中,然后让 MogileFSd 的子进程去处理

2、Database:用来存放mogilefs的元数据

3、Storage server:mogilefs数据存储于此

MogileFS管理的几个概念:
1、Domain:一个MogileFS可以有多个Domain,用来存放不同文件(大小,类型),同一个Domain内key必须唯一,不同Domain内,key可以相同

2、每一个存储节点称为一个主机host,一个主机上可以有多个存储设备dev(单独的硬盘),每个设备都有ID号,Domain+Fid用来定位文件
3、Class:文件属性管理,定位文件存储在不同设备上的份数

三、MogileFS的实现

工具:三台主机,角色如下

172.17.19.17:tracker+mysql

172.17.19.117:storage1

172.17.19.189:storage2

大环境:三台主机全部安装如下包

yum install perl-Net-Netmask perl-IO-String perl-Sys-Syslog perl-IO-AIO

yum -y install make gcc unzip perl-DBD-MySQL perl perl-CPAN perl-YAML perl-Time-HiRes
yum localinstall *

1、tracker配置

①[[email protected] ~]# yum install mariadb mariadb-server -y

[[email protected] ~]# systemctl start mariadb

②初始化数据库
[[email protected] /etc/mogilefs]# mysql -uroot -p
GRANT ALL PRIVILEGES ON *.* TO ‘mogile‘ @‘127.0.0.1‘ IDENTIFIED BY ‘mogile‘ WITH GRANT OPTION;       授权
flush privileges;      清权限
[[email protected] /etc/mogilefs]# mogdbsetup --dbpass=mogile(一路y)

③[[email protected] /etc/mogilefs]# vim mogilefsd.conf

listen = 172.17.19.17:7001      监听的IP对应的port

db_user = mogile

db_pass = mogile

④启动服务

/etc/init.d/mogilefsd start

Starting mogilefsd (via systemctl): [ OK ]

[[email protected] /etc/mogilefs]# mogadm --tracker=172.17.19.17:7001 check   检测

Checking trackers...

172.17.19.17:7001 ... OK

Checking hosts...

No devices found on tracker(s).    此时只是配了tracker,还没有添加storage,所以是no devices

2、storage配置

[[email protected] mogilefs]# vim mogstored.conf

docroot = /data/mogdata

[[email protected] mogilefs]# mkdir /data/mogdata -p

chown mogilefs.mogilefs mogdata/ -R

[[email protected] mogilefs]# /etc/init.d/mogstored start

3、组合(也就是把storage“加到”tracker)

tracker操作

[[email protected] ~]# mogadm --tracker=172.17.19.17:7001 host add node1 --ip=172.17.19.117 --port=7500 --status=alive  指定storage为node1节点,alive的状态加到tracker里

[[email protected] ~]# mogadm --tracker=172.17.19.17:7001 host add node2 --ip=172.17.19.189 --port=7500 --status=alive

[[email protected] ~]# mogadm --tracker=172.17.19.17:7001 check

Checking trackers...

172.17.19.17:7001 ... OK

Checking hosts...

[ 1] node1 ... OK

[ 2] node2 ... OK

storage操作

[[email protected] ~]# cd /data/mogdata/

[[email protected] /data/mogdata]# ls

[[email protected] /data/mogdata]# mkdir dev1

[[email protected] /data/mogdata]# chown mogilefs.mogilefs dev1/ -R

[[email protected] mogilefs]# cd /data/mogdata/

[[email protected] mogdata]# mkdir dev2

[[email protected] mogdata]# chown mogilefs.mogilefs dev2/ -R

tracker操作

[[email protected] ~]# mogadm --tracker=172.17.19.17:7001 device add node1 1

[[email protected] ~]# mogadm --tracker=172.17.19.17:7001 device add node2 2

[[email protected] ~]# mysql -uroot -p

4、上传一张图片,测试是否能存储成功

tracker操作

[[email protected] /etc/mogilefs]# mogadm --tracker=172.17.19.17:7001 domain add img

[[email protected] /etc/mogilefs]# mogadm --tracker=172.17.19.17:7001 domain list

domain class mindevcount replpolicy hashtype

-------------------- -------------------- ------------- ------------ -------

img default 2 MultipleHosts() NONE

[[email protected]websrv ~]# mogupload --tracker=172.17.19.17:7001 --domain=img --key=test --file=test.jpg

浏览器访问查找出来的路径,出现图片,测试成功

四、Fastdfs基本原理

FastDFS是一个由国人余庆开发的轻量级的开源分布式文件系统,主要解决了大容量的文件存储和高并发访问的问题,文件存取时实现了负载均衡。它用纯C语言实现,支持Linux、FreeBSD、AIX等UNIX系统。其特性包括分组存储、灵活简洁、支持多块磁盘、节省存储空间等,FastDFS的核心组件如下:

1、Tracker:调度器,负责维持集群的信息,例如各group及其内部的storage node,这些信息也是storage node报告所生成;每个storagenode会周期性向tracker发心跳信息;

2、storage server:以group为单位进行组织,任何一个storage server都应该属于某个group,一个group应该包含多个storage server;在同一个group内部,各storage server的数据互相冗余;

五、Fastdfs的实现

----

工具:三台主机,角色如下

172.17.19.17:tracker+mysql

172.17.19.117:storage1

172.17.19.189:storage2

大环境:三台机器全部安装如下包

fastdfs-5.0.11-1.el7.centos.x86_64.rpm
fastdfs-debuginfo-5.0.11-1.el7.centos.x86_64.rpm
fastdfs-server-5.0.11-1.el7.centos.x86_64.rpm
fastdfs-tool-5.0.11-1.el7.centos.x86_64.rpm
libfdfsclient-devel-5.0.11-1.el7.centos.x86_64.rpm
libfdfsclient-5.0.11-1.el7.centos.x86_64.rpm
libfastcommon-1.0.36-1.el7.centos.x86_64.rpm nginx-filesystem-1.10.2-1.el7.centos.noarch.rpm
libfastcommon-devel-1.0.36-1.el7.centos.x86_64.rpm

1、编辑配置文件

tracker操作

[[email protected] /etc/fdfs]# vim tracker.conf

disabled=false   默认为false,表示是否无效

port=22122   默认为22122

base_path=/data/fastdfs/tracker

启动服务

[[email protected] /etc/fdfs]# /etc/init.d/fdfs_trackerd start

或者systemctl status fdfs_trackerd

Starting fdfs_trackerd (via systemctl): [ OK ]

storage操作

[[email protected] ~/fastdfs]# cd /etc/fdfs/

[[email protected] /etc/fdfs]# ls

anti-steal.jpg http.conf storage.conf.sample tracker.conf.sample

client.conf.sample mime.types storage_ids.conf.sample

[[email protected] /etc/fdfs]# cp storage.conf.sample storage.conf

[[email protected] /etc/fdfs]# vim storage.conf

disabled=false   默认为false,表示是否无效

port=23000   默认为23000

base_path=/data/fastdfs/storage

tracker_server=172.17.19.17:22122

store_path0=/data/fastdfs/storage

http.server_port=8888

启动服务

systemctl start fdfs_storaged

2、配置完成,测试、上传文件

在tracker上配置客户端

[[email protected] /etc/fdfs]# cp client.conf.sample client.conf

[[email protected] /etc/fdfs]# vim client.conf

base_path=/data/fastdfs/tracker

tracker_server=172.17.19.17:22122

[[email protected]websrv ~]# fdfs_upload_file /etc/fdfs/client.conf test.jpg

group1/M00/00/00/rBETvVoc0meAcLtvAAAcdXbJWOo831.jpg

storge 上查看,图片已存储,测试成功

[[email protected] 00]# ls

rBETvVoc0meAcLtvAAAcdXbJWOo831.jpg

[[email protected] 00]# pwd

/data/fastdfs/storage/data/00/00

六、Mogilefs与FastDFS的对比

介绍结束,谢谢浏览~

时间: 2024-11-09 03:10:31

linux分布式存储介绍的相关文章

linux系统服务介绍

linux系统服务介绍 在windows系统中,我们可以打开任务管理器来打开或者关闭某些服务.在Linux系统下也同样有这样的需求,那么linux下怎么打开类似于windows下的"任务管理器"呢? linux系统下调整服务的启动和不启动有两种办法: 1.ntsysv命令 如果这个命令不存在 yum install -y ntsysv 安装好之后,截图如下: 进入到这个界面后,空格键来改变*和空,空就代表不启动 关闭一些不常用的服务 禁用: atd auditd haldaemon i

Linux入门介绍

Linux入门介绍 一.Linux 初步介绍 Linux的优点 免费的,开源的 支持多线程,多用户 安全性好 对内存和文件管理优越 系统稳定 消耗资源少 Linux的缺点 操作相对困难 一些专业软件以及游戏支持度不足 Linux的应用 网络服务器 关键任务的应用(金融数据库.大型企业网管环境) 学术机构癿高效能运算任务 手持系统(PDA.手机.导航系统) 个人办公使用 Linux的吉祥物/Logo 企鹅(英文名:Tux),由来:因为Torvalds在小时候被企鹅咬过,因此印象非常深刻 在Linu

Linux Epoll介绍和程序实例

1. Epoll是何方神圣? Epoll但是当前在Linux下开发大规模并发网络程序的热门人选,Epoll 在Linux2.6内核中正式引入,和select类似,事实上都I/O多路复用技术而已,并没有什么神奇的. 事实上在Linux下设计并发网络程序,向来不缺少方法,比方典型的Apache模型(Process Per Connection,简称PPC),TPC(Thread PerConnection)模型,以及select模型和poll模型,那为何还要再引入Epoll这个东东呢?那还是有得说说

20140617-Windows连接Linux工具介绍

20140617-Windows连接Linux工具介绍 1.正常情况下都不会直接在Linux服务端进行操作,实际使用服务器和工作电脑不会在同一个地方,也不允许在服务器操作. 我这里用SecureCRT 7.0来连接服务器.提供个下载,带注册机工具: 安装完后进行注册,以管理员身份运行KEY,点patch,第一次找到程序的安装目录,选择"SecureCRT.exe"[确定],然后会自动弹出程序的配置文件目录,选"SecureCRTHelp.exe"文件[确定],接下来

linux rsync介绍(八)

[教程主题]:rsync [1] rsync介绍 Rsync(Remote Synchronize) 是一个远程资料同步工具,可通过LAN/WAN快速同步多台主机,Rsync使用所为的“Rsync演算法”来使本地主机和远程主机之间达到同步,这个演算法并不是每次都整份传送,它只传送两台计算机之间所备份的资料不同的部分,因此速度相当快. Rsync的优点如下: 1.可以镜像保存整个目录树和文件系统. 2.可以很容易的做到保持原来文件的许可权.时间.软链接等. 3.无须特使许可权即可安装. 4.拥有优

Linux的介绍

1 Linux的介绍和安装Linux是一套免费使用和自由传播的类Unix操作系统.Linux和iOS以及Mac OS X都是以Unix为核心的设计思想.Linux的系统主流是:RedHat和Cent OS. -Unix指令:pwd 显示当前目录或文件mkdir 创建目录rmdir 删除空目录 touch 创建空文件 rm 删除文件   -r同时删除所有文件 -f强制删除ls 列出当前文件和目录列表   ls-la常用参数:-l(long),-a(all),-t(time)mv 移动或者改名文件或

5.Linux软件包介绍

5.Linux软件包介绍 ·软件安装分为:1,rpm包安装,2,源码包安装, ·源代码形式: ·绝大多数开源软件都是直接以源代码形式发布,源代码一般会打包成tar.gz的归档压缩文件, ·程序源代码需要编译成为二进制形式之后才能够运行使用 ·源码包:用c语言写的,包括脚本安装包,安装较慢,一般安装在/usr/local下, ·rpm包:系统默认包,安装快,有安装默认位置, ·源代码基本编辑流程: ·1,./configure 检查编译环境,定义安装路径,相关库文件以及配置参数并声称makefil

01 Linux入门介绍

一.Linux 初步介绍 Linux的优点 免费的,开源的 支持多线程,多用户 安全性好 对内存和文件管理优越 系统稳定 消耗资源少 Linux的缺点 操作相对困难 一些专业软件以及游戏支持度不足 Linux的应用 网络服务器 关键任务的应用(金融数据库.大型企业网管环境) 学术机构癿高效能运算任务 手持系统(PDA.手机.导航系统) 个人办公使用 Linux的吉祥物/Logo 企鹅(英文名:Tux),由来:因为Torvalds在小时候被企鹅咬过,因此印象非常深刻 在Linux里,你可以通过命令

Linux Shell介绍

1.什么是shell? shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令并把它送入内核去执行. 实际上,shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核. 2.shell类型 2.1 Bourne Shell(简称,sh) 首个重要的标准Unix Shell是1970年底在V7 Unix(AT&T第7版)中引入的,并且以它的创始科技部基础条件平台"国家气象网络计算应用节点建设"(2004DKA50730)资助者 Ste