一、 Swift简介

openstack swift是openstack开源云计算项目开源的对象存储,提供了强大的扩展性、冗余和持久性

1.1 swift特性

极高的数据持久性

完全对称的系统架构

无限的可扩展性

无单点故障

1.2 对象存储在容器中

Openstack Swift API的用户模型与Amazon S3 API稍有不同。若要使用swift api通过rados网关的身份验证,需要rados网关用户帐户配置子用户

Amazon S3 API授权和身份验证模型具有单层设计。一个用户可以有多个access key和secret key,用于在同一帐户中提供不同类型的访问

而swift有租户概念,rados网关用户对应swift的租户,而子帐号则对应swift的api用户

RADOS网关支持Swift v1.0以及OpenStack keystone v2.0身份验证

二、swift 用户管理

2.1 创建Swift的子用户

[root@ceph5 ~]#  radosgw-admin user info --uid joy

{
"user_id": "joy",
"display_name": "Joy Ning",
"email": "",
"suspended": ,
"max_buckets": ,
"auid": ,
"subusers": [],
"keys": [
{
"user": "joy",
"access_key": "5XCV68WUQJFFJPVM3UHK",
"secret_key": "xhaA2YB1CA3xH54xLbmwPcglqjDyuFez36F8XGuG"
}
],
"swift_keys": [],
"caps": [],
"op_mask": "read, write, delete",
"default_placement": "",
"placement_tags": [],
"bucket_quota": {
"enabled": false,
"check_on_raw": false,
"max_size": ,
"max_size_kb": ,
"max_objects": -
},
"user_quota": {
"enabled": true,
"check_on_raw": false,
"max_size": -,
"max_size_kb": ,
"max_objects": -
},
"temp_url_keys": [],
"type": "rgw"
}

2.2 创建一个子账号

[root@ceph5 ~]# radosgw-admin subuser create --uid joy --subuser joy:swift --access=full

