一. 存储概念


1.块存储的多种实现:

块存储: 就好比硬盘一样, 直接挂在到主机,一般用于主机的直接存储空间和数据库应用的存储

1.磁盘+LVS: 单机硬盘纯存储
2.DAS(DELL MD系列): 直连式存储
3.SAN 存储: 通过FC连接

2.文件存储的多种实现:

文件存储:与较底层的块存储不同, 上升到了应用层, 一般指的就是 NAS ,一套网络储存设备,。

1.NAS(nfs): 通过TCP/IP连接,延长较大,性能有限,单点故障

3.对象存储的解释:

对象存储:具备块存储的高速以及文件存储的共享等特性, 较为智能, 有自己的CPU, 内存, 网络和磁盘, 比块存储和文件存储更上层, 云服务商一般提供用户文件上传下载读取的Rest API, 方便应用集成此类服务。

二. Glusterfs相关


参考资料:http://gluster.readthedocs.io/en/latest/Quick-Start-Guide/Quickstart/

1.glusterfs优点:

适合存储比较大的文件,比如openstack的镜像或者视频,存储小文件性能堪忧。

2.安装glusterfs:

安装环境: 172.16.1.211 , 172.16.1.213

在两台机器分别安装,注意命令顺。

# yum install centos-release-gluster
# yum install glusterfs-server
# /etc/init.d/glusterd start

3.建立信任关系:

只要在一台上面建立

[root@SH_T_ansiblecli_01 ~]# gluster peer probe 172.16.1.213   #后面更另外一台的IP
[root@SH_T_ansiblecli_01 ~]# gluster peer status

4.创建名称为“test-volume ”的分布式卷:

172.16.1.211上创建目录

# mkdir /data/exp1 -p

172.16.1.213上创建目录

# mkdir /data/exp2 -p

随意机器输入:

# gluster volume create test-volume 172.16.1.211:/data/exp1 172.16.1.213:/data/exp2
ps:一般会提示目录不是在独立硬盘上,无法创建,后面加上force就可以了
# gluster volume create test-volume 172.16.1.211:/data/exp1 172.16.1.213:/data/exp2 force # gluster volume info 查看逻辑卷信息
# gluster volume start test-volume #启动逻辑卷

5.创建名称为“rd1-volume ”的复制卷:



172.16.1.211上创建目录

# mkdir /data/rd1-exp3 -p

172.16.1.213上创建目录

# mkdir /data/rd1-exp4 -p

随意机器输入:

# gluster volume create rd1-volume replica 2 transport tcp 172.16.1.211:/data/rd1-exp3 172.16.1.213:/data/rd1-exp4 force
cp-volume: 卷名称
replica 2: 复制卷,复制2份,不加参数默认是分布式卷。
transport tcp: 通过tcp传输 # gluster volume info cp-volume #查看逻辑卷信息
# gluster volume start cp-volume #启动逻辑卷

6.创建名称为“rd0-volume ”的条带卷:



172.16.1.211上创建目录

# mkdir /data/rd0-exp1 -p
 

172.16.1.213上创建目录

# mkdir /data/rd0-exp2 -p
 

随意机器输入:

# gluster volume create rd0-volume stripe 2 transport tcp 172.16.1.211:/data/rd0-exp1 172.16.1.213:/data/rd0-exp2 force
rd0-volume: 卷名称
stripe 2: 条带卷,服务器2台,不加参数默认是分布式卷。
transport tcp: 通过tcp传输 # gluster volume info rd0-volume #查看逻辑卷信息
# gluster volume start rd0-volume #启动逻辑卷
 

7.生产推荐使用,分布式复制卷:



需要4台服务器:server1,server2,server3,server4

# gluster volume create test1-volume replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
ps: 与创建复制卷命令相同,但复制2份后面跟4台服务器
 

8.挂载glusterfs的逻辑卷:

