在openstack中swift和cinder中的区别

2024-05-13

1. 在openstack中swift和cinder中的区别

swift是object storage(对象存储),将object(可以理解为文件)存储到bucket(可以理解为文件夹)里,你可以用swift创建container,然后上传文件,例如视频,照片,这些文件会被replication到不同服务器上以保证可靠性,swift可以不依靠虚拟机工作。所谓的云存储,OpenStack就是用swift实现的,类似于Amazon AWS S3(Simple Storage Service).

cinder是block storage(块存储),你可以把cinder当做优盘管理程序来理解。你可以用cinder创建volume,然后将它接到(attach)虚拟机上去,这个volume就像虚拟机的一个存储分区一样工作。如果你把这个虚拟机terminate了,这个volume和里边的数据依然还在,你还可以把它接到其他虚拟机上继续使用里边的数据。cinder创建的volume必须被接到虚拟机上才能工作。类似于Amazon AWS EBS(Elastic Block Storage).

在openstack中swift和cinder中的区别

2. 如何用宿主机访问部署在虚拟机上的OpenStack Swift服务

解决方案 OpenStack虚拟机默认使用qcow2格式镜像,可以在镜像制作时候更改MTU值

3. openstack到底是管理虚拟机的,还是提供虚拟机的

OpenStack不生产虚拟机,它只是虚拟机的搬运工。 从你的问题来看,OpenStack是管理虚拟机的。

openstack到底是管理虚拟机的,还是提供虚拟机的

4. 分别比较cinder和swift的区别

cinder与swift各自的用途是什么?
cinder是块存储,用来给虚拟机挂扩展硬盘,就是将cinder创建出来的卷,挂到虚拟机里。cinder是OpenStack到F版,将之前在Nova中的部分持久性块存储功能(Nova-Volume)分离了出来,独立为新的组件Cinder

swift是一个系统,可以上传和下载,里面一般存储的是不经常修改的内容,比如用于存储 VM 镜像、备份和归档以及较小的文件,例如照片和电子邮件消息。更倾向于系统的管理


块存储具有安全可靠、高并发大吞吐量、低时延、规格丰富、简单易用的特点,适用于文件系统、数据库或者其他需要原始块设备的系统软件或应用。



上面其实很多感觉不是太直观,个人认为cinder可以理解为个人电脑的移动硬盘,它可以随意格式化,随时存取。
对于swift可以作为网盘,相信对于云技术的同学来说,网盘应该是不陌生的,如果把一些经常用的内容,放到网盘中是非常不方便的。

Swift 还是 Cinder?何时使用以及使用哪一种?
那么,应该使用哪一种对象存储:Swift 还是 Cinder?答案取决于您的应用程序。如果需要运行商用或遗留应用程序,那么很少需要进行这种选择。这些应用程序不可能被编码来利用 Swift API,但您可以轻松挂载一个 Cinder 磁盘,它表现得就像是直接将存储附加到大多数应用程序。
当然,您还可以对新应用程序使用 Cinder,但是不会从 Swift 自动附带的弹性和冗余中获益。如果编程人员面对这样的挑战,那么 Swift 的分布式可扩展架构是一个值得考虑的特性。


单点故障
Swift 架构是分布式的,可防止所有单点故障和进行水平扩展。
cinder存在单点故障还未解决




更多内容,以下来自ibm资料库:


块存储 (Cinder)
Cinder 是 OpenStack Block Storage 的项目名称;它为来宾虚拟机 (VM) 提供了持久块存储。对于可扩展的文件系统、最大性能、与企业存储服务的集成以及需要访问原生块级存储的应用程序而言,块存储通常是必需的。
系统可以暴露并连接设备,随后管理服务器的创建、附加到服务器和从服务器分离。应用程序编程接口 (API) 也有助于加强快照管理,这种管理可以备份大量块存储。




对象存储 (Swift)

Swift 是两种产品中较为成熟的一个:自 OpenStack 成立以来一直是一个核心项目。Swift 的功能类似于一个分布式、可访问 API 的存储平台,可直接将它集成到应用程序中,或者用于存储 VM 镜像、备份和归档以及较小的文件,例如照片和电子邮件消息。

Object Store 有两个主要的概念:对象和容器。

对象就是主要存储实体。对象中包括与 OpenStack Object Storage 系统中存储的文件相关的内容和所有可选元数据。数据保存为未压缩、未加密的格式,包含对象名称、对象的容器以及键值对形式的所有元数据。对象分布在整个数据中心的多个磁盘中,Swift 可以借此确保数据的复制和完整性。分布式操作可以利用低成本的商用硬件,同时增强可扩展性、冗余性和持久性。

