GlusterFS基础知识
来源:互联网 发布:优店网络是怎么转店的 编辑:程序博客网 时间:2024/05/16 02:00
glusterfs是一个横向扩展的分布式文件系统,就是把多台异构的存储服务器的存储空间整合起来给用户提供统一的命名空间。用户访问存储资源的方式有很多,可以通过NFS,SMB,HTTP协议等访问,还可以通过gluster本身提供的客户端访问。
二、典型部署拓扑图
三、概念和算法
1、Trusted Storage Pool
• 一堆存储节点的集合• 通过一个节点“邀请”其他节点创建,这里叫probe
• 成员可以动态加入,动态删除
添加命令如下:
node1# gluster peer probe node2
删除命令如下:
node1# gluster peer detach node3
• Brick是一个节点和一个导出目录的集合,e.g. node1:/brick1
• Brick是底层的RAID或磁盘经XFS或ext4文件系统格式化而来,所以继承了文件系统的限制
• 每个节点上的brick数是不限的
• 理想的状况是,一个集群的所有Brick大小都一样
3、Volumes
• Volume是brick的逻辑组合• 创建时命名来识别
• Volume是一个可挂载的目录
• 每个节点上的brick数是不变的,e.g.mount –t glusterfs www.std.com:test /mnt/gls
• 一个节点上的不同brick可以属于不同的卷
• 支持如下种类:
a) 分布式卷
b) 条带卷
c) 复制卷
d) 分布式复制卷
e) 条带复制卷
f) 分布式条带复制卷
• 文件分布存在不同的brick里
• 目录在每个brick里都可见
• 单个brick失效会带来数据丢失
• 无需额外元数据服务器
分布式卷内部的hash分布如下:
gluster是没有元数据服务器的,它定位文件和寻址都是通过哈希算法,这里使用的叫Davies-Meyer hash algorithm,可寻址空间为2^32次方,即0-4294967296,例如这里有四个节点,那么0-1073741824为node1的可寻址空间,1073741825-214748348为node2的可寻址空间,以此类推。访问一个文件时,通过文件名计算出一个地址,例如2142011129,属于1073741825-214748348,则将它存在node2中。
3.2 复制卷• 同步复制所有的目录和文件
• 节点故障时保持数据高可用
• 事务性操作,保持一致性
• 有changelog
• 副本数任意定
复制卷的读写如下图所示:
• 最常见的一种模式
• 读操作可以做到负载均衡
3.4 条带卷
• 文件切分成一个个的chunk,存放于不同的brick上
• 只建议在非常大的文件时使用(比硬盘大小还大)
• Brick故障会导致数据丢失,建议和复制卷同时使用
• Chunks are files with holes – this helps in maintaining offset consistency.
4、接入机制
• FUSE based Native protocol• NFSv3
• SMB
• Libgfapi
• ReST/HTTP
• HDFS
4.1 FUSE based native access
原生客户端接入时,请求某一文件时直接定位到该文件在那一台或几台节点上,向那几台节点发出请求,完成操作,如下图所示:
• 提供编程接口,通过这个接口写程序访问
• 减少了上下文切换
• 通过这个接口集成了qemu, samba, NFS Ganesha
• 同步和异步的接口都提供
• 实现各种语言的绑定
4.4 libgfapi v/sFUSE-FUSE access
gluster是用户空间的文件系统,只能通过FUSE和内核交互,所以传下来的的命令都是先由内核虚拟文件系统VFS接受,FUSE注册的一个虚拟设备/dev/fuse知道这时候来了一个请求,就接受过来,不传到底层XFS或EXT4...文件系统了,有gluster在FUSE中注册的一系列读写程序来处理,完成这个请求,这一系列读写处理就是通过网络传出去,在节点的glusterfsd接收到请求后,完成操作,再将结果通过网络回传到客户端,如下图所示:
5、Customizable Translator Stack
Translator相当于gluster中的功能模块,一个或多个translator加在一起完成一个功能,比如说cache的设置,线程数的设置,内置NFS的相关设置等,translator之间是堆栈形式一层一层组织的,并不是无序的。
6、Ecosystem Integration(集成生态系统)
• OpenStack:这个很有名了,可以理解为一套工具让你通过他享受公有云和私有云以及其他相关的各种服务• Samba:windows和unix之间实现资源共享
• Ganesha:一个印度人写的用户空间的NFS,这个印度人起了个难读的名字,和印度一个长着大象鼻子的智慧神一样的,叫伽内什
• oVirt:基于KVM(Kernel-based Virtual Machine) 的虚拟化存储管理软件
• qemu:也是和虚拟化相关的
• Hadoop:分布式并行计算的,是MapReduce生态圈的
• pcp:我也不知道是啥
• Proxmox:Proxmox VE (Proxmox Virtual Environment) 是一个集成OPENVZ 支持KVM应用的环境• uWSGI:基于Python的Web项目部署方法,像php-cgi一样监听同一端口,进行统一管理和负载平衡
7、Use Cases - current
- Unstructured data storage
- Archival
- Disaster Recovery
- Virtual Machine Image Store
- Cloud Storage for Service Providers
- Content Cloud
- Big Data
- Semi-structured & Structured data
- GlusterFS基础知识
- GlusterFS分析
- GlusterFs文件系统
- Glusterfs介绍
- #glusterfs error
- GlusterFS错误
- glusterfs 安装
- glusterfs笔记
- GlusterFS学习
- glusterfs进程
- GlusterFS源码解析 —— GlusterFS 简介
- GlusterFS源码解析 —— GlusterFS 日志
- GlusterFS源码解析 —— GlusterFS 配置
- glusterfs分析-系列一:glusterfs整体分析
- GlusterFS安装/配置/测试
- GlusterFS集群文件系统研究
- glusterfs安装配置
- GlusterFS中的RAID
- 【数据分析】Excel数据分析功能藏在哪里
- 如何用Maven创建web项目(具体步骤)
- ProjectRuler 算法练习之 位数组成字符串相同的整数
- 快速简单有效的转换PDF格式文档
- android之动画-AnimationDrawable控制逐帧动画
- GlusterFS基础知识
- 正整数划分的另一种解法
- 防止屏蔽网络蛛蛛网络爬虫配置
- 详谈隐藏Tabbar的几种方法
- SQL Server T-SQL高级查询
- Apache ab测试工具使用
- 1008. 数组元素循环右移问题 (20)
- spring基础
- Oracle中如何插入特殊字符: & 和 ' (多种解决方案)