Swift对象存储
1.认识swift
(1)Account(账号)
处于安全型考虑,使用swift都必须有一个账号。Swauth提供账号权限认证服务。
(2)Container
组织管理数据,不同的是Container不能嵌套。数据都以Object的形式存放在容器中。
(3)Object
对象是对象存储中一个基本的存储单元。一个对象包含两部分,数据和元数据。元数据包含对象所属的容器名。
用户上传的对象最大是5GB,最小是0。对象的元数据不能超过90个key-value对象属性,并且这些属性的总大小不能超过4K。在swift系统中,集群被划分成对各去,区可以是一个磁盘、服务器、一整个机柜乃至数据中心,每个区域中都由若干个节点。swift将对象存储在节点之上,每个节点都是由多个硬盘组成,保证了对象在多个节点上有备份。
swift构筑在比较便宜的标准硬件存储基础设施之上,无需采用磁盘冗余阵列。Swift主要用于存储虚拟机镜像,大多数作用于Glance的后端存储。在实际的运用中,典型运用是网盘系统。
swift不同于传统的文件系统和实时的市局存储系统,适用于存储、获取一些静态的、永久性的数据,并在需要的时候进行更新。
Swift集群主要包含认证节点、代理节点和存储节点。认证节点主要负责对用户的请求授权,只有通过授权的用户才能操作Swift,在Opensatck中swfit是它的子项目之一,所以一般用Keystone服务作为Swift服务的认证服务。代理节点主要用于和用户进行交互,接受用户的请求并且给用户做出相应。
2.对象存储的运维
[root@controller ~]# source /etc/keystone/admin-openrc.sh
(1)查看Swift详细信息(可以查看整体、对象、容器的信息)
[root@controller ~]# swift stat -v //查看swift详细信息
[root@controller ~]# swift stat test //查看容器的详细信息
(2)列出容器或者容器的对象
[root@controller ~]# swift list //列出容器列表
[root@controller ~]# openstack container list
+-------+
| Name |
+-------+
| test |
| test2 |
+-------+
[root@controller ~]# swift list test //列出某个容器中的对象列表
(3)创建容器
[root@controller ~]# swift post test2 //创建一个容器
[root@controller ~]# openstack container create test2
+---------------------------------------+-----------+------------------------------------+
| account | container | x-trans-id |
+---------------------------------------+-----------+------------------------------------+
| AUTH_197b84baaeab46ed86ffb13b5d5eb07a | test2 | tx7b20a5e69c464193a020c-006437679a |
+---------------------------------------+-----------+------------------------------------+
[root@controller ~]# mkdir file //在外部创建一个对象文件夹
[root@controller ~]# swift upload test2 file/ //上传对象文件夹到容器中
[root@controller ~]# touch 123.txt //创建一个数据文件
[root@controller ~]# swift upload test2 file/ 123.txt //将这个数据文件上传到某个容器中的对象文件目录下
[root@controller ~]# openstack object create test2 123.txt
+---------+-----------+----------------------------------+
| object | container | etag |
+---------+-----------+----------------------------------+
| 123.txt | test2 | d41d8cd98f00b204e9800998ecf8427e |
+---------+-----------+----------------------------------+
[root@controller ~]# openstack object create test2/file 123.txt
+---------+------------+----------------------------------+
| object | container | etag |
+---------+------------+----------------------------------+
| 123.txt | test2/file | d41d8cd98f00b204e9800998ecf8427e |
+---------+------------+----------------------------------+
(4)下载容器中的文件
[root@controller ~]# swift download test2 file/ 123.txt //下载某个容器下的对象文件目录中的数据
[root@controller ~]# openstack container save //对单个空的容器保存
[root@controller ~]# openstack object save test2/file 123.txt //将对象保存到本地
[root@controller ~]# ll
total 7192288
-rw-r--r--. 1 root root 0 Apr 13 02:55 123.txt