{
"user_id": "joy",
"display_name": "Joy Ning",
"email": "",
"suspended": ,
"max_buckets": ,
"auid": ,
"subusers": [
{
"id": "joy:swift",
"permissions": "full-control"
}
],
"keys": [
{
"user": "joy",
"access_key": "5XCV68WUQJFFJPVM3UHK",
"secret_key": "xhaA2YB1CA3xH54xLbmwPcglqjDyuFez36F8XGuG"
}
],
"swift_keys": [
{
"user": "joy:swift",
"secret_key": "6Ea8Cu94ea37ESj7mJWFV1TmoL9ffMjVHJ5D0vKK"
}
],
"caps": [],
"op_mask": "read, write, delete",
"default_placement": "",
"placement_tags": [],
"bucket_quota": {
"enabled": false,
"check_on_raw": false,
"max_size": ,
"max_size_kb": ,
"max_objects": -
},
"user_quota": {
"enabled": true,
"check_on_raw": false,
"max_size": -,
"max_size_kb": ,
"max_objects": -
},
"temp_url_keys": [],
"type": "rgw"

创建另一个子账号

[root@ceph5 ~]# radosgw-admin subuser create --uid joy --subuser joy:swift2 --access=full

{
"user_id": "joy",
"display_name": "Joy Ning",
"email": "",
"suspended": ,
"max_buckets": ,
"auid": ,
"subusers": [
{
"id": "joy:swift",
"permissions": "full-control"
},
{
"id": "joy:swift2",
"permissions": "full-control"
}
],
"keys": [
{
"user": "joy",
"access_key": "5XCV68WUQJFFJPVM3UHK",
"secret_key": "xhaA2YB1CA3xH54xLbmwPcglqjDyuFez36F8XGuG"
}
],
"swift_keys": [
{
"user": "joy:swift",
"secret_key": "6Ea8Cu94ea37ESj7mJWFV1TmoL9ffMjVHJ5D0vKK"
},
{
"user": "joy:swift2",
"secret_key": "kJl6k4dVfqbOlZxdIX1Apmu5VFkL0KmSb5B8MkXz"
}
],
"caps": [],
"op_mask": "read, write, delete",
"default_placement": "",
"placement_tags": [],
"bucket_quota": {
"enabled": false,
"check_on_raw": false,
"max_size": ,
"max_size_kb": ,
"max_objects": -
},
"user_quota": {
"enabled": true,
"check_on_raw": false,
"max_size": -,
"max_size_kb": ,
"max_objects": -
},
"temp_url_keys": [],
"type": "rgw"
}

2.3 删除一个子账号

[root@ceph5 ~]# radosgw-admin subuser rm  --uid joy --subuser joy:swift2

{
"user_id": "joy",
"display_name": "Joy Ning",
"email": "",
"suspended": ,
"max_buckets": ,
"auid": ,
"subusers": [
{
"id": "joy:swift",
"permissions": "full-control"
}
],
"keys": [
{
"user": "joy",
"access_key": "5XCV68WUQJFFJPVM3UHK",
"secret_key": "xhaA2YB1CA3xH54xLbmwPcglqjDyuFez36F8XGuG"
}
],
"swift_keys": [
{
"user": "joy:swift",
"secret_key": "6Ea8Cu94ea37ESj7mJWFV1TmoL9ffMjVHJ5D0vKK"
}
],
"caps": [],
"op_mask": "read, write, delete",
"default_placement": "",
"placement_tags": [],
"bucket_quota": {
"enabled": false,
"check_on_raw": false,
"max_size": ,
"max_size_kb": ,
"max_objects": -
},
"user_quota": {
"enabled": true,
"check_on_raw": false,
"max_size": -,
"max_size_kb": ,
"max_objects": -
},
"temp_url_keys": [],
"type": "rgw"

2.4 修改子用户秘钥

[root@ceph5 ~]#  radosgw-admin key create --subuser joy:swift --gen-secret

{
"user_id": "joy",
"display_name": "Joy Ning",
"email": "",
"suspended": ,
"max_buckets": ,
"auid": ,
"subusers": [
{
"id": "joy:swift",
"permissions": "full-control"
}
],
"keys": [
{
"user": "joy",
"access_key": "5XCV68WUQJFFJPVM3UHK",
"secret_key": "xhaA2YB1CA3xH54xLbmwPcglqjDyuFez36F8XGuG"
}
],
"swift_keys": [
{
"user": "joy:swift",
"secret_key": "RB5SfO54XqgPl7TkfEjobfz9GP63dLIG1tZ9MQiq"
}
],
"caps": [],
"op_mask": "read, write, delete",
"default_placement": "",
"placement_tags": [],
"bucket_quota": {
"enabled": false,
"check_on_raw": false,
"max_size": ,
"max_size_kb": ,
"max_objects": -
},
"user_quota": {
"enabled": true,
"check_on_raw": false,
"max_size": -,
"max_size_kb": ,
"max_objects": -
},
"temp_url_keys": [],
"type": "rgw"
}

三、使用swift客户端

3.1 安装swift客户端

[root@ceph1 ceph]#  yum -y install python-swiftclient

3.2 创建一个容器

[root@ceph1 ceph]# swift -A http://ceph5.lab.example.com/auth/v1.0 -U joy:swift -K RB5SfO54XqgPl7TkfEjobfz9GP63dLIG1tZ9MQiq post swiftbk

3.3 向容器上传一个文件

[root@ceph1 ceph]# swift -A http://ceph5.lab.example.com/auth/v1.0 -U joy:swift -K RB5SfO54XqgPl7TkfEjobfz9GP63dLIG1tZ9MQiq upload swiftbk /etc/ceph/ceph.conf

3.4 服务器端查看

[root@ceph5 ~]#  rados -p  default.rgw.buckets.data ls  --cluster backup

3.5 列出容器中的文件

[root@ceph1 ceph]# swift -A http://ceph5.lab.example.com/auth/v1.0  -U joy:swift -K RB5SfO54XqgPl7TkfEjobfz9GP63dLIG1tZ9MQiq list  swiftbk

3.6 查看容器状态

[root@ceph1 ceph]# swift -A http://ceph5.lab.example.com/auth/v1.0  -U joy:swift -K RB5SfO54XqgPl7TkfEjobfz9GP63dLIG1tZ9MQiq stat swiftbk

Account: v1
Container: swiftbk
Objects:
Bytes:
Read ACL:
Write ACL:
Sync To:
Sync Key:
Accept-Ranges: bytes
X-Storage-Policy: default-placement
X-Container-Bytes-Used-Actual:
X-Timestamp: 1553059437.79870
X-Trans-Id: tx000000000000000000017-005c91cf25--default
Content-Type: text/plain; charset=utf-
X-Openstack-Request-Id: tx000000000000000000017-005c91cf25--default

[root@ceph1 ceph]# swift -A http://ceph5.lab.example.com/auth/v1.0  -U joy:swift -K RB5SfO54XqgPl7TkfEjobfz9GP63dLIG1tZ9MQiq stat

Account: v1
Containers:
Objects:
Bytes:
Objects in policy "default-placement-bytes":
Bytes in policy "default-placement-bytes":
Containers in policy "default-placement":
Objects in policy "default-placement":
Bytes in policy "default-placement":
Accept-Ranges: bytes
X-Timestamp: 1553059632.46208
X-Account-Bytes-Used-Actual:
X-Trans-Id: tx000000000000000000019-005c91cf30--default
Content-Type: text/plain; charset=utf-
X-Openstack-Request-Id: tx000000000000000000019-005c91cf30--default

3.7 重复操作

[root@ceph1 ceph]# swift -A http://ceph5.lab.example.com/auth/v1.0  -U joy:swift -K RB5SfO54XqgPl7TkfEjobfz9GP63dLIG1tZ9MQiq upload test /etc/ceph/rbdmap
etc/ceph/rbdmap
[root@ceph1 ceph]# swift -A http://ceph5.lab.example.com/auth/v1.0 -U joy:swift -K RB5SfO54XqgPl7TkfEjobfz9GP63dLIG1tZ9MQiq list
swiftbk
test
[root@ceph1 ceph]# swift -A http://ceph5.lab.example.com/auth/v1.0 -U joy:swift -K RB5SfO54XqgPl7TkfEjobfz9GP63dLIG1tZ9MQiq list test
ceph
demoobject
etc/ceph/rbdmap
[root@ceph1 ceph]# swift -A http://ceph5.lab.example.com/auth/v1.0 -U joy:swift -K RB5SfO54XqgPl7TkfEjobfz9GP63dLIG1tZ9MQiq post swifttest
[root@ceph1 ceph]# swift -A http://ceph5.lab.example.com/auth/v1.0 -U joy:swift -K RB5SfO54XqgPl7TkfEjobfz9GP63dLIG1tZ9MQiq post list
[root@ceph1 ceph]# swift -A http://ceph5.lab.example.com/auth/v1.0 -U joy:swift -K RB5SfO54XqgPl7TkfEjobfz9GP63dLIG1tZ9MQiq list
list
swiftbk
swifttest
test

博主声明:本文的内容来源主要来自誉天教育晏威老师,由本人实验完成操作验证,需要的博友请联系誉天教育(http://www.yutianedu.com/),获得官方同意或者晏老师(https://www.cnblogs.com/breezey/)本人同意即可转载,谢谢!

最新文章

  1. ZOJ 3871 Convex Hull(计算几何、凸包)
  2. flume+kafka+spark streaming整合
  3. AOP详解
  4. linux 文件系统简介
  5. ue4 FPaths各目录
  6. C#泛型专题系列文章目录导航
  7. iOS数据持久化
  8. iOS字符串加密至MD5&及获取文件MD5
  9. cocos2d-x CocoStudio中场景触发器(Trigger)的代码部分和触发器之间的互调
  10. POJ 1584 A Round Peg in a Ground Hole 判断凸多边形,判断点在凸多边形内
  11. Xml读取异常--Invalid byte 1 of 1-byte UTF-8 sequence
  12. Windows Mobile 6 sdk installation error, COM3 in use,please check the implementation
  13. CSS多列、用户界面属性
  14. 学习面向对象编程OOP 第一天
  15. wpf 如何让控件左右移动
  16. Spring boot实现原生websocket
  17. 大话DI依赖注入+IOC控制反转(二) 之 浅析.Net Core中的DI与IOC
  18. R入门(二)-对象以及它们的模式和属性
  19. 【转】Android Camera 相机开发详解
  20. ES6 数值的扩展

热门文章

  1. 为什么不喜欢在 QQ 群里回答问题?
  2. PHP笔试题(11道题)详解
  3. 手动封装AJAX
  4. CNN如何识别一幅图像中的物体
  5. 2018-11-19-Roslyn-NameSyntax-的-ToString-和-ToFullString-的区别
  6. EL表达式中的empty和null
  7. [转][ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [上篇]
  8. CSS中常用的简写模式
  9. Codeforces Round #188 (Div. 1 + Div. 2)
  10. JPA批量操作及性能比对