1. 对象存储服务
(1)查看服务状态
在OpenStack平台中使用命令“swift stat”查看对象存储服务状态,执行命令如下所示:
[root@controller ~]# source /etc/keystone/admin-openrc.sh
[root@controller ~]# swift stat
Account: AUTH_563a1bd3cee84608913f046e5a39fffd
Containers: 0
Objects: 0
Bytes: 0
X-Put-Timestamp: 1612342537.62212
X-Timestamp: 1612342537.62212
X-Trans-Id: tx308afd55a7dd4527bebee-00601a64f6
Content-Type: text/plain; charset=utf-8
X-Openstack-Request-Id: tx308afd55a7dd4527bebee-00601a64f6
(2)创建容器
通过“openstack container create”命令创建容器,命令格式如下所示:
[root@controller ~]# openstack help container create
usage: openstack container create [-h] [-f {csv,json,table,value,yaml}]
[-c COLUMN] [--max-width <integer>]
[--fit-width] [--print-empty] [--noindent]
[--quote {all,minimal,none,nonnumeric}]
[--sort-column SORT_COLUMN]
<container-name> [<container-name> ...]
使用命令创建容器,名称为“swift-test”,操作命令如下:
[root@controller ~]# openstack container create swift-test
+---------------------------------------+----------+------------------------------------+
| account |container | x-trans-id |
+---------------------------------------+----------+------------------------------------+
| AUTH_13b5e35202d54a84ae7a5ae5c57b9846 |swift-test| tx14edab5036414bfab0e64-006204b5ef |
+---------------------------------------+----------+------------------------------------+
(3)查看容器
使用命令查询容器列表信息,命令如下所示:
[root@controller ~]# openstack container list
+------------+
| Name |
+------------+
| swift-test |
+------------+
使用命令查询容器详细信息,命令如下所示:
[root@controller ~]# openstack container show swift-test
+--------------+---------------------------------------+
| Field | Value |
+--------------+---------------------------------------+
| account | AUTH_13b5e35202d54a84ae7a5ae5c57b9846 |
| bytes_used | 0 |
| container | swift-test |
| object_count | 0 |
+--------------+---------------------------------------+
(4)创建对象
创建完容器后,可以创建对象,通过使用命令“openstack object create”在对象中创建对象。命令格式如下所示:
[root@controller ~]# openstack help object create
usage: openstack object create [-h] [-f {csv,json,table,value,yaml}]
[-c COLUMN] [--max-width <integer>]
[--fit-width] [--print-empty] [--noindent]
[--quote {all,minimal,none,nonnumeric}]
[--sort-column SORT_COLUMN] [--name <name>]
<container> <filename> [<filename> ...]
在使用命令创建对象前,需要将上传后的目录结构在本地创建。在本地创建名为“test”的目录“/root/test”,将/root/anaconda-ks.cfg文件复制至“/root/test”目录中。命令代码如下所示:
[root@controller ~]# mkdir test
[root@controller ~]# cp anaconda-ks.cfg test/
创建对象的过程也是向容器中上传文件,使用命令创建“test/anaconda-ks.cfg”和“anaconda-ks.cfg”对象。操作命令如下所示:
[root@controller ~]# openstack object create swift-test test/anaconda-ks.cfg
+----------------------+------------+----------------------------------+
| object | container | etag |
+----------------------+------------+----------------------------------+
| test/anaconda-ks.cfg | swift-test | 41656296ae6768ae924a5b5f3fe15bf0 |
+----------------------+------------+----------------------------------+
(5)查看对象
创建完对象后,通过命令查看容器中对象信息,使用命令“openstack object list”查看对象信息,命令格式如下所示:
[root@controller ~]# openstack help object list
usage: openstack object list [-h] [-f {csv,json,table,value,yaml}] [-c COLUMN]
[--max-width <integer>] [--fit-width]
[--print-empty] [--noindent]
[--quote {all,minimal,none,nonnumeric}]
[--sort-column SORT_COLUMN] [--prefix <prefix>]
[--delimiter <delimiter>] [--marker <marker>]
[--end-marker <end-marker>]
[--limit <num-objects>] [--long] [--all]
<container>
使用命令查看容器“swift-test”中所有对象信息,操作命令如下:
[root@controller ~]# openstack object list swift-test
+----------------------+
| Name |
+----------------------+
| test/anaconda-ks.cfg |
+----------------------+
通过查询命令可以看出,在通过命令上传对象时,本地路径即为容器内对象路径。使用命令“openstack object show”查询“swift-test”容器中“test/anaconda-ks.cfg”对象详细信息,命令如下所示:
[root@controller opt]# openstack object show swift-test test/anaconda-ks.cfg
+----------------+---------------------------------------+
| Field | Value |
+----------------+---------------------------------------+
| account | AUTH_13b5e35202d54a84ae7a5ae5c57b9846 |
| container | swift-test |
| content-length | 6880 |
| content-type | application/octet-stream |
| etag | 41656296ae6768ae924a5b5f3fe15bf0 |
| last-modified | Thu, 10 Feb 2022 06:54:30 GMT |
| object | test/anaconda-ks.cfg |
+----------------+---------------------------------------+
(6)下载对象
存储在容器中的对象,可以在需要使用时,通过“openstack object save”命令进行下载至本地,命令格式如下所示:
[root@controller ~]# openstack help object save
usage: openstack object save [-h] [--file <filename>] <container> <object>
Save object locally
使用命令将“swift-test”容器中“test/anaconda-ks.cfg”对象下载至本地/opt/目录下。操作命令如下所示:
[root@controller ~]# cd /opt/
[root@controller opt]# openstack object save swift-test test/anaconda-ks.cfg
[root@controller opt]# ls test/
anaconda-ks.cfg
(7)删除对象
使用“openstack object delete”命令删除容器内的对象,命令格式如下所示:
[root@controller opt]# openstack help object delete
usage: openstack object delete [-h] <container> <object> [<object> ...]
使用删除对象命令将“swift-test”容器内“test/anaconda-ks.cfg”删除,查看“swift-test”容器中对象列表信息。操作命令如下所示:
[root@controller opt]# openstack object delete swift-test test/anaconda-ks.cfg
[root@controller opt]# openstack object list swift-test
(8)删除容器
使用“openstack container delete”命令删除容器,命令格式如下所示:
[root@controller opt]# openstack help container delete
usage: openstack container delete [-h] [--recursive]
<container> [<container> ...]
使用删除容器命令将“swift-test”容器删除:
[root@controller opt]# openstack container delete swift-test
查看容器列表信息。操作命令如下:
[root@controller opt]# openstack container list
[root@controller opt]# cd
(1)创建容器
使用命令创建一个容器test并查看容器的状态信息,命令如下:
[root@controller ~]# swift post test
[root@controller ~]# swift stat test
Account: AUTH_13b5e35202d54a84ae7a5ae5c57b9846
Container: test
Objects: 0
Bytes: 0
Read ACL:
Write ACL:
Sync To:
Sync Key:
Accept-Ranges: bytes
X-Storage-Policy: Policy-0
Last-Modified: Thu, 10 Feb 2022 07:00:01 GMT
X-Timestamp: 1644476400.54127
X-Trans-Id: tx1523620b734d425fb7249-006204b7f7
Content-Type: application/json; charset=utf-8
X-Openstack-Request-Id: tx1523620b734d425fb7249-006204b7f7
(2)上传镜像并分片存储
将提供的cirros-0.3.4-x86_64-disk.img镜像上传至controller节点的/root目录下,并使用命令上传至test容器中,进行分片存储,每个片段的大小为10M,命令如下:
[root@controller ~]# curl -O http://mirrors.douxuedu.com/newcloud/cirros-0.3.4-x86_64-disk.img
[root@controller ~]# ll
total 8088152
-rw-------. 1 root root 1741 Oct 20 16:11 anaconda-ks.cfg
-rw-r--r--. 1 root root 13287936 Oct 21 14:23 cirros-0.3.4-x86_64-disk.img
上传镜像至容器并进行分片:
[root@controller ~]# swift upload test -S 10000000 cirros-0.3.4-x86_64-disk.img
cirros-0.3.4-x86_64-disk.img segment 0
cirros-0.3.4-x86_64-disk.img segment 1
cirros-0.3.4-x86_64-disk.img
查看cirros镜像的存储路径:
[root@controller ~]# swift stat test cirros-0.3.4-x86_64-disk.img
Account: AUTH_13b5e35202d54a84ae7a5ae5c57b9846
Container: test
Object: cirros-0.3.4-x86_64-disk.img
Content Type: application/octet-stream
Content Length: 13267968
Last Modified: Thu, 10 Feb 2022 07:01:25 GMT
ETag: "fedf8be64303d80840c0c67304617bb2"
Manifest: test_segments/cirros-0.3.4-x86_64-disk.img/1644463107.000000/13267968/10000000/
Meta Mtime: 1644463107.000000
Accept-Ranges: bytes
X-Timestamp: 1644476484.47485
X-Trans-Id: tx80ea2f784bd046f1813c7-006204b85a
X-Openstack-Request-Id: tx80ea2f784bd046f1813c7-006204b85a
查看存储路径中的数据片:
[root@controller ~]# swift list test_segments
cirros-0.3.4-x86_64-disk.img/1644463107.000000/13267968/10000000/00000000
cirros-0.3.4-x86_64-disk.img/1644463107.000000/13267968/10000000/00000001
可以看到,cirros镜像在上传至Swfit对象存储中被分片存储了,单个存储片的大小为10M,因为该镜像大小为16M左右,所有分成了两个存储片。