openstack对接对象存储swift

Posted Mediocre_person

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了openstack对接对象存储swift相关的知识,希望对你有一定的参考价值。

对象存储服务的基本概念

                在了解swift服务之前首先要明确一下三个基本概念:

Account: 出于访问安全性考虑,使用Swift系统,每个用户必须有一个账号(Account)。

Container: Swift中的container可以类比Windows操作系统中的文件夹或者Unix类操作系统中的目录,用于管理数据,所不同的是container不能嵌套。

Object: Object(对象)是Swift中的基本存储单元。

Account、Container、Object是Swift系统中的3个基本概念,三者的层次关系是一个Account可以创建拥有任意多个Container,一个Container中可以包含任意多个Object。

 swift服务优势

数据访问灵活性  Swift通过Rest API接口来访问数据使得资源管理实现自动化

高数据持久性     Swift提供多重备份机制,拥有极高的数据可靠性

极高的可拓展性 Swift通过独立节点来形成存储系统,在数据量的存储上就做到了无限拓展

无单点故障        由于Swift的节点独立的特点,不会发生传统存储系统的单点故障

架构解析

Swift采用了REST架构 REST(Representational State Transfer)是一种轻量级的Web Service架构风格,其实现和操作明显比SOAP和XML-RPC更为简洁,可以完全通过HTTP协议实现,还可以利用Cache来提高响应速度,性能、效率和易用性上都优于SOAP协议。

REST架构 遵循了CRUD原则,CRUD原则对于资源只需要四种行为: Create(创建)、Read(读取)、Update(更新)和 Delete(删除)就可以完成对其操作和处理。

因为Swift采用REST架构,我们不能像普通的文件系统那样对数据进行访问,必须通过它提供的API来访问操作数据

 通过API访问Swift存储的数据

 通过http的put方法上传数据

 通过http的get方法下载数据

 Swift架构图

数据模型

Swift 采用层次数据模型,共设三层逻辑结构:Account/Container/Object(即账户/容器/对象),每层节点数均没有限制,可以任意扩展。

 对象存储服务基本命令

根据给定的参数显示帐户、对象或容器的信息

swift stat [container] [object]

列出该帐户的容器或容器的对象

Swift list [command-options] [container]

根据参数将制定的文件或者目录上传到容器内

swift upload [command-options] container file_or_directory [file_or_directory]

根据给定的参数升级account、container或者object的元数据信息

swift post [command-options] [container] [object]

根据给定的参数下载容器中的对象

swift download [command-options] [container] [object] [object] [...]

根据给定的参数删除容器中的对象

swift delete [command-options] [container] [object] [object] [...]

 任务目标:swift实现glance、cinder后端存储

[root@xiandian ~]#source /etc/keystone/admin-openrc.sh
[root@xiandian ~]#openstack service list #生效环境变量,获取令牌
[root@xiandian ~]#openstack-service list | grep swift   #查看swift组件
#1、创建容器、上传下载删除对象;2、分段上传大容量文件;3、管理容器,设置权限;4、将swift设置为glance、cinder的后端存储
[root@xiandian ~]#openstack container list  #查看当前平台的所有容器
[root@xiandian ~]#swift list  #查看swift下的容器
[root@xiandian ~]# #创建容器test7
[root@xiandian ~]#swift post test7
[root@xiandian ~]#swift post network4
[root@xiandian ~]# #上传文件 首先在当前目录下创建一个文件,把这个文件上传到容器test7中
[root@xiandian ~]#touch one.txt
[root@xiandian ~]#ls
[root@xiandian ~]#swift upload test7 one.txt
[root@xiandian ~]# #上传目录(创建一个目录,上传)
[root@xiandian ~]#mkdir file7
[root@xiandian ~]#ls
[root@xiandian ~]#swift upload test7 file7/
[root@xiandian ~]# #查看某个容器内部的对象情况
[root@xiandian ~]#swift list test7
[root@xiandian ~]# #将文件上传到容器中的某个目录下
[root@xiandian ~]#swift upload test7/file7 one.txt
[root@xiandian ~]#swift list test7                             
[root@xiandian ~]#touch two.doc
[root@xiandian ~]#touch three.png                
[root@xiandian ~]#ls                                                                                                          
[root@xiandian ~]#swift upload test7/file7 two.doc three.png                                                       
[root@xiandian ~]#swift list test7 
[root@xiandian ~]# #查看容器状态
[root@xiandian ~]#swift stat test7
[root@xiandian ~]# #查看当前账户下的swift的总体状态
[root@xiandian ~]#swift stat
[root@xiandian ~]# #从容器中下载对象
[root@xiandian ~]#swift download test7/file7 two.doc
[root@xiandian ~]#ls file7/
[root@xiandian ~] #从容器中删除对象
[root@xiandian ~]#swift delete test7/file7 two.doc
[root@xiandian ~]#swift list test7
[root@xiandian ~]# # 2、分段上传大容量文件1GB
[root@xiandian ~]# #创建指定大小文件
[root@xiandian ~]#dd if=/dev/zero of=file7/example7-1GB bs=1M count=1024
[root@xiandian ~]#ls file7/
[root@xiandian ~]# #分段上传(102.4)
[root@xiandian ~]#swift upload test7 -s 102400000 file7/example7-1GB
[root@xiandian ~]#swift list test7
[root@xiandian ~]# 3.设置权限
[root@xiandian ~]# #设置demo用户对test7仅具有可读权限
[root@xiandian ~]#swift post -r demo test7 
[root@xiandian ~]# #设置glance用户对test7具有可读可写
[root@xiandian ~]#swift post -r glance -w glance test7
[root@xiandian ~]# #将swift设置为glance、cinder的后端存储
[root@xiandian ~]#vi /etc/glance/glance-api.conf

                                                                                                                                                                                                                                                                                                   

 踏路而行 自有前程

以上是关于openstack对接对象存储swift的主要内容,如果未能解决你的问题,请参考以下文章

OpenStack中glance对接swift

openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 三

Openstack O版 配置swift对象存储服务

OpenStack

openstack对接华为存储

openstack-swift-01