首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >对象存储,了解一下

对象存储,了解一下

作者头像
腾讯云TStack
发布2018-10-12 16:28:59
3.8K0
发布2018-10-12 16:28:59
举报

对象存储,通常指 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 后的截图。我们可以很方便的将一个桶当做一个云盘挂载到我们自己机器上,并且是支持多挂载共享读写的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云TStack 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境介绍
  • S3 概念简介
  • 使用 S3 服务
    • Windows 下使用方法
      • Mac/Linux 下使用方法
        • s3cmd 方式
        • s3fs-fuse 方式
    相关产品与服务
    对象存储
    对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档