容器类似于 Windows® 文件夹,容器是用于存储一组文件的一个存储室。容器无法被嵌套,但一个租户可以供创建无限数量的容器。对象必须存储在容器中,所以您必须至少拥有一个容器来使用对象存储。

与传统的文件服务器不同,Swift 是横跨多个系统进行分布的。它会自动存储每个对象的冗余副本,从而最大程度地提高可用性和可扩展性。对象版本控制提供了防止数据意外丢失或覆盖的额外保护

5. openstack swift 服务器支持哪些系统

使用Ubuntu操作系统。
  每台机器都运行Swift的所有服务,既是Proxy Server,又是Storage Server,用户可以向任何一台机器发起存储服务请求。
  采用Swift自带的TempAuth作为用户的身份与权限认证。
  所有机器构成memcached集群来提供Token缓存服务。
  所有操作均在root用户下进行,并使用root作为Swift的用户和组。
  所有机器都运行在局域网中。
  使用回环设备和XFS文件系统作为Swift底层存储。

openstack swift 服务器支持哪些系统

6. 如何实现openstack swift的web访问

1、安装相关包
# apt-get install memcached libapache2-mod-wsgi openstack-dashboard
安装完成之后卸载嵌有UBUNTU主题,防止翻译等错误
# apt-get remove --purge openstack-dashboard-ubuntu-theme

2、修改/etc/ openstack-dashboard/local_settings.py中CACHES选项的 ['default']['LOCATION']去匹配/etc/memcached.conf.的值
CACHES = {
'default': {
'BACKEND' : 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION' : '127.0.0.1:11211'
}
}

3、编辑/etc/openstack-dashboard/local_settings.py里面的OPENSTACK_HOST选项,值修改为controller
OPENSTACK_HOST = "controller"

4、重启相关apache服务,并登陆到horizon相关界面
# service apache2 restart
# service memcached restart

7. OpenStackSwift对象存储概念是怎样的?

Swift2.0发布,其中最重要的新特性是存储策略(StoragePolicy),该特性改变了以往存储系统中存储策略由设计与实施方决定的做法,让用户能够以Container为粒度,为不同需求的数据指定不同的副本数量、不同参数的纠删码、不同性能的存储介质、不同地理位置、不同的后端存储设备。存储策略充分体现了Swift"软件定义存储"(SoftwareDefinedStorage)的特点。
为了实现存储策略,Swift在原先三个环(Ring)的架构基础上进行了改进。Swift为账户、容器和对象分别定义了的环,通过环将虚拟节点(分区)映射到一组物理存储设备上。在Swift2.0中,每个存储策略对应一个ObjectRing。

OpenStackSwift对象存储概念是怎样的?

8. openstack 1.7.0是什么版本

如果你一直关注swift源码你可以在git获得源码,不过launchpad上发布的是正式版,相关的改动可以查看CHANGELOG
第一次源码安装,需要主要的是要安装相关的包,可以在swift1.7.0/tools/pip-requires中看到相关的包
其中的python-swiftclient的版本也发展到了1.2.0版本 但是在launchpad上的版本还是1.1.1
pip 是安装和管理python包的工具 相关资料:http://en.wikipedia.org/wiki/Pip_(Python)
安装好pip 创建一个pipdown 目录,
执行命令 pip install -r swift1.7.0/tools/pip-requires -d pipdown -no-install
这样就把需要的包都下载到了pipdown目录下, 如果你是在launchpad上下载python-swiftclient,可以把包拷贝到pipdown中
执行命令 pip install ./pipdown/* 这里主要如果你源码安装其他openstack 组建可能会有相关包先后顺序的问题,在这个安装swift的时候我没遇到过。这里你也可以写一个脚本来查看安装时候成功。
在安装中我发现需要安装python-dev包,当然也需要python-setuptools包 
在launchpad下载源码 解压后,进入目录执行 python setup.py install 这样就安装好了源码,我在安装后发现,我的源码没有安装到相关的目录下例如/usr/bin /usr/lib 我需要进入目录中执行源码的方式来执行程序,这不是意味着没有安装么?可能的原因是我之前在这台机器上安装过swift  卸载的可能不干净 或者是有冲突,不过这没什么问题,因为我之前在虚拟机安装的时候没有整个问题,这里只做记录。
swift的相关配置和先关其他软件安装可以参考我之前的文档,或者参考官方文档的SAIO。