ceph 对象存储兼容两种接口(协议)S3 和 swift. S3 最常用, 这里仅介绍如何连接(使用)S3存储接口。

  1. 命令行的方式(s3cmd)
  2. 熟悉的文件挂载方式 (s3fs)
  3. GUI
  4. SDK (最常用的方式)

访问 S3, 你需要 S3 的:

  • 访问地址(endpoint)如:http://192.168.1.100/
  • 用户密钥,包含:access_id 和 secret_key. access_id是整个集群唯一的,可以根据access_id确定一个用户
  • 具体的桶名(或者你有自己新建桶的权限) 桶名也是整个集群唯一的。(也就是你的桶不能和自己以及其他用户的桶重名)
开始使用前请确保你已经拥有以上信息

一、s3cmd

参考资料:

  1. https://s3tools.org/s3cmd-howto
  2. https://docs.jdcloud.com/cn/object-storage-service/s3cmd

安装

yum install s3cmd -y

请尽量使用新版s3cmd

[xin@centos5 ~]$ s3cmd --version
s3cmd version 2.1.0

配置

s3cmd --configure

运行该命令,会打开一个交互模式,邀请你输入用户密钥和网关访问地址等

最终会根据你的输入生成配置文件在~/.s3cfg, 你也可以直接编辑该配置文件。

(当你通过交互式命令不能配置成功的时候,可以尝试直接编辑该配置文件,设置signature_v2 = True)

配置文件参考示例如下:

[xin@centos5 ~]$ cat ~/.s3cfg 
[default]
access_key = 1ND9LJBZ2NNZG2759UXD  # 密钥
access_token = 
add_encoding_exts = 
add_headers = 
bucket_location = US
ca_certs_file = 
cache_file = 
check_ssl_certificate = True
check_ssl_hostname = True
cloudfront_host = cloudfront.amazonaws.com
connection_pooling = True
content_disposition = 
content_type = 
default_mime_type = binary/octet-stream
delay_updates = False
delete_after = False
delete_after_fetch = False
delete_removed = False
dry_run = False
enable_multipart = True
encrypt = False
expiry_date = 
expiry_days = 
expiry_prefix = 
follow_symlinks = False
force = False
get_continue = False
gpg_command = /usr/bin/gpg
gpg_decrypt = %(gpg_command)s -d --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_encrypt = %(gpg_command)s -c --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_passphrase = 
guess_mime_type = True
host_base = 192.168.22.104:8080  # 网关访问地址
host_bucket = 192.168.22.104:8080/%(bucker)s  # 桶的访问形式(有两种:1.path 风格,2.二级域名风格,这里是path风格)
human_readable_sizes = False
invalidate_default_index_on_cf = False
invalidate_default_index_root_on_cf = True
invalidate_on_cf = False
kms_key = 
limit = -1
limitrate = 0
list_md5 = False
log_target_prefix = 
long_listing = False
max_delete = -1
mime_type = 
multipart_chunk_size_mb = 15
multipart_max_chunks = 10000
preserve_attrs = True
progress_meter = True
proxy_host = 
proxy_port = 0
public_url_use_https = False
put_continue = False
recursive = False
recv_chunk = 65536
reduced_redundancy = False
requester_pays = False
restore_days = 1
restore_priority = Standard
secret_key = BKXKqgybF6KdwDIlb4AhpdpXFdvoTVWDS79QgcHt  # 密钥
send_chunk = 65536
server_side_encryption = False
signature_v2 = False
signurl_use_https = False
simpledb_host = sdb.amazonaws.com
skip_existing = False
socket_timeout = 300
stats = False
stop_on_error = False
storage_class = 
throttle_max = 100
upload_id = 
urlencoding_mode = normal
use_http_expect = False
use_https = False  # 有没有用https
use_mime_magic = True
verbosity = WARNING
website_endpoint = http://%(bucket)s.s3-website-%(location)s.amazonaws.com/
website_error = 
website_index = index.html

使用

s3cmd ls # 列出该用户下的所有桶

s3cmd mb s3://{new_bucket}  # 创建新桶

上传文件

[xin@centos5 ~]$ s3cmd put a_file s3://repo
upload: 'a_file' -> 's3://repo/a_file'  [1 of 1]
 7 of 7   100% in    0s   128.02 B/s  done

更多使用请参考上文参考资料

二、像文件一样的用对象存储(s3fs)

参考资料:

  1. https://aws.amazon.com/cn/blogs/china/s3fs-amazon-ec2-linux/
  2. https://github.com/s3fs-fuse/s3fs-fuse

安装s3fs

sudo yum install epel-release
sudo yum install s3fs-fuse

配置密钥

echo ACCESS_KEY_ID:SECRET_ACCESS_KEY > ${HOME}/.passwd-s3fs
chmod 600 ${HOME}/.passwd-s3fs

挂载

语法

s3fs mybucket /path/to/mountpoint -o passwd_file=${HOME}/.passwd-s3fs -o url=https://url.to.s3/ -o use_path_request_style

例如

mkdir ~、data
s3fs data ~/data -o passwd_file=${HOME}/.passwd-s3fs -o url=http://192.168.22.99:8899/ -o use_path_request_style -o createbucket
# 如果你的桶之前没有创建好,记得加选项 -o createbucket, s3fs会帮你创建

验证

[xin@centos1 ~]$ df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 475M     0  475M    0% /dev
tmpfs                    487M     0  487M    0% /dev/shm
tmpfs                    487M  7.7M  479M    2% /run
tmpfs                    487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos-root   17G  3.3G   14G   19% /
/dev/sda1               1014M  167M  848M   17% /boot
tmpfs                    487M   24K  487M    1% /var/lib/ceph/osd/ceph-0
tmpfs                     98M     0   98M    0% /run/user/1000
s3fs                     256T     0  256T    0% /home/xin/data

看到最下一行内容,可以看到我们挂载的目录,文件系统是s3fs

更多使用(如实现开机自动挂载)请参考上文参考资料

三、GUI工具

  1. Cyberduck Mac | Windows | Linux
  2. s3browser Windows
  3. CloudBerry Windows | Mac
  4. 还有很多App 都支持 s3 接口, 如 FileZilla Pro

四、SDK

虽然前面介绍了这么多使用对象存储的方法, 但其实在实际应用中,用对象存储最多的方式是使用SDK。

SDK 几乎覆盖了常用的编程语言。

ceph 的对象存储兼容 s3 接口,你可以从下面的页面中选择一个你喜欢编程语言的SDK。

https://aws.amazon.com/cn/s3/developer-resources/?nc=sn&loc=6#SDKs

根据SDK的文档,开始使用对象存储。

个人理解,对象存储接口是为互联网应用设计的, 而不是为最终用户设计的, 所以对应用访问友好。最终用户使用的通常是开发好的产品。

标签: ceph, 对象存储, S3

添加新评论