# yum install glusterfs-client     #安装gluster客户端
# mkdir /mnt/g1 /mnt/g2 /mnt/g3 #创建3个挂载点
# mount.glusterfs 172.16.1.211:/test-volume /mnt/g1 #挂载分布式卷到g1目录
# mount.glusterfs 172.16.1.211:/rd1-volume /mnt/g2
# mount.glusterfs 172.16.1.211:/rd0-volume /mnt/g3
 

9.设置磁盘配额:

# gluster volume quota test-volume enable    #为test-volume卷启动配额
# gluster volume quota test-volume limit-usage /data 10GB #设置data目录为10g的配额
# gluster volume quota test-volume list #查看test-volume卷配额情况
 

10.对逻辑卷进行扩展:

# mkdir /data/exp9   #模拟创建一个新磁盘
# gluster volume add-brick test-volume 172.16.1.211:/data/exp9 force
#将新创建的"/data/exp9"磁盘加入"test-volume"的逻辑卷中
# gluster volume rebalance test-volume start #重新均衡逻辑卷内容,不运行此命令新加入的磁盘就不会写入内容 # gluster volume info test-volume #查看是否加入
# gluster volume status test-volume #查看磁盘状态
 

11.对逻辑卷进行收缩:

这个操作要小心,可能会丢失数据

# gluster volume remove-brick test-volume 172.16.1.211:/data/exp9 force
#将“/data/exp9”磁盘从“test-volume”逻辑卷中删除
 

三. FastDFS相关


1.fastdfs的特性:

1.纯C实现
2.只能通过专有的API访问
3.高性能,高扩展
4.一般用在大于4K小于500M的文件存储
 

2、FastDFS的上传过程

FastDFS向使用者提供基本文件访问接口,比如upload、download、append、delete等,以客户端库的方式提供给用户使用。



根据前边的讲解,我们知道Storage Server会定期的向Tracker Server发送自己的存储信息。当Tracker Server Cluster中的Tracker Server不止一个时,各个Tracker之间的关系是对等的,所以客户端上传时可以选择任意一个Tracker。

当Tracker收到客户端上传文件的请求时,会为该文件分配一个可以存储文件的group,当选定了group后就要决定给客户端分配group中的哪一个storage server。当分配好storage server后,客户端向storage发送写文件请求,storage将会为文件分配一个数据存储目录。然后为文件分配一个fileid,最后根据以上的信息生成文件名存储文件。文件名的格式如下:

3.FastDFS的安装部署:

官网:https://github.com/happyfish100

部署2台服务器: 172.16.1.211 172.16.1.213

1.先安装lib包
# git clone https://github.com/happyfish100/libfastcommon.git #下载lib包
# cd libfastcommon/
# ./make.sh
# ./make.sh install #要先安装gcc,make等 2.安装fastdfs:
# git clone https://github.com/happyfish100/fastdfs.git
# cd fastdfs
# ./make.sh
# ./make.sh install 3.创建文件存放目录:
# mkdir -p /data/fdfs_storaged
# mkdir -p /data/fdfs_trackerd
 

4.修改配置文件:

两台服务器都要做下面的操作

# cd /etc/fdfs/

# cp storage.conf.sample storage.conf

# cp tracker.conf.sample tracker.conf

# vim tracker.conf #追踪服务器配置

base_path=/data/fdfs_trackerd    
 

# vim storage.conf

base_path=/data/fdfs_storaged/base
store_path0=/data/fdfs_storaged/store tracker_server=172.16.1.211:22122 #指定追踪服务器IP,我们有两台就配置两个
tracker_server=172.16.1.213:22122
 

# mkdir /data/fdfs_storaged/base

# mkdir /data/fdfs_storaged/store

5.启动fastdfs服务:

# /etc/init.d/fdfs_trackerd start
# /etc/init.d/fdfs_storaged start
 

6.配置fastdfs客户端:

# cd /etc/fdfs/

