关于openstack平台swift服务的部署与使用

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

2. 分片存储案例

(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左右,所有分成了两个存储片。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值