【存储基础】对象存储基础知识
文章目录
- 1. 什么是对象存储?
- 2. 对象存储的关键特性
- 2.1 架构层面
- 扁平命名空间
- 自包含对象模型
- 2.2 核心能力层面
- 极限扩展性
- 超高数据持久性
- 服务高可用性
- 2.3 数据智能与访问层面
- 可扩展元数据
- RESTful API原生访问
- 2.4 成本与效率层面
- 2.5 安全合规层面
- 端到端加密
- 访问控制
- 参考内容
1. 什么是对象存储?
传统的存储方式:
- 文件存储:数据组织在文件和文件夹的层级目录结构中,通过路径定位数据;
- 块存储:数据被分割成固定大小的“块”,直接存储在裸盘设备上,操作系统负责管理这些块,组装成文件系统,通过卷、LUN、块地址定位数据。
对象存储则通过消除非结构化数据多层存储结构,简化管理并降低成本:
- 数据即对象:每个数据单元都被视为一个独立的对象;
- 扁平命名空间:所有对象都存储在扁平的。非层级的地址空间中(通常称为桶),没有复杂的目录树结构;
- 唯一标识符:每个对象都有一个全局唯一的标识符(uuid),通过这个id直接访问对象,无需路径;
- 数据+元数据+uuid:一个对象包含三个关键部分
- 数据本身;
- 元数据:描述对象的数据
- 全局唯一标识符uuid
对象存储的核心概念有:
- 对象
- 基本单元:对象是对象存储的基本单元,每个文件、图片、日志文件等都被视为一个独立的、自包含的对象;
- 组成要素:一个对象包含了三部分:数据+元数据+UUID;
- 桶
- 逻辑容器:对象被组织在称为桶的顶层逻辑容器中,桶名在其作用域内必须唯一;
- 主要作用:
- 对象分组:提供一种方式将相关对象分组管理
- 策略边界:是设置访问控制策略(如ACL)的基本单元,决定谁可以访问桶内对象及执行何种操作;
- 配置单元:桶是配置生命周期规则、版本控制、加密等特性的地方;
- 扁平命名空间
- 摒弃层级:桶内没有真正的文件夹或目录树结构;
- 键值存储:所有对象都存储在一个巨大的、扁平的地址空间中,对象通过唯一标识符直接定位;
- 全局唯一标识符
- 访问地址:是访问对象的“地址”,在桶内,每个标识符是唯一的;
- 作用:客户端通过桶名+标识符的组合来唯一执行并访问一个对象
- 帐户:帐户是资源的最高归属实体
- 核心作用
- 资源所有者:帐户是对象存储资源(桶、对象)的法定拥有者;
- 管理边界:帐户是配置全局策略的顶层容器;
- 计费主体:所有资源使用量(存储容量、流量等)的计费都关联到帐户;
- 核心作用
- 用户:访问资源的操作主体
- 核心作用
- 身份标识:代表一个操作者,用于身份认证;
- 权限载体:通过关联权限策略,决定该用户能执行哪些操作;
- 访问凭证:用户拥有专属的访问密钥(AK/SK)
- 用户和帐户的关系
- 用户必须隶属于某个帐户;
- 帐户是“资源池”,用户是“资源使用者”
- 核心作用
2. 对象存储的关键特性
2.1 架构层面
扁平命名空间
对象存储抛弃了传统的目录树结构,所有对象都存储在桶内的单一逻辑层中,通过唯一的key(UUID)直接寻址。
这种扁平命名空间结构的优势:
- 无限扩展性:添加对象不影响性能,没有目录遍历的开销;
- 简化管理:无需维护复杂目录结构
自包含对象模型
一个对象包含了数据本身+元数据+全局唯一ID。
2.2 核心能力层面
极限扩展性
- 横向扩展:通过添加标准存储节点,容量可以线性扩展到EB级别;
- 性能同步提升:带宽和IOPS随着容量增长而提升,支持百万级并发请求
这种极限扩展性也让对象存储在海量存储场景得到广泛应用。
超高数据持久性
提供EC纠删码和多副本的数据保技术:
- EC纠删码:将对象切分为n个数据块+m个校验块,分散存储,比如4+2策略容忍任意2块数据丢失/损坏,任意m块数据能通过其他n块数据恢复;
服务高可用性
- 多级冗余
- 故障自愈:节点故障时自动切换请求,后台重建数据
2.3 数据智能与访问层面
可扩展元数据
支持快速检索
RESTful API原生访问
例如:
# 上传对象
curl -X PUT https://bucket.oss.com/data.jpg -T local.jpg
# 获取元数据
curl -I https://bucket.oss.com/data.jpg
2.4 成本与效率层面
- 按需付费
- 自动分层存储
- 内置数据管理能力
2.5 安全合规层面
端到端加密
- SSE-S3:服务端加密,密钥由平台管理;
- SSE-KMS:密钥由独立密钥管理系统托管;
- 客户端加密:数据在上传前加密
访问控制
- IAM Policy:用户级权限,比如不允许删除操作;
- Bucket Policy:桶级权限,比如仅允许特定IP访问;
- ACL:对象级读写权限
参考内容
- 分布式对象存储(Object Storage) - 知乎
- 对象存储(OSD)及架构原理-CSDN博客