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