# cp client.conf.sample client.conf

# mkdir /data/fdfs_storaged/tmp

# vim client.conf

base_path=/data/fdfs_storaged/tmp    #存放日志目录

tracker_server=172.16.1.211:22122
tracker_server=172.16.1.213:22122
 

7.通过客户端连接并上传文件:

上传"/etc/passwd"文件到fastdfs服务器:
# fdfs_upload_file /etc/fdfs/client.conf /etc/passwd 下载刚才上传的文件:
# fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/rBAB01mCyc-AJ9pnAAAFfnXniCQ5694871 查看文件属性:
# fdfs_file_info /etc/fdfs/client.conf group1/M00/00/00/rBAB01mCyc-AJ9pnAAAFfnXniCQ5694871 删除上传的文件:
# fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/rBAB1VmCz8qABQC4AAAABncc3SA670.txt 监控fastdfs的状态:
# fdfs_monitor /etc/fdfs/client.conf
 

8.通过nginx访问fastdfs:

# tar -zxvf nginx-1.10.2.tar.gz
# cd nginx-1.10.2 下载fastdfs的nginx模块,编译安装的时候加进去
# git clone https://github.com/happyfish100/fastdfs-nginx-module.git
# ./configure --prefix=/usr/local/nginx-fastdfs --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --add-module=./fastdfs-nginx-module/src/
# make && make install 拷贝配置文件到fasstdfs配置里面
# cp fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
# cd /root/fastdfs/conf/ #进入fastdfs安装包文件夹
# cp anti-steal.jpg http.conf mime.types /etc/fdfs/
 

# cd /usr/local/nginx-fastdfs/

# vim conf/nginx.conf 配置文件server中添加

         location /group1/M00 {
root /data/fdfs_storaged/store;
ngx_fastdfs_module;
}
 

# vim /etc/fdfs/mod_fastdfs.conf #修改客户端配置文件

tracker_server=172.16.1.211:22122
tracker_server=172.16.1.213:22122 url_have_group_name = true #url是否包含group信息
store_path0=/data/fdfs_storaged/store
 

启动nginx后就可以通过url访问了:

# curl 172.16.1.211/group1/M00/00/00/rBAB01mC7OqAKx6RAAAFfnXniCQ1855579

ps:生产环境可以用nginx反向代理访问,在group的每个节点上都装个nginx-fastdfs

分布式存储---FastDFS+GlusterFS的更多相关文章

  1. 【分布式存储】GlusterFS failing to mount at boot with Ubuntu 14.04

    GlusterFS failing to mount at boot with Ubuntu 14.04   Previously I asked about mounting GlusterFS a ...

  2. 【分布式存储】Glusterfs快速搭建

    目录 环境准备 步骤1,保证至少有三台服务器 步骤2,格式化和配置硬盘 步骤3,安装GlusterFS 步骤4,配置防火墙 步骤5,配置 trusted pool 步骤6,设置GlusterFS卷 步 ...

  3. 分布式存储之GlusterFS

    公众号关注 「开源Linux」 回复「学习」,有我为您特别筛选的学习资料~ 1.glusterfs概述 GlusterFS系统是一个可扩展的网络文件系统,相比其他分布式文件系统,GlusterFS具有 ...

  4. 解决:使用java连接Fastdfs,上传文件时报:SocketTimeOutException的问题

    最近研究了下分布式存储Fastdfs,在centOS上配置完后,使用centOS或putty连接并上传图片,然后用浏览器读取storage server返回的URL,一切正常. 但是,使用eclips ...

  5. FastDFS源码学习(一)FastDFS介绍及源码编译安装

    FastDFS是淘宝的余庆主导开发的一个分布式文件系统,采用C语言开发,性能较优.在淘宝网.京东商城.支付宝和某些网盘等系统均有使用,使用场景十分广泛. 下图来源:https://blog.csdn. ...

  6. 学习git(一)

    一.自动化运维 1.网络层(接入层.汇聚层.核心层): 1 LB+HA(L4.L7): 2 服务层(reverse proxy cache.应用层.web层.SOA层.分布式层.DAL): 3 数据层 ...

  7. kubernetes入门(06)kubernetes的核心概念(3)

    一.API 对象 API对象是K8s集群中的管理操作单元.K8s集群系统每支持一项新功能,引入一项新技术,一定会新引入对应的API对象,支持对该功能的管理操作.例如副本集Replica Set对应的A ...

  8. kubernetes 存储卷

    kubernetes 存储卷    数据卷用于实现容器持久化数据,Kubernetes对于数据卷重新定义,提供了丰富强大的功能.在Kubernetes系统中,当Pod重建的时候,数据卷会丢失,Kube ...

  9. Kubernetes基本功能

    说明 目前kubernetes的资料介绍很多也很深刻,本文只是做一个针对自己学习k8s过程的介绍,仅仅是学习笔记的记录. 一.基本使用 1. 命令行 集群信息 Namespace 信息 Control ...

