一. 存储概念


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. 别再用 Redis List 实现消息队列了,Stream 专为队列而生

    上回说到使用 Redis 的 List 实现消息队列有很多局限性,比如: 没有良好的 ACK 机制: 没有 ConsumerGroup 消费组概念: 消息堆积. List 是线性结构,想要查询指定数据 ...

  2. Oracle之SQL限定查询

    WHERE限定条件 /*语法结构:SELECT * | 列名1[,列名2...] | 表达式FROM 表名 WHERE 限定条件; */ --查询职位为CLERK的员工信息 SELECT * FROM ...

  3. 数据结构与算法入门系列教程-C#

    数据结构与算法入门系列教程 (一)为啥要学习数据结构与算法 曾经我也以为自己很牛逼,工作中同事也觉得我还可以,领导也看得起我,啥啥啥都好,就这样过了几年,忽然发现自己学新东西没劲.时代都变了,而我还只 ...

  4. C#中String StringBuilder

    String和StringBuilder和StringBuffer,这三个都是值得深究一翻的,可能很多人会说,实在不行的话,都全部用StringBuilder,啥事没有,我不能说你的想法事不正确的,但 ...

  5. k8s 中 nfs作为存储的三种方式

    1.安装nfs服务.直接给命令 yum install nfs-utils vim /etc/exports /data/k8s/ 172.16.1.0/24(sync,rw,no_root_squa ...

  6. 革命性创新,动画杀手锏 @scroll-timeline

    在 CSS 规范 Scroll-linked Animations 中,推出了一个划时代的 CSS 功能.也就是 -- The @scroll-timeline at-rule,直译过来就是滚动时间线 ...

  7. 零基础,三个月内,找到??? java后端开发工作

    一.分析你的问题 出于尊重,先分析一下你的原问题吧,从您的问题,我提取到关键信息:"零基础"."三个月内"."找到工作",最后一个关键词&q ...

  8. C语言之判断质数算法

    今天学校OJ的一题判断是质数和合数. 首先我们要弄明白质数和合数的概念:质数就是除了本身和1以外没有其他因数的数,合数就是除了本身和1以外还有其他因数的数.注意:1既不是质数也不是合数. 明白了概念, ...

  9. 一比一还原axios源码(零)—— 概要

    从vue2版本开始,vue-resource就不再被vue所维护和支持,官方也推荐使用axios,所以,从我使用axios至今,差不多有四五年了,这四五年的时间只能算是熟练应用,很多内部的实现和原理不 ...

  10. vue3-码一下组件的v-model

    RT,码一下组件的v-model,知识点太多,没听懂...,后面学完回来再仔细看看