对象存储是什么
对象存储用 HTTP(S) API 存取图片、视频、备份、日志这类海量非结构化数据:数据以对象为单位放在桶里,用对象名定位,没有目录层级也没有文件系统挂载的概念。它按容量与流量计费、容量近乎无限,适合放数量多、体积大、不常改的数据;需要随机读写或承载数据库文件时应该用块存储。
基本信息
| 三厂名称 | 对象存储 OSS(阿里云)/ COS(腾讯云)/ OBS(华为云) |
|---|---|
| 数据模型 | Bucket(桶)→ Object(对象)→ Key(对象名),桶名全局唯一 |
| 访问方式 | 控制台、SDK、命令行(ossutil/coscmd/obsutil)、HTTP API |
| 计费维度 | 存储容量、外网下行流量、请求次数、跨地域复制流量 |
| 典型场景 | 静态资源、备份归档、数据湖、日志与冷数据 |
典型使用场景
- 静态资源托管:图片、视频、前端构建产物放对象存储,再配合 CDN 对外分发
- 备份与归档:数据库备份、日志归档、快照导出放对象存储,比挂磁盘更便宜也更耐久
- 数据湖与离线分析:原始日志与列式文件直接落地,计算引擎按需读取
- 容器与集群的配套存储:镜像仓库后端、日志采集落盘、应用上传目录都常用它
- 大文件分发:用签名地址与合作方直接交互,流量不必绕经自己的应用服务器
- 跨地域复制与容灾:重要桶开启跨地域复制,配合版本控制防止误删与覆盖
三种存储形态对比
| 维度 | 对象存储 | 云盘(块) | NAS(文件) |
|---|---|---|---|
| 访问协议 | HTTP(S) API | 块设备挂载 | NFS/SMB 共享 |
| 共享性 | 账号内资源,按权限访问 | 通常单实例挂载 | 多实例同时共享 |
| 适合场景 | 图片、备份、大数据 | 数据库、系统盘 | 共享目录、日志 |
| 容量 | 近乎无限 | 按盘容量购买 | 按容量弹性扩展 |
| 计费 | 按容量与流量 | 按容量与性能档 | 按容量与带宽 |
ossutil 常用操作
ossutil 常用操作
ossutil cp ./index.html oss://my-site/web/index.html # 上传单个文件
ossutil cp -r ./dist/ oss://my-site/web/ --update # 只上传有变化的文件
ossutil ls oss://my-site/ # 列出对象
ossutil rm oss://my-site/web/index.html # 删除单个对象
# 同地域云服务器用内网 Endpoint 访问,不产生公网流量费同地域的云服务器通过内网 Endpoint 访问对象存储,既不产生公网流量费,速度也更快;跨地域访问只能走公网或先把数据复制到本地域。
桶的读写权限默认私有,一旦改成公共读,桶内所有对象都可被匿名下载,还会被爬虫与搜索引擎收录,收紧前要先评估已经暴露多久。
对象存储不适合当文件系统用:随机写与小文件高频改写会产生大量请求并触发额外费用,性能也不如块存储。
使用前的规划要点
- 先按用途定桶的划分:静态资源、备份、日志各用独立桶,生命周期与权限策略才好分别设置
- 想清楚地域:桶的地域创建后不可更改,跨地域访问要么走公网,要么开跨地域复制
- 给每个桶配生命周期规则:多久转低频、多久转归档、多久删除,冷数据的成本主要靠这一步压下来
- 区分内网与公网访问方式:应用侧统一用内网地址,对外分发交给 CDN,避免公网流量绕路
- 把访问凭据交给访问控制体系管理,程序用临时凭证访问,不把长期密钥写进配置或镜像