模块7 OpenStack对象存储服务(Swift)v1.0_第1页
模块7 OpenStack对象存储服务(Swift)v1.0_第2页
模块7 OpenStack对象存储服务(Swift)v1.0_第3页
模块7 OpenStack对象存储服务(Swift)v1.0_第4页
模块7 OpenStack对象存储服务(Swift)v1.0_第5页
已阅读5页,还剩22页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

OpenStack对象存储

服务(Swift)知识目标学习OpenStack对象存储,需要掌握以下相关知识。Swift架构Swirt关键技术OpenStack对象存储管理能够用命令创建和管理容器,完成文件的上传和下载能够用WebUI方式创建和删除容器,创建和删除目录,上传和下载文件技能目标目录01Swift的架构02Swift关键技术03OpenStack对象存储管理情景引入优速网络公司为满足业务需求,购买了大量多媒体版权,并决定使用OpenStack对象存储服务构建管理平台。公司IT部门通过搭建分布式Swift存储集群,实现了数据的高效存储、扩展和备份。此外,利用大数据和机器学习技术,对内容进行智能分类和检索。该平台不仅提高了多媒体内容管理效率,还支持多样化数据访问和搜索功能,确保了企业的长期发展。01Swift的架构Swift简介OpenStack对象存储服务Swift是OpenStack的一个核心组件,旨在提供高性能、高可靠和高可扩展的存储服务,使得用户可以轻松地存储和访问海量数据。Swift使用了一种分布式架构,可以在多个存储节点上存储数据,从而保证数据的高可用性和可靠性。它还提供了丰富的API和管理工具,可以方便地对存储的数据进行管理和访问。Swift是OpenStack最初两大项目之一,由Rackspace于2010年贡献给OpenStack社区,并与Nova一起开启了OpenStack的云时代。Swift的主要特点包括可扩展性、高可用性、对象存储、数据一致性和API支持。它通过分散存储数据和元数据,并允许水平扩展来实现高度可扩展性。Swift将数据存储为对象,每个对象都有一个唯一的标识符。Swift使用一致性哈希算法来分布数据,并通过数据复制和检查来确保数据的一致性和完整性。此外,Swift提供了RESTAPI,使开发人员能够轻松地与存储系统进行交互,管理对象和元数据。Swift层次架构(1/2)Swift从架构上可以划分为两个层次:访问层(AccessTier)与存储层(StorageNodes)。访问层主要包括两部分,即代理服务节点(ProxyNode)与认证服务(Authentication),分别负责REST请求与用户身份的认证。ProxyNode部署了ProxyServer,主要负责处理用户的REST请求。在接收到用户请求时,ProxyServer会对用户身份进行严格认证,并将用户提供的身份资料转发给Authentication进行处理。为了提升性能,ProxyServer利用Memcached(高性能的分布式内存对象缓存系统)进行数据和对象的缓存,从而减少对数据库的访问次数,提高用户访问速度。每次接收到用户的访问请求时,ProxyNode都会将其精准转发至相应的存储节点上。Swift层次架构(2/2)Swift从架构上可以划分为两个层次:访问层(AccessTier)与存储层(StorageNodes)。存储层由一系列的物理存储节点组成,负责对象数据的存储。存储层在物理上分为以下五个层次:地域(Region):地理上隔绝的区域,指一个物理位置或者数据中心。区域(Zone):是指在一个Region中的一个逻辑分区,用于提高数据的可用性和冗余性。存储节点(StorageNode):是指实际存储数据的物理节点。设备(Device):是指存储节点中的磁盘设备。分区(Partition):是指虚拟节点,与实际的物理节点存在映射关系。Swift存储对象的逻辑结构Swift采用层次数据模型,共设三层逻辑结构:Account/Container/Object(即账户/容器/对象),每层的节点数量均没有限制,可以任意扩展。Swift存储对象的逻辑结构功能

