1、Swift介绍
Swift是OpenStack的组件之一, 是一个基于RESTful HTTP接口的对象存储API,用于创建,修改和获取对象和元数据等。
Swift有如下几个特性:
- 极高的数据持久性。
- 对称的系统架构:因为各个存储的节点完全对等。
- 扩展性好:因为是对称的系统架构,扩容的时候只需简单的增加机器。
- 无单节点故障:因为各个节点完全对等,没有所谓的“主从”结构。
Swift的元数据存储是完全均匀随机分布的,元数据也会存储多份。
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 在服务端上创建用户和子用户
创建用户
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
}
创建子用户
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}等相关参数,其中{swift_secret_key}为创建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、配置环境变量
每次输入用户名密钥ip等信息比较麻烦,建议设置环境变量
[root@client1 ~]# vi /etc/profile
追加如下三行代码到配置文件末尾,注意更改相应参数
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
创建桶
[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
查看桶状态
[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