swift和cips的区别,swift有什么用
本文介绍OpenStack存储组件,它可以为其他OpenStack项目提供持久存储。
关于OpenStack计算的文章中提到,计算是计算工作负载的核心。在某些情况下,可能只需要一个计算实例,但通常需要贯穿实例生命周期的持久存储。或者可能需要在运行的服务之间共享大量数据。
实际上,在某些情况下,运行在OpenStack环境之外的应用依赖于复制的、可扩展的和可靠的存储,而OpenStack存储符合这些规范。但在评估替代方案之前,重要的是要认识到OpenStack和许多其他云服务有两种根本不同的存储服务:
OpenStack Swift是对象存储的一个例子,它的概念类似于亚马逊简单存储服务。相反,OpenStack Cinder代表块存储,类似于亚马逊弹性块存储。block的Cinder(煤渣)是OpenStack块存储的项目名称;它为来宾虚拟机(VM)提供持久的数据块存储。数据块存储通常是可扩展文件系统、最佳性能以及与需要访问原始数据块级存储的企业存储服务和应用程序集成所必需的。
系统可以暴露和连接设备,然后管理服务器的创建、连接和断开。应用程序编程接口(API)还可以简化快照管理,以便备份数据块存储卷。
斯威夫特还是煤渣?什么时候使用,那么你应该使用哪个:雨燕还是煤渣?答案取决于你的应用。如果您需要运行商业或遗留应用程序,那么选项很少。它们不太可能被编码为利用Swift API,但是您可以轻松地安装Cinder磁盘,并表现得像直接连接到大多数应用程序的存储一样。
当然,您也可以将Cinder用于新的应用程序,但您不会获得Swift带来的灵活性和冗余性的好处。如果您的程序员能够应对挑战,那么Swift的分布式和可扩展架构绝对是一个值得考虑的特性。
Swift是这两个产品中比较成熟的一个:自从OpenStack诞生以来,它就是一个核心项目。Swift作为一个分布式存储平台,具有可访问的API,可直接集成到应用程序中,或用于存储虚拟机映像、备份和归档以及较小的文件(如照片和电子邮件)。
对象存储有两个主要的概念——对象和容器。
对象是主要的存储实体。包括其内容和与存储在OpenStack对象存储系统中文件相关联的任何可选元数据。数据以未压缩和未加密的格式存储,由对象名称、其容器和任何键值对形式的元数据组成。对象分布在整个数据中心的多个磁盘上,因此Swift可以确保数据复制和完整性。分布式操作可以利用低成本的商用硬件,同时增强可扩展性、冗余性和耐用性。
容器类似于Windows文件夹,因为它是一组文件的存储盒。容器不能嵌套,但是租户可以创建无限数量的容器。对象必须存储在一个容器中,因此必须至少有一个容器才能使用对象存储。
与传统的文件服务器不同,Swift分布在多个系统中。它自动存储每个对象的冗余副本,以最大限度地提高可用性和可扩展性。对象版本控制为数据的意外丢失或覆盖提供了额外的保护。
架构Swift架构由三部分组成——服务器、流程和环。
Swift服务器架构是分布式的,可以防止任何单点故障和横向扩展。它包括以下四台服务器:
代理对象服务器容器服务器帐户服务器代理服务器为OpenStack对象存储架构的其余部分提供统一的接口。它接受创建容器、上传文件或修改元数据的请求,还可以提供容器或当前存储文件的列表。收到请求后,它将确定帐户、容器或对象在环中的位置,并将请求转发给相关服务器。
对象服务器是一种简单的服务器,可以上传、修改和检索存储在它管理的设备上的对象(通常是文件)。这些对象使用扩展属性存储在本地文件系统中,以保存任何元数据。该路径基于对象名称的sdc值和时间戳。
容器本质上是一个对象目录。它处理对象到特定容器的分配,并根据请求提供容器列表。清单在整个集群中复制,以提供冗余。
试试看!服务器通过使用对象存储服务来管理帐户。它像容器服务器一样工作,因为它提供一个清单,在这种情况下,枚举分配给给定帐户的容器。
几个有计划的内务处理过程管理数据存储,包括复制服务、审计程序和更新程序。
复制是一个必不可少的过程:它们确保整个集群的一致性和可用性。由于对象存储的主要吸引力之一是其分布式存储,OpenStack必须确保在出现瞬时错误情况(如电源故障或组件故障)时保持一致的状态。这可以通过定期将本地数据与其远程副本进行比较并确保所有副本都包含最新版本来实现。
为了最小化比较所需的网络流量,这些服务将为每个分区子部分创建一个sdc,然后比较这些列表。容器和帐户复制也使用哈希,但由共享的高水位标记补充。实际上是推送更新,通常使用rsync来复制对象、容器和帐户。
Replicator还执行垃圾收集,以在删除对象、容器或帐户时强制执行一致的数据删除。删除后,系统会用tombstone标记最新版本,这个信号会通知复制器从所有复制的节点上删除该项。
然而,即使是最好的复制设计,其有效性也取决于实现它的组件。生产环境必须能够应对故障,无论故障是硬件或软件故障的结果,还是仅仅是容量不足的结果。在Swift中,这是通过更新程序和审计程序完成的。
出现故障时,更新程序负责确保系统的完整性。当复制服务遇到问题并且无法更新容器或帐户时,将会有一段不一致的时间,在此期间,对象存在于存储中,但是没有在所有容器或帐户服务器上列出。在这种情况下,系统将在本地文件系统上对更新进行排队,更新程序将定期重试更新。
审计员可以提供更高级别的保护来防止不一致。他们定期扫描本地存储库,以核实账户、容器和物品的完整性。当发现任何损坏时,他们将隔离该元素,并用另一个副本的副本替换它。如果他们发现不协调的不一致(例如,不属于任何容器的对象),他们在日志文件中记录错误。
用户和其他OpenStack项目通过逻辑名称来引用存储实体,但最终,所有请求(无论是读还是写)都需要映射到物理位置。因此,代理服务器和后台进程(包括复制服务)需要能够将逻辑名称映射到物理位置。这种映射称为环。帐户、容器和对象被分配给单独的环。这种映射是按照环设备、分区、副本和区域来描述的。
在本文中,术语“分区”指的是存储在环中的内容的逻辑子集。建议为每个参与设备分配100个分区。分区均匀分布在分配给OpenStack对象存储的所有设备中。如果群集使用不同大小的驱动器,您还可以分配权重来平衡设备间的分区分布。
默认情况下,每个分区复制3次。可以使用更高的数量来优化可用性,但显然这也会增加存储消耗。该环还指定在发生故障时应该使用哪些设备进行切换,以及在集群中添加或删除设备时如何重新分配分区。
环形图的最后一个元素是用于启用数据相似性和反相似性的区域。区域可以代表存储设备、物理服务器或位置,如机架、过道或数据中心。用户可以使用这个逻辑概念来满足他们的需求,但它通常反映的是物理元素,如位置、电源和网络连接。
Cinder架构Cinder比Swift简单,因为它不提供自动对象分发和复制。图1显示了Cinder的架构。
图一。Cinder architecture类似于其他OpenStack项目。Cinder的功能通过API暴露给仪表盘和命令行。它可以通过HTTP API使用表述性状态转移(REST)访问对象存储,并通过使用名为Auth Manager的Python类将身份验证与OpenStack Keystone结合起来。
API解析所有传入的请求,并将它们转发到消息队列,调度程序和卷服务在这里执行实际工作。创建新卷后,调度程序将决定哪个主机负责。默认情况下,它将选择具有最大可用空间的节点。
卷管理器管理可动态连接的块存储设备,称为卷。它们可以用作虚拟实例的启动设备或辅助存储。Cinder还提供快照功能,快照是卷的只读副本。然后,您可以使用这些快照创建新卷进行读写。
该卷通常通过iSCSI连接到计算节点。存储还需要某种形式的后端存储,默认情况下是本地卷组上的逻辑卷管理,但可以通过驱动程序扩展到外部存储阵列或设备。
在发行版和OpenStack发行版之间,设置实际的安装说明是非常不同的。通常,它们是发行版的一部分。然而,同样的基本任务必须完成。这一节让你对所涉及的内容有一个概念。
系统要求OpenStack依赖64位x86架构;否则就是为商用硬件设计的,所以最低系统要求适中。您可以在一个8GB RAM的系统上运行整个OpenStack项目套件。但是,对于大型工作负载,使用专用系统进行存储是有意义的。由于偏重商用设备,不需要冗余独立磁盘(RAID)功能阵列,但建议至少使用双四核CPU,8-12GB RAM,1GB网卡。显然,硬盘驱动器或固态硬盘的大小取决于要存储的数据量和所需的冗余级别。
安装说明取决于发行版,更具体地说,取决于您选择的软件包管理实用程序。在许多情况下,必须声明存储库。因此,例如,在Zypper的情况下,您用zypper ar向libzypp宣布:
# zypper ar-f http://download . opensuse . org/repositories/cloud:/open stack:/grizzly/SLE _ 11 _ SP3/cloud:open stack:grizzly . repo然后,安装所需的Swift和/或Cinder包。软件包管理实用程序应该会自动安装所有依赖项。的完整安装过程取决于所需的配置和OpenStack的确切版本。请务必查看安装指南中的权威说明。为了便于说明,以下是Debian(如Ubuntu)、Red Hat(如Red Hat EnterpriseLinux、CentOS、Fedora)和openSUSE的主要命令。
Debian
:在所有主机上安装基本的swift软件包:sudo apt-GET INSTALL python-Swift sudo apt-GET在将运行Swift和服务器特定的软件包的主机上安装它们:sudo apt-GET INSTALL Swift-authsudo apt-GET INSTALL Swift-proxy sudo apt-GET INSTALL Swift-accountsudo apt-GET INSTALL Swift-container sudo a PT-GET INSTALL Swift-OBJECT CINDER软件包包括API、调度程序和卷管理器:sudo apt-get install cinder-API sudo apt-get install cinder-scheduler sudo apt-get install cinder-volume
红帽
:在红帽系统上是:sudo yum install open stack-swift sudo yum install open stack-swift-proxy sudo yum install open stack-swift-account sudo yum install open stack-swift-con tainersudo yum install open stack-swift-docsudo yum install open stack-cinder sudo yum install open stack-cinder-doc 00安装openstack-swift-container sudo zypper安装open stack-swift-object sudo zypper安装open stack-swift-proxy sudo zypper安装open stack-ci Sander-API sudozypper安装open stack-cinder-scheduler sudozypper安装openstack-cinder-volume配置open stack对象存储安装涉及为四个软件包中的每个软件包定制配置文件:account-server . conf container-server . conf对象服务器proxy-server.conf配置文件安装在/etc/swift/中。一组默认选项适用于标准安装,但对于任何特殊要求,有必要编辑配置。
使用场景为了理解如何使用OpenStack存储,设想一个场景,其中您将使用文件系统和新代码来运行将运行旧版本软件的服务,并且您将使用分布式对象存储。这个项目的环境应该包括雨燕和煤渣。
先说煤渣。
以具有成员角色的用户身份登录OpenStack仪表板。在导航窗格中的管理计算机下,单击
openSUSE
卷
。2.创建一个卷。该卷应显示在您的项目列表中。图3。项目中的体积编辑附件以将体积连接到您的计算实例之一。图4。管理卷附件OpenStack创建一个唯一的iSCSI限定名称,并将其暴露给现在具有活动iSCSI会话的计算节点。实例可以使用Cinder卷作为本地存储(通常是/dev/sdX磁盘)。要在项目中使用Swift,您必须首先创建一个容器。
以具有成员角色的用户身份登录OpenStack仪表板。在导航窗格中的对象存储下,单击
创建卷
容器”
。图5。创建一个容器。这是一个简单的操作,根本不需要提供任何数据。只是一个名字。一旦有了容器,通常由应用程序决定是否用对象填充它,并使用编程接口在需要时检索它们。图6。已满容器但是,您也可以从仪表板上传对象。在“对象存储”下,单击
创建容器”
上的容器
,然后提供文件的存储内容。7.上传对象。您还可以使用此界面下载、复制或删除对象。结论如您所见,OpenStack提供了一个直观的界面来设置私有云存储并将其提供给工作负载。尽可能的,这些只是冰山一角。例如,许多客户使用Ceph或GlusterFS作为后端存储机制,但即使在这种情况下,最终用户也只需要与用户界面进行交互。正如您在本系列的前几篇文章中看到的,OpenStack只是一个集成了一组可插拔组件的抽象层。
翻译:3359 www . IBM . com/developer works/cloud/library/cl-open stack-swift-cinder/index . html