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的主要内容,如果未能解决你的问题,请参考以下文章