oss
对象存储 OSS
对象存储是无层次结构的数据存储方法,通常用于云中。不同于其他数据存储方法,基于对象的存储不使用目录树。各个单独的数据(对象)单元存在于存储池中的同一级别。
Brain++ OSS 是 Brain++ Platform 提供的对象存储服务。您可以在 Brain++ 内网中存储和访问任意类型的数据。关于对象存储的基本用法,请参考下文的客户端示例。关于对象存储的更多基本概念,请查阅相关资料。
重要基础知识
- 对象存储不存储目录树,而是一个简单的 Key-Value 映射
一些文档
- s3的官方文档:https://docs.aws.amazon.com/cli/latest/reference/s3/index.html#available-commands 91
- oss的详细定义wiki:https://en.wikipedia.org/wiki/Object_storage
- https://www.druva.com/blog/object-storage-versus-block-storage-understanding-technology-differences/ 5
- https://www.quora.com/What-features-differentiate-HDFS-and-OpenStack-Object-Storage 7
oss是什么
oss (object storage service) 是一种分布式对象存储解决方案。最著名的oss是aws的s3 45,国内有阿里云oss 18。
想了解. wiki中提到,oss很适合存储“非结构化”数据,facebook,spotify,dropbox都使用oss去存储图片/视频.
oss相比与isilon
- oss比isilon便宜很多,OSS 的硬件成本是 Isilon 成本的 30% 左右。
- 业务增长快,扩容需求急,isilon响应周期慢,isilon需要依赖第三方的采购,实施。往往流程很慢,很难应对存储快速扩容需求。
oss的不足
oss是对象存储,最大的好处是可扩展性。相比与开源分布式文件系统,比如hdfs,其面对小文件,更友好,更易扩展。但其牺牲了文件系统带来的meta层级结构。不过oss提供了很多类似文件系统的命令,比如:
如何配置使用
1. 安装必要的工具
执行以下命令安装工具,如遇到错误,请尝试更新 pip.conf 385.
1 |
|
通过 aws --version
查看当前安装的版本号,如果提示 aws
命令不存在,请添加环境变量:
1 |
|
2. 配置 AccessKey 与 SecretAccessKey
OSS 使用 AccessKey 与 SecretAccessKey 进行认证和加密,到 Brain++ 安全设置 1.3k页面即可获取。
注意:
- AccessKey 和 SecretAccessKey 相当于密码
- 不可以公开贴出来
- 不可以写进代码里
- 不可以告诉别人
- 如果 AccessKey 泄露、丢失,请及时 Reset。
执行命令完成配置:
1 |
|
3. 使用命令行工具
先 ls
一下确认配置正确
1 |
|
如果你名下有可以访问的 OSS Bucket,或者在 存储 490 页面中建立过自己的 OSS Bucket,ls
就会返回 bucket 列表,否则就会返回空。只要没报错、卡死,就说明配置正确了。
以下是更完整的命令行工具用例,更多用法请参考 AWS Command Line Interface 480 的相关文档或者阅读 aws help。
1 |
|
在 Python 代码中使用
下面代码展示了基本用法,更多请参考 boto3 s3 client 353 的相关文档。
注意: 请首先确保自己完成了命令行工具配置,否则会因为没有 AccessKey 和 SecretAccessKey 而失败。
1 |
|
管理对象存储 Bucket
在 Brain++ OSS 89 页面可以创建、删除和管理 Bucket 权限。需要注意的是,Bucket 名字是 所有用户全局唯一 的,所以在对 bucket 命名时,建议通过前缀等方式避免冲突。Bucket 建立之后名字可以修改。
其他语言用法
对象存储具有与平台无关的 RESTful API 接口,它与 Amazon S3 API 的基本数据访问模型兼容(具体兼容性请参考下文 兼容性 )。所以它可以直接使用支持 Amazon S3 接口的工具包。有一点例外的是,对象存储 Bucket 的创建、删除和权限控制仅可在
OSS 89 页面完成。
理论上,可复用任何支持 S3 的客户端和工具包。下面展示 CLI 和 Python 的基本使用,它们本质上都是对 S3 RESTful API 的调用,所以在下文兼容性中所描述的不支持的功能在客户端和工具包中也不能支持。
注:仅支持通过URI中的顶级目录来确认 bucket。如:
GET http://oss.i.brainpp.cn/mybucket 11
不支持通过虚拟的 bucket 主机名来确认 bucket。如:
GET http://mybucket.oss.i.brainpp.cn 2