随机推荐

  1. 企业必读:BI数据可视化工具选型

    伴随着大数据时代的到来,企业对数据的需求从"IT主导的报表模式"转向"业务主导的自助分析模式",可视化BI工具也随之应运而生.面对如此众多的可视化BI工具,我们 ...

  2. 有关SQL(2012)突然无法连接服务器的问题解答

    Sql Server无法启动的4中原因:(先得分析出问题所在) 原文地址:http://www.cnblogs.com/JiangLe/p/4000497.html SQL Server 无法启动的原 ...

  3. WPS:从某一页开始编号,并且奇数页偶数页页眉页脚的页码位置不同

    1.开始页的页眉页脚同时取消勾选"同前页" 此后,这一页就是以后所有页的第一页了 2.删去开始页之前所有的页眉页脚 3.页眉页脚选项中,设置奇偶页不同,其它都不用设置

  4. C# 反编译工具之dnSpy

    下载地址:https://github.com/0xd4d/dnSpy/releases无需安装,和 ILSPY同门,感觉比ILSPY还强大 直接把dll拖拽到程序集资源管理器里面就可以啦

  5. Tableau绘制漏斗图、甘特图、瀑布图、镶边面积图、阴影坡度图

    Tableau绘制漏斗图.甘特图.瀑布图.镶边面积图.阴影坡度图 本文首发于博客冰山一树Sankey,去博客浏览效果更好.直接右上角搜索该标题即可 一. 漏斗图 数据源 1.1 分色直条漏斗图 (1) ...

  6. JAVA——类与对象

    目录 类与对象 一.类 二.对象 2.1对象的内存布局形式 三.类与对象 3.1如何创建 3.2如何访问属性 3.2类与对象的分配机制 3.2.1Java内存的结构分析 注意事项和细节 类与对象 为什 ...

  7. 2. Java入门

    2.Java入门 2.1.安装开发环境 卸载JDK 删除Java的安装目录 删除JAVA_HOME 删除path下关于Java的目录 java -version 安装JDK 百度搜索JDK8,找到下载 ...

  8. Laravel 8 图片上传七牛云

    1.利用 composer 下载依赖包 composer require itbdw/laravel-storage-qiniu 2.打开 config 文件夹下的 app.php 文件,在 prov ...

  9. BBS项目分布搭建二(个人站点相关)

    BBS项目分布搭建二 1. 首页详情补充 # 在home.html文件中 body标签内补充: <div class="container-fluid"> <di ...

  10. OSPF协议原理及配置5-LSA分析

    OSPF协议原理及配置5-LSA分析   前面,已经介绍了邻接关系的建立和LSDB的同步.通过同步过程的介绍,我们可以了解LSDB的同步是通过交互LSA实现的. 不同角色的路由器发出的LSA的内容是不 ...