ceph基礎(chǔ)篇5——對象存儲rgw的訪問方式之Swift API

1、Swift介紹

Swift是OpenStack的組件之一, 是一個基于RESTful HTTP接口的對象存儲API,用于創(chuàng)建,修改和獲取對象和元數(shù)據(jù)等。

Swift有如下幾個特性:

  • 極高的數(shù)據(jù)持久性。
  • 對稱的系統(tǒng)架構(gòu):因為各個存儲的節(jié)點完全對等。
  • 擴展性好:因為是對稱的系統(tǒng)架構(gòu),擴容的時候只需簡單的增加機器。
  • 無單節(jié)點故障:因為各個節(jié)點完全對等,沒有所謂的“主從”結(jié)構(gòu)。

Swift的元數(shù)據(jù)存儲是完全均勻隨機分布的,元數(shù)據(jù)也會存儲多份。

2、安裝方式 客戶端上安裝

# yum install python-setuptools
# yum install python-pip -y
# 升級python-swiftclient
# pip install --upgrade python-swiftclient
# 如果源有問題,可以選擇阿里云的源
# pip install --upgrade python-swiftclient -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
# 確認swift版本
# swift --version

3、使用步驟

3.1 在服務(wù)端上創(chuàng)建用戶和子用戶
創(chuàng)建用戶
radosgw-admin user create --uid={username} --display-name="{display-name}" [--email={email}]

[root@test-env-nm05-ceph-11e5e33e225 secure]# radosgw-admin user create --uid test2 --display-name name2
{
    "user_id": "test2",
    "display_name": "name2",
    "email": "",
    "suspended": 0,
    "max_buckets": 1000,
    "subusers": [],
    "keys": [
        {
            "user": "test2",
            "access_key": "GONI86GKE9I2UDA1VRZJ",
            "secret_key": "k5neMW6OtI01yImcNLY1EznWBdaftCQ7qsBAgmh5"
        }
    ],
    "swift_keys": [],
    "caps": [],
    "op_mask": "read, write, delete",
    "default_placement": "",
    "default_storage_class": "",
    "placement_tags": [],
    "bucket_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "user_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "temp_url_keys": [],
    "type": "rgw",
    "mfa_ids": [],
    "user_preview_flag": 0
}

創(chuàng)建子用戶
radosgw-admin subuser create --uid={username} --subuser={subusername} --access=[ read |write |readwrite |full]

[root@test-env-nm05-ceph-11e5e33e225 secure]# radosgw-admin subuser create --uid=test2 --subuser=subtest --access=full
{
   "user_id": "test2",
   "display_name": "name2",
   "email": "",
   "suspended": 0,
   "max_buckets": 1000,
   "subusers": [
       {
           "id": "test2:subtest",
           "permissions": "full-control"
       }
   ],
   "keys": [
       {
           "user": "test2",
           "access_key": "GONI86GKE9I2UDA1VRZJ",
           "secret_key": "k5neMW6OtI01yImcNLY1EznWBdaftCQ7qsBAgmh5"
       }
   ],
   "swift_keys": [
       {
           "user": "test2:subtest",
           "secret_key": "Knk7jO89nKgUXLhkAH1OZxvlugmq2dTbqmyN3HFe"
       }
   ],
   "caps": [],
   "op_mask": "read, write, delete",
   "default_placement": "",
   "default_storage_class": "",
   "placement_tags": [],
   "bucket_quota": {
       "enabled": false,
       "check_on_raw": false,
       "max_size": -1,
       "max_size_kb": 0,
       "max_objects": -1
   },
   "user_quota": {
       "enabled": false,
       "check_on_raw": false,
       "max_size": -1,
       "max_size_kb": 0,
       "max_objects": -1
   },
   "temp_url_keys": [],
   "type": "rgw",
   "mfa_ids": [],
   "user_preview_flag": 0
}

3.2、測試Swift接口

$ swift -A http://{IP ADDRESS}:{port}/auth/1.0 -U testuser:swift -K '{swift_secret_key}' list

"swift_keys": [
{
"user": "cjid:swift",
"secret_key": "BlPwF96N1qrkhylZrNDTkDak2nxM1z66ikBZbUxX"
}
]

替換{IP ADDRESS}、{port}、{swift_secret_key}等相關(guān)參數(shù),其中{swift_secret_key}為創(chuàng)建Swift用戶時,radosgw-admin命令返回的swift_keys->secret_key的值
[root@client1 ~]# swift -A http://192.168.212.201:80/auth/1.0 -U cjid:swift -K 'BlPwF96N1qrkhylZrNDTkDak2nxM1z66ikBZbUxX' list Bucket1

3.3、配置環(huán)境變量
每次輸入用戶名密鑰ip等信息比較麻煩,建議設(shè)置環(huán)境變量
[root@client1 ~]# vi /etc/profile

追加如下三行代碼到配置文件末尾,注意更改相應(yīng)參數(shù)

jie[root@client1 ~]# cat /etc/profile |grep ST_
export ST_AUTH=http://192.168.212.201:80/auth
export ST_USER=cjid:swift
export ST_KEY=BlPwF96N1qrkhylZrNDTkDak2nxM1z66ikBZbUxX
生效
[root@client1 ~]# source /etc/profile

3.4、生效后,常用操作

查看桶

[root@client1 ~]# swift list
Bucket1

查看桶大小

[root@client1 ~]# swift list --lh
1 0 2022-03-18 07:36:20 default-placement bucket
0 0 2022-03-18 07:25:48 default-placement bucket1
0 0 2022-03-18 07:35:46 default-placement bucket2
1 0

創(chuàng)建桶

[root@client1 ~]# swift post bucket2
[root@client1 ~]#
[root@client1 ~]# swift list
bucket1
Bucket2

上傳文件到桶

[root@client1 ~]# swift upload bucket /tmp/*
tmp/yum.log
tmp/ks-script-rL5xKG

列出桶中的文件

[root@client1 ~]# swift list bucket
tmp/ks-script-rL5xKG
tmp/yum.log

查看桶狀態(tài)

[root@client1 ~]# swift stat
Account: v1
Containers: 3
Objects: 2
Bytes: 836
Objects in policy "default-placement-bytes": 0
Bytes in policy "default-placement-bytes": 0
Containers in policy "default-placement": 3
Objects in policy "default-placement": 2
Bytes in policy "default-placement": 836
Accept-Ranges: bytes
X-Timestamp: 1647589429.35202
X-Account-Bytes-Used-Actual: 4096
X-Trans-Id: tx000000000000000000035-0062343835-17085-default
Content-Type: text/plain; charset=utf-8
X-Openstack-Request-Id: tx000000000000000000035-0062343835-17085-default

查看桶中的文件

[root@client1 ~]# swift list bucket
tmp/ks-script-rL5xKG
tmp/yum.log

刪除桶中的文件

[root@client1 ~]# swift delete bucket tmp/ks-script-rL5xKG
tmp/ks-script-rL5xKG
[root@client1 ~]#
[root@client1 ~]# swift list bucket
tmp/yum.log

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容