账户(Account)与存储的数据没有直接关系,用于提供认证和管理功能。账户是一个命名空间,用于隔离和管理多个Container。在Swift中,账户用于认证和授权用户,以及管理账户的容器和对象等。容器(Container)是Swift中的一个逻辑容器,类似于文件系统中的文件夹,可以用于管理和组织Object。容器可以包含多个Object,但是不能嵌套。此外,与容器有关元数据信息也会被存储和管理。对象(Object)是Swift中存储的基本数据单元,类似于文件系统中的文件。一个Object一般包含数据本身和元数据信息,用于描述对象的特性、大小和属性等。对象是Swift中存储数据的主要实体。Swift系统架构Swift采用完全对称、面向资源的分布式系统架构设计。所有组件都可扩展,避免因单点失效影响整个系统运转。Swift为账户、容器和对象分别定义了环(Ring)将虚拟节点(分区)映射到一组物理存储设备上,包括账户环(AccountRing)、容器环(ContainerRing)和对象环(ObjectRing)。SwiftAPISwiftAPI用于对象和元数据的创建、修改和获取,通过基于HTTP的REST服务接口对外提供服务。SwiftAPI主要提供了以下功能:存储无限数量的对象。单个对象默认最大值为5GB,这个最大值用户可以自行配置。使用内容编码元数据压缩对象。删除对象,支持批量删除,单个请求中可批量删除多达10000个对象。Swift组件(1/3)代理服务ProxyServer缓存服务MemcacheServer认证服务AuthenticationServer对外提供一个统一的公共API接口来服务于对象存取请求。对于每一个接收到的请求,代理服务器会智能地解析请求内容,定位所需账户、容器或对象在分布式存储环(Ring)中的确切位置,随后精确地将这些请求路由至相应的存储节点上进行处理。通过身份认证令牌(Token)验证访问用户的身份信息,并缓存该Token至过期时间。缓存身份认证令牌,容器和账户存在的信息,但不对实际对象数据进行任何缓存;缓存服务可采用Memcached集群,Swift会使用一致性散列算法来分配缓存地址。Swift组件(2/3)账户服务AccountServer对象服务ObjectServer容器服务ContainerServer提供账户元数据和统计信息,并维护所含容器列表的服务。每个账户的信息以SQLite数据库文件的形式存储。提供容器元数据和统计信息,并维护所含对象列表的服务。与账户服务类似,每个容器的信息也是以SQLite数据库文件的形式存储。提供对象元数据和内容存储的服务,可以用来存储、检索和删除存储在本地设备上的对象。对象以二进制文件的形式存储在文件系统上,元数据存储在文件的扩展属性中(xattrs)。Swift组件(3/3)更新服务Updater审计服务Auditor)复制服务Replicator当对象由于高负载或故障导致无法立刻更新时,更新任务将会在本地文件系统中进行排队,以便服务恢复后进行再次更新。目的在于遇到网络中断或驱动器故障等临时错误情况时,使系统保持一致的状态。Replicator将本地数据与每个远程副本进行比较,以此确保所有副本均包含数据的最新版本,从而保障数据的可靠性和一致性。检查对象、容器和账户的完整性,如果发现错误,文件将被隔离,并触发机制从其他健康副本中复制数据以恢复并覆盖损坏的副本;如果发现其他错误,则会记录到日志中。02Swift关键技术RingRing是Swift中非常核心的组件,用于记录存储在磁盘上的对象与物理位置之间的映射。Accounts、Containers和Object都有单独的环。Ring将Partition均衡地映射到一组物理设备上。Swift中Ring使用Zone来保证数据的物理隔离,每个Partition的副本(replica)都确保放在不同的Zone中,Ring记录了存储对象与物理位置的映射关系。Ring通过Zone、Device、Partition和Replica来维护映射信息。默认情况下,Ring中的每个Partition在集群中复制三次,Partition位置存储在Ring维护的映射中。Ring还负责确定哪些Device在故障情况下用于切换。一致性哈希Swift是使用改良型一致性哈希技术,通过计算将对象均匀分布到虚拟空间的虚拟节点上,在增加或删除节点时减少需移动的数据量。一致性哈希算法采用的是对232取模的方法,具体步骤如下:一致性哈希算法将整个哈希空间按照顺时针方向映射成一个虚拟的圆环,称为哈希环,整个哈希空间的取值范围为0~232-1。接着对每个服务器(服务器IP/服务器主机名)使用哈希函数进行哈希,确定每台服务器在哈希环上的位置(A、B、C)。将需要存储的对象使用相同的函数哈希计算出哈希值,确定此对象在哈希环上的位置(1、2、3、4),从此位置沿环顺时针寻找,第一台遇到的服务器就是存储该数据的服务器哈希环的虚拟节点机制为了解决哈希环的倾斜,一致性哈希算法引入了虚拟节点机制。该机制要求对每个物理服务节点执行多次哈希计算,每次计算都会生成一个独特的哈希值,这些哈希值在哈希环上各自占据一个位置,这些位置上的服务节点称为虚拟节点(A-p1、A-p2、B-p1、B-p2、C-p1、C-p2),一个实际物理节点可以对应多个虚拟节点,虚拟节点越多,Hash环上的节点就越多,缓存被均匀分布的概率就越大,Hash环倾斜所带来的影响就越小,同时数据定位算法不变,只是多了一步虚拟节点到实际节点的映射。具体做法可以在服务器IP或主机名的后面增加编号来实现。数据一致性模型Swift采用最终一致性模型(EventualConsistency),使用Quorum仲裁协议实现高可用性和无限水平扩展能力。Quorum仲裁协议中包含N、W和R三个参数,N表示数据的副本总数,W表示写操作被确认接受的副本数量,R表示读操作的副本数量。Quorum仲裁协议的具体实现如下:强一致性:R+W>N,确保读写操作的副本集合会产生交集,从而确保可以读取到最新版本。弱一致性:R+W<=N,当读写操作的副本集合没有交集,就可能会读取到脏数据;适合对一致性要求较低的场景。Swift默认配置是N=3,W=2,R=1或2,即每个对象会有三个副本,这三个副本会被存储在不同区域的节点上;W=2表示至少需要更新两个副本才算写成功。当R=1(弱一致性)时,意味着某一个读操作成功便立刻返回结果,这种情况下会读取到旧版本。当R=2(强一致性)时,需要通过在读操作请求头中增加x-newest=true参数来同时读取2个副本的元数据信息,然后比较时间戳来确定哪个是最新版本。数据上传及下载上传(Upload)客户端使用RESTAPI发出HTTP请求,将对象放入现有容器中。ProxyServer接收请求,依据账户名、容器名和对象名在环中进行查找,确定该对象所在的分区的存储节点,然后将数据发送到每个存储节点,并将其放置在相应的分区中。三次写入中至少成功两次,客户端才会收到上载成功的通知,随后异步更新容器数据库,以反映其中有一个新对象。下载(Download)使用与上传时相同的哈希算法,确定分区索引,并查找包含该分区的存储节点。向其中一个存储节点发出获取对象的请求,如果失败,则向其他节点发出请求。03OpenStack对象存储管理OpenStack命令行CLI使用命令行CLI方式管理对象存储时,需要在控制节点上执行相应命令来创建容器,并在容器中完成数据的上传和下载。命令作用命令作用openstackcontainercreate创建容器openstackobjectcreate上传文件(对象)到容器中openstackcontainerdelete删除容器openstackobjectdelete删除容器中的文件(对象)openstackcontainerlist列出所有容器openstackobjectlist列出容器中的所有文件(对象)openstackcontainersave本地保存容器内容openstackobjectsave本地保存文件(对象)内容openstackcontainerset设置容器的属性openstackobjectset设置文件(对象)属性openstackcontainershow显示容器细节openstackobjectshow现实文件(对象)细节openstackcontainerunset取消设置容器的属性OpenStackWebUIWebUI方式是管理员在页面进行容器的创建及文件的上传下载。参数作用openstackcontainercreate创建容器openstackcontainerdelete删除容器openstackcontainerlist列出所有容器openstackcontainersave本地保存容器内容openstackcontainerset设置容器的属性openstackcontainersho

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论