一、结论
云服务器存储适合低延迟读写的程序运行、数据库存储、临时缓存等场景,对象存储适合海量非结构化文件存储、公网分发等场景。S3兼容的对象存储接入通常需要准备Endpoint、AccessKey、SecretKey、Bucket、Region等信息,在对应程序中填写并测试连接即可完成配置,两种存储可根据业务需求组合使用。
二、准备工作
通用准备
- 明确业务核心需求,判断是侧重低延迟本地读写还是侧重海量文件公网分发
- 梳理业务数据总量、峰值带宽需求、访问频次等核心参数
若选择云服务器存储
- 已开通的云服务器实例
- 匹配IO需求的系统盘/数据盘资源
- 服务器远程SSH或桌面登录权限
- 待部署的程序、数据库或缓存服务安装包
若选择对象存储
- 对象存储服务账号
- 提前规划好权限配置的存储桶Bucket
- 服务方提供的Endpoint地址
- 有权限访问存储桶的AccessKey、SecretKey
- 存储桶所属的Region代码
- 支持S3协议的客户端、程序或对应插件
- 待上传或管理的非结构化文件资源
三、操作步骤
1. 判断存储选型:对照场景需求匹配存储类型,低延迟随机读写类业务选云服务器存储,海量非结构化文件存储分发类业务选对象存储,结果是明确存储资源采购方向,避免后续资源浪费。
2. 云服务器存储配置:若选择云服务器存储,根据业务IO需求选购对应类型的云盘,新增云盘后挂载到服务器指定目录,完成分区格式化后给程序运行用户分配读写权限,结果是云服务器可直接读写该存储分区,用于部署程序、存储数据库文件或临时缓存。
3. 创建对象存储桶:若选择对象存储,登录服务控制台创建存储桶,根据业务需求设置公共读/私有读写权限,配置跨域访问、生命周期等可选规则,结果是获得可用的存储桶资源。
4. 获取S3接入参数:在对象存储控制台的密钥管理或接入指南页面,获取S3对接所需的Endpoint、AccessKey、SecretKey、Region信息,建议使用子账号密钥降低安全风险,结果是拿到全部对接所需的配置参数。
5. 进入程序配置页面:打开需要接入存储的程序(如Cloudreve、Alist、PicGo、Halo、WordPress等)的存储设置页,选择S3兼容存储类型,结果是进入S3参数配置界面。
6. 填写配置参数:依次填写提前获取的Endpoint、AccessKey、SecretKey、Bucket、Region等参数,根据程序要求可选填写自定义存储路径、访问域名前缀等内容,结果是完成所有必填配置项的填写。
7. 测试连通性:保存配置后点击程序内置的测试连接按钮,提示连接成功后上传1个测试文件,访问文件的公网链接确认可正常打开或下载,结果是验证接入配置有效。
8. 正式上线使用:将业务侧的资源存储路径修改为对应存储的访问地址,静态资源类业务可搭配CDN做进一步加速,结果是存储资源正式接入业务场景使用。
四、常见错误
1. Endpoint填写错误:常见原因是混淆公网和内网Endpoint、遗漏协议头或多写后缀路径,解决建议是核对服务商官方提供的接入地址,内网环境部署的程序用内网Endpoint,公网访问的程序用公网Endpoint。
2. AccessKey或SecretKey验证失败:常见原因是密钥前后有多余空格、密钥已过期或被禁用,解决建议是重新复制密钥参数,确认密钥状态正常,尽量使用仅拥有对应存储桶权限的子账号密钥,避免使用主账号密钥。
3. Bucket或Region不匹配:常见原因是存储桶名称大小写错误、Region代码和存储桶所属地域不一致,解决建议是核对控制台的存储桶名称和地域信息,部分程序要求Region填写固定代码,需和服务商要求保持一致。
4. 权限不足导致上传/访问失败:常见原因是存储桶没有开放对应读写权限、AccessKey对应的账号没有存储桶的操作权限,解决建议是检查存储桶的访问策略,给子账号分配对应存储桶的读写权限,公共访问的文件需单独设置公共读权限。
5. 上传成功但访问链接不可用:常见原因是存储桶没有开启公网访问、没有绑定自定义域名、跨域请求没有配置CORS规则,解决建议是开启存储桶的公网访问权限,绑定已备案的自定义域名,根据业务请求来源配置跨域规则。
6. 云服务器存储IO性能不足:常见原因是用普通云盘运行高IO需求的数据库业务、存储盘容量占满导致性能下降,解决建议是高IO场景选择SSD类型云盘,存储容量预留20%以上的冗余空间避免占满。
五、示例说明
云服务器存储配置示例
- 云盘类型:根据IO需求选择高效云盘/SSD云盘
- 存储容量:根据业务数据量预留20%以上冗余空间
- 挂载路径:根据程序要求填写,例如数据库存储可填/var/lib/mysql,附件存储可填/opt/data
- 目录权限:给程序运行用户分配对应目录的读写权限,避免权限不足导致程序运行异常
S3对象存储接入配置示例
- Endpoint:填写所用对象存储服务提供的公网/内网接入地址
- AccessKey:填写控制台生成的访问密钥ID
- SecretKey:填写与AccessKey配对的密钥字符串
- Bucket:填写提前创建的存储桶名称
- Region:填写存储桶所属地域的对应代码
- 访问域名:可选填写存储桶绑定的自定义访问域名,用于文件分发
六、更简单的方案
如果不想自己在云服务器上搭建维护MinIO等自建对象存储服务,也不想占用云服务器存储的IO资源做文件分发,完全可以选择第三方成熟的兼容S3协议的云对象存储服务,不需要自己维护存储节点、扩容磁盘,也不需要处理流量峰值的带宽压力,运维成本更低,扩容更灵活。如果你需要一个兼容S3协议、适合程序接入、图床、网盘系统存储源和下载分发的对象存储服务,可以了解 七彩云对象存储,它支持不限流量的下载分发,接入门槛低,适合站长、开发者和项目方使用。
七、FAQ
Q:对象存储和云服务器存储能不能同时使用?
A:完全可以,大部分成熟的业务架构都是两者配合使用:云服务器存储用来部署程序、运行数据库、存储临时缓存文件,对象存储用来存静态资源、附件、视频、大文件等非结构化数据,既能保证程序运行的低延迟,又能降低海量文件存储和分发的成本。
Q:云服务器存储里的现有文件能不能直接迁移到对象存储?
A:可以,你可以用支持S3协议的同步工具(比如rclone),把云服务器本地目录的文件批量同步到对象存储的存储桶中,迁移完成后只需要修改程序的资源调用路径即可,不需要修改核心业务逻辑。
Q:接入S3对象存储必须自己写代码对接吗?
A:不需要,大部分常用的建站程序、网盘系统、图床工具都已经内置了S3兼容存储的适配,直接在配置页填写对应参数即可完成对接,只有自定义开发的应用才需要调用官方SDK做定制化开发。
Q:大文件分发场景用对象存储比云服务器存储更划算吗?
A:大部分情况下是的,对象存储的下行流量单价通常低于云服务器的公网带宽单价,尤其是下载站、视频站这类高流量场景,用对象存储做分发不需要长期占用云服务器的固定带宽,峰值流量也不需要额外扩容服务器带宽,综合成本更低。
八、总结
整个操作流程核心是先根据业务场景判断存储选型:云服务器存储适合低延迟、高随机IO的业务,比如运行程序、数据库、临时缓存;对象存储适合海量非结构化文件存储、公网分发场景,比如图片视频存储、下载站、图床、AI训练数据存储。如果选择S3兼容的对象存储,只需要创建存储桶、获取接入参数、在对应程序中填写配置、测试连通性四步即可完成接入,门槛极低。两种存储没有绝对的优劣,根据业务需求组合使用可以达到最优的成本和性能平衡,适配绝大多数站长、开发者的项目需求。
想进一步了解这个项目?
访问官网查看产品能力、适用场景和最新服务信息。
访问官网