1、存储概述
2、块存储
2.1cinder简介
Cinder提供了一个中间的抽象层,为不同的存储技术,如DAS、NAS、SAN、对象存储及分布式文件系统等,提供了统一的接口。
2.2架构
Cinder Client封装Cinder提供的rest接口,以CLI形式供用户使用。封装Cinder提供的REST接口
Cinder API对外提供rest API,对操作需求进行解析,对API进行路由寻找相应的处理方法。包含卷的增删改查(包括从源卷、镜像、快照创建 )、快照增删改查、备份、volume type管理、挂载/卸载( Nova调用)等。对外提供的Rest API,对操作需求进行解析
Cinder Scheduler负责收集backend上报的容量、能力信息,根据设定的算法完成卷到指定cinder-volume的调度。选择最佳节点创建卷
Cinder Volume多节点部署,使用不同的配置文件、接入不同的backend设备,由各存储厂商插入driver代码与设备交互完成设备容量和能力信息收集、卷操作。
Cinder Backup实现将卷的数据备份到其他存储介质(目前SWIFT/Ceph/TSM提供了驱动)
SQL DB提供存储卷、快照、备份、service等数据,支持MySQL、PG、MSSQL等SQL数据库。
Cinder默认使用LVM( Logical Volume Manager )作为后端存储( Backendstorage),而LVM通过在操作系统与物理存储资源之间引入逻辑卷( LogicalVolume)的抽象来解决传统磁盘分区管理工具的问题
LVM将众多不同的物理存储资源( 物理卷、Physical Volume,如磁盘分区)组成卷组。LVM从卷组中创建一个逻辑卷,然后将ext3、ReiserFS等文件系统安装在这个逻辑卷上。
除了LVM,目前Cinder已经以驱动的形式支持众多存储技术或存储厂商的设备作为后端存储,如SAN ( Storage Area Network ) 、Ceph、Sheepdog,以及EMC、华为等商的设备。
根据后端的能力进行筛选
Drivers定期报告后端的能力和状态。管理员创建的卷类型 ( volume type )。创建卷时,用户指定卷类型。
DFS分布式文件系统,NFS网络文件系统
2.3工作原理
创建卷类型的目的是为了筛选不同的后端存储,例如SSD、SATA、高性能、低性能等通过创建不同的自定义卷类型,创建卷时自动筛选出合适的后端存储。
Nova调用Cinder API创建卷,传递主机的信息,如hostname,isCsl initiator name,FC WWPNs。
Cinder API将该信息传递给Cinder Volume。
Cinder Volume通过创建卷时保存的host信息找到对应的Cinder Driver。
Cinder Driver通知存储允许该主机访问该卷,并返回该存储的连接信息 (如isCSl iqn,portal,FC Target WWPN,NFS path等)。
Nova调用针对于不同存储类型进行主机识别磁盘的代码( Cinder 提供了brick模块用于参考)实现识别磁盘或者文件设备。
Nova通知Cinder已经进行了挂载。
Nova将主机的设备信息传递给hypervisor来实现虚拟机挂载磁盘。
2.4实验
3、对象存储
3.1简介
Swift
Swift是OpenStack对象存储服务,可以存储虚拟机实例创建所需的镜像Swift作为OpenStack持久存储之一,比较适合存放静态数据
3.2架构
访问层主要包括两部分,即Proxy Node (代理服务节点)与Authentication ( 认证)分别负责RESTful请求与用户身份的认证。
在Proxy Node节点上运行着Proxy Server,负责处理用户的RESTful请求,在接收到用户请求时,需要对用户的身份进行认证,此时用户所提供的身份资料会被转发给认证服务进行处理。
Proxy Server可以使用Memcached (高性能的分布式内存对象缓存系统)进行数据和对象的缓存,减少数据库读取的次数,提高用户的访问速度。
Proxy Node在收到用户的访问请求时,会将其转发到相应的存储节点上存储层由一系列的物理存储节点组成,负责对象数据的存储。
存储层在物理上分为以下5个层次:
Region: 地理上隔绝的区域,每个Swift系统默认至少有1个Region。
Zone: 在每个Region的内部又划分了不同的Zone来实现硬件上的隔绝。可以简单地将其理解为一个Zone代表了一组独立的存储节点。
Storage Node: 存储对象数据的物理节点。
Device: 可以简单地理解为磁盘
Partition: 仅仅指在Device上的文件系统的目录,和我们通常所理解的硬盘分区是完全不同的概念
使用命令swift stat可以显示Swift中的帐户、容器和对象的信息Swift为帐户,容器和对象分别定义了Ring( 环)将虚拟节点(分区)映射到一组物理存储设备上,包括Account Ring、Container Ring 、Object Ring。Ring记录了存储对象与物理位置的映射关系,通过Zone、Device、Partition和Replica来维护映射信息。
存储位置有如下三种:
/account
帐户存储位置是唯一命名的存储区域,其中包含帐户本身的元数据(描述性信息)以及帐户中的容器列表。
请注意,在Swift中,帐户不是用户身份。当您听到帐户时,请考虑存储区域。
/account/container
容器存储位置是帐户内的用户定义的存储区域,其中包含容器本身和容器中的对象列表的元数据。
/account/container/object0
对象存储位置存储了数据对象及其元数据的位置
Swift组件:
Proxy Server:代理服务,对外提供对象服务 API,由于采用无状态的 REST 请求协议,可以进行横向扩展来均衡负载
AuthenticationServer:认证服务,验证访问用户的身份信息,并获得一个对象访问令牌( Token ),在一定的时间内会一直有效,验证访问令牌的有效性并缓存下来直至过期时间
Cache Server:缓存服务,缓存的内容包括对象服务令牌,账户和容器的存在信息,但不会缓存对象本身的数据;缓存服务采用Memcached集群,Swift会使用一致性散列算法来分配缓存地址
Proxy Server可以说是Swift的核心,运行着swift-proxy-server进程。它提供Swift API服务,负责Swift其余组件间的通信。对于每个客户端的请求,它在Ring中查询相应的Account、Container以及Obiect的位置,并且转发这些请求。
Account Server:帐户服务,提供帐户元数据和统计信息,并维护所含容器列表的服务每个帐户的信息被存储在一个 SQLite 数据库中
Container Server:容器服务,提供容器元数据和统计信息,并维护所含对象列表的服务每个容器的信息也存储在一个 SQLite 数据库
Object Server:对象服务,提供对象元数据和内容服务,每个对象的内容会以文件的形式存储在文件系统中元数据会作为文件属性来存储,建议采用支持扩展属性的XFS文件系统
Auditor:审计服务,检查对象,容器和帐户的完整性,如果发现比特级的错误,文件将被隔离,并复制其他的副本以覆盖本地损坏的副本其他类型的错误会被记录到日志中
Replicator:复制服务,检测本地分区副本和远程副本是否一致,发现不一致时会采用推式( Push ) 更新远程副本,并且确保被标记删除的对象从文件系统中移除
Updater:更新服务,当对象由于高负载的原因而无法立即更新时任务将会被序列化到在本地文件系统中进行排队,以便服务恢复后进行异步更新
Account Reaper: 账户清理服务,移除被标记为删除的帐户,删除其所包含的所有容器和对象。
CRUD: 指在做计算处理时的增加 ( Create ) 、检索( Retrieve ) 、更新(Update )和删除 ( Delete ) 几个单词的首字母简写
Swift API主要提供了以下功能:
存储对象,并没有限制对象的个数。单个对象的大小默认最大值为5 GB,这个最大值用户可以自行配置。
对于超过最大值的对象,可以通过大对象中间件进行上传和存储。
压缩对象。
删除对象,支持批量删除。
3.3工作原理
Swift工作原理概述
Proxy Server负责处理用户的对象存取请求,Authentication (认证服务)负责对用户的身份进行认证,Proxy Server在接收到用户请求后,会把请求转发给存储节点上的Account Server、Container Server与Obiect Server进行具体的对象操作,而对象与其各个副本之间的数据一致性则由Auditor、Updater和Replicator来负责
虚拟空间的大小通常采用2的n次幂,便于进行高效的移位操作;然后通过独特的数据结构Ring( 环)再将虚拟节点映射到实际的物理存储设备上,完成寻址过程
4、缩略语
CRUD: 指在做计算处理时的增加 ( Create )、检索( Retrieve ) 、更新 (Update ) 和删除( Delete )几个单词的首字母简写。crud主要被用在描述软件系统中数据库或者持久层的基本操作功能。
CIFS: Common internet File System,通用网际文件系统,一种网络文件系统访问协议。Windows客户端使用CIFS协议向Windows服务器发送文件访问请求
DAS: Direct Attached Storage,直连式存储直接附属存储,存储与服务器的一种连接方式,存储设备和服务器通过线缆( 如光纤 ) 直接连接。
NFS:Network File System,网络文件系统,一种文件共享服务,由专用的服务器通过文件系统管理存储空间,对外通讨NFS (Network File System,网络文件系统)或者CIFS(Common lnternet File System, 通用网际文件系统)等协议提
供文件级的访问功能。SAN: Storage Area Network,存储区域网络,是一种用高速(光纤)网络联接专业主机服务器的一种储存方式,此系统位于主机群的后端。