对象存储,了解一下

对象存储,通常指 S3 (Simple Storage Service) 服务,由AWS提供公有云服务,而 Ceph 也可以提供兼容 S3 协议的对象存储服务,使用起来跟 AWS 的 S3 体验几乎一样。

环境介绍

  • 访问域名: tstack-s3.oa.com
  • 后端物理环境: [ 64G/8Core/11TB*4/10GE*2 ] * 5台
  • Ceph 版本: Jewel 10.2.7
  • RGW 网关: 1个/台,共5个,HAProxy+KeepAlived 实现负载均衡。
  • 测试秘钥:
    • access_key: tstack
    • secret_key: tstack
  • 集群副本数: 2

S3 概念简介

使用S3服务形如登陆一个主机只需要两大要素:

  • 一台主机: 即上面的域名, tstack-s3.oa.com
  • "账户/密码": 即上面的 access_key, secret_key 。后面简称 aksk。

User

一个 User 可以通过自己的 aksk 进行"登录" 对象存储服务,然后就可以看到自己的 Bucket。

Bucket

S3 中的一个重要概念,即存储桶。

类比登录到 Windows 系统后,你可以看到你的各个磁盘,比如:“C: D: E:”,即C盘,D盘,E盘,用于存储用户的数据,那么 Bucket 概念就类似磁盘,用于存储各个 Object。

桶名全局唯一,即小明建了名为tstack的桶之后,其他任何用户都不能创建名为tstack的桶,否则会创建失败。

Object

S3 中的另一个重要概念,即对象,保存于 Bucket 内。也就是我们上传保存的文件。

Object 就类似于磁盘下的各个文件,隶属于一个 Bucket。

ACL

最后一个必须得解释的重要概念,即控制权限。

ACL可以设置到桶、对象一级,即每个桶,甚至每个文件都可以设置不一样的访问权限。默认情况下,每个人建的桶和里面的文件只有自己可见,如果想要把一个桶设置为所有人都可见,可以给桶设置 public-read权限,比如我们有一个桶专门用于存放yum源的rpm包,这个桶就需要这个权限。同样,文件也可以设置单独的公/私有读/写权限,这里不再赘述。

那么 S3 (简单的对象存储服务)的概念就介绍完了。

一句话介绍就是我们每个人都有很多的Bucket,每个Bucket下面可以保存很多的文件。那么下面开始介绍如何使用我们 TStack 自己 S3 服务。

使用 S3 服务

Windows 下使用方法

Windows 下我们使用的是 S3Brower 这个客户端,点击链接可以下载安装。(注意需要访问公司内部环境)[ http://tstack-s3.oa.com/s3-usage/s3browser-7-6-9.exe ]

这里重温下对象存储的三个概念,这里有一个名为 s3-usage 的桶,桶里面保存着一个名为 s3browser-7-6-9.exe的对象,并且这个对象的访问权限为 public-read,因此其他用户可以无需该用户的 aksk 就可以访问下载这个对象。

下面,我将S3Browser的操作步骤制成了GIF,方便大家浏览(手机横过来看会比较清楚)。

  • 打开S3Browser,添加账号。
  • 创建 Bucket,并设置为公有读属性。
  • 上传文件。
  • 下载文件。
  • 设置访问权限。
  • 拖拽上传大文件。

Mac/Linux 下使用方法

s3cmd 方式

由于 S3Browser 只支持 Windows ,我们想要在类 Unix 系统下适用 S3 服务,可以使用工具 s3cmd。安装方法:

### Mac  
brew install s3cmd
### Linux
yum install s3cmd

配置s3cfg

这里我已经编写好配置文件,路径位于 [ http://tstack-s3.oa.com/s3-usage/s3cfg.conf ],内容如下:

[default]
access_key = tstack
secret_key = tstack
host_base = tstack-s3.oa.com
host_bucket = tstack-s3.oa.com

bucket_location = US
check_ssl_certificate = False
check_ssl_hostname = False
signature_v2 = True
use_https = False

只需要将其下载到需要使用s3cmd的机器即可:

curl http://tstack-s3.oa.com/s3-usage/s3cfg.conf -o ~/.s3cfg

下面同样使用GIF方式展示一下 s3cmd 的简单用法:

  • 配置 .s3cfg,并查看所有的桶 s3cmd ls,列出桶s3-usage桶内的对象。
  • 创建桶: s3cmd mb s3://BUCKET_NAME
  • 上传一个对象:s3cmd put
  • 下载一个文件: s3cmd get
  • 下载一个目录: s3cmd sync
  • 上传大文件( 6~10MB/s ):s3cmd put
  • 设置文件的ACL: s3cmd setacl

更多的操作请参考 s3cmd -h

s3fs-fuse 方式

s3fs-fuse 是一个开源项目 [https://github.com/s3fs-fuse/s3fs-fuse]。通过将一个桶挂载到一个目录,然后通过读写挂载目录来实现对象的上传下载,将桶以fuse的形式暴露给终端客户,极大方便了我们的使用,并且也十分稳定。

CentOS 安装 s3fs-fuse :

curl  https://codeload.github.com/s3fs-fuse/s3fs-fuse/zip/master -o s3fs-fuse-master.zip
yum install automake fuse fuse-devel gcc-c++ git libcurl-devel libxml2-devel make openssl-devel unzip
unzip s3fs-fuse-master.zip
cd s3fs-fuse-master
./autogen.sh
./configure
make
sudo make install

Mac 安装 s3fs-fuse :

brew cask install osxfuse
brew install s3fs

将桶挂载到指定目录

echo " tstack:tstack " > ~/.passwd_s3fs
chmod 600 ~/.passwd_s3fs
s3fs {BUCKET} {PATH_TO_MOUNT} -o sigv2 -o use_path_request_style -o passwd_file=~/.passwd_s3fs -o url=http://tstack-s3.oa.com -o uid=`id -u` -d

假设我们将 s3-usage 这个 {BUCKET} 挂载到 /mnt 这个 {PATH_TO_MOUNT} 目录下,则:

s3fs s3-usage /mnt -o sigv2 -o use_path_request_style -o passwd_file=~/.passwd_s3fs -o url=http://tstack-s3.oa.com -o uid=`id -u` -d

挂载成功后,我们就可以将一个桶当做文件系统挂载到宿主机上使用了,使用方法类似 NFS 等,下图是 Mac 系统挂载 s3fs 后的截图。我们可以很方便的将一个桶当做一个云盘挂载到我们自己机器上,并且是支持多挂载共享读写的。

原文发布于微信公众号 - 腾讯云TStack(gh_035269c8aa5f)

原文发表时间:2018-09-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏网络

Nginx 教程#1:基本概念

协作翻译 原文:Nginx Tutorial #1: Basic Concepts 链接:https://www.netguru.co/codestories/...

2328
来自专栏程序员同行者

vue moment库格式化处理后端传的日期

日期时间格式前端和后端都可以处理,我比较推荐前端来处理(定制化高),下面我就介绍下两种处理的方式

6521
来自专栏程序员阿凯

一条大河波浪宽 -- 数据库连接池实现

1124
来自专栏程序员宝库

NGINX 宏观手记

任何一个工具都有它的灵魂所在,作为一个PHP程序员,我们可能仅仅使用了它的一小部分,这篇文章让你更加了解Nginx,本章大多都是总结、翻译、整理 ,希望你可以知...

551
来自专栏zingpLiu

IO模式和IO多路复用

  网络编程里常听到阻塞IO、非阻塞IO、同步IO、异步IO等概念,总听别人装13不如自己下来钻研一下。不过,搞清楚这些概念之前,还得先回顾一些基础的概念。

1193
来自专栏Grace development

NGINX宏观手记

任何一个工具都有它的灵魂所在,作为一个PHP程序员,我们可能仅仅使用了它的一小部分,这篇文章让你更加了解Nginx,本章大多都是总结、翻译、整理 ,希望你可以知...

722
来自专栏Java技术栈

单点登录终极方案之 CAS 应用及原理

Cookie的单点登录的实现方式很简单,但是也问题颇多。例如:用户名密码不停传送,增加了被盗号的可能。另外,不能跨域!

2612
来自专栏coder修行路

关于go语言的测试相关内容笔记

其实之前对于测试自己一直比较弱,不管是python的还是go的,关于测试这块并没有非常注重,这次就好好整理一下关于go的测试

791
来自专栏Linux驱动

第4阶段——制作根文件系统之分析init进程(2)

本节目标: (1) 了解busybox(init进程和命令都放在busybox中) (2) 创建SI工程,分析busybox源码来知道init进程做了哪些事情 ...

2509
来自专栏Java Web

初学Java Web(5)——cookie-session学习

HTTP 协议 Web 浏览器与 Web 服务器之间的一问一答的交互过程必须遵守一定的规则,这样的规则就是 HTTP 协议。 HTTP 是 hypertext ...

3125

扫码关注云+社区

领取腾讯云代金券