
在腾讯云国际站部署CVM、网站或企业应用时,经常会遇到一个问题:同样都是存数据,COS对象存储、CBS云硬盘和CFS文件存储到底有什么区别?
网站图片该放COS还是云硬盘?MySQL数据能不能放COS?多台CVM需要共享同一个目录又该选什么?
本文由 云国际站代理商『云老大 飞弟:@yunlaoda360 / YunLaoDa-服务器服务商•撰写』如需转载请注明!
先说结论:
COS主要存对象,CBS主要给服务器当磁盘,CFS主要解决多台服务器共享文件。
三者分别对应对象存储、块存储和文件存储,不是谁替代谁,而是解决的问题不同。
COS全称Cloud Object Storage,也就是腾讯云对象存储。
它主要把图片、视频、附件、日志、备份等数据作为Object保存到Bucket中,应用通常通过HTTP/HTTPS、API或SDK访问。
例如:
Bucket
├── images/logo.png
├── video/demo.mp4
├── backup/mysql.sql.gz
└── logs/app.logCOS比较适合:
要注意,COS不是传统意义上的“网络硬盘”。它提供的是对象接口,而不是Linux中的块设备。

CBS全称Cloud Block Storage,也就是块存储。
它可以挂载到CVM,Linux系统会把它识别成磁盘设备,经过分区、格式化和挂载后,就可以像普通服务器硬盘一样使用。
因此CBS更适合:
比如MySQL正在运行的数据文件,需要块级随机读写,通常应该放在符合性能要求的CBS中,而不是直接放COS。
但是MySQL生成的备份文件,例如:
mysql-backup.sql.gz则很适合进一步保存到COS。

假设现在有两台Web服务器:
CVM-A
CVM-B两台机器都需要访问:
/shared/uploads而且A上传的文件,B也要马上看到。
这种情况更适合CFS。
CFS全称Cloud File Storage,提供共享文件系统能力,可以通过NFS等协议供多个计算节点访问同一套文件。
可以理解成:
CVM-A ─┐
CVM-B ─┼── CFS共享目录
CVM-C ─┘因此CFS比较适合:
对比项 | COS | CBS | CFS |
|---|---|---|---|
存储模型 | Object对象 | Block块 | File文件 |
访问方式 | API、SDK、HTTP | 挂载为磁盘 | NFS等文件协议 |
使用体验 | 对象仓库 | 服务器硬盘 | 共享NAS |
典型数据 | 图片、视频、备份、日志 | 系统、数据库、运行数据 | 多节点共享文件 |
多节点访问 | 多应用访问对象 | 主要用于块设备场景 | 适合共享 |
应用改造 | 通常需要对象接口 | 较少 | 传统文件应用较容易适配 |
一句话记忆:
COS管对象,CBS管磁盘,CFS管共享目录。

真实业务通常不是三选一。
一个Web系统可以这样规划:
CVM
├── CBS:系统、程序、运行数据
├── CFS:多节点共享目录
└── COS:图片、附件、视频、备份例如电商网站可以把商品图片和用户附件放COS,CVM系统和应用数据放CBS;如果有多台Web服务器必须共享传统目录,再增加CFS。
这样不同数据使用不同存储,比把所有东西都塞进一块越来越大的云硬盘更容易扩展。
假设程序原来直接保存:
/data/uploads/a.jpg这属于传统文件系统操作。
迁移到COS后,应用通常需要变成:
上传文件
→ 调用COS SDK/API
→ 写入Bucket
→ 保存Object Key所以老系统如果很难修改代码,又必须继续使用传统文件路径,CFS往往比直接改成COS更容易兼容。
如果是新开发的网站、App或SaaS,则可以从一开始就按照COS对象存储方式设计。
可以直接问三个问题。
需要服务器真正的磁盘吗?
例如系统盘、自建数据库、Docker数据目录。
选择:CBS
需要保存大量图片、视频、附件、日志或备份吗?
并且可以通过API、SDK或Web访问。
选择:COS
多台服务器必须共享同一个传统目录吗?
例如多个CVM同时访问/shared/uploads。
选择:CFS
如果三个需求同时存在,也完全可以三种产品一起使用。

第一个是Region。
如果CVM长期运行在新加坡,而COS Bucket放在其他Region,需要额外考虑访问时延、跨地域数据传输和后续迁移。因此计算资源和存储Region最好在项目上线前一起规划。
第二个是权限。
不要因为图片访问失败,就把整个Bucket长期改成完全公开。生产环境应根据业务需要使用CAM、Bucket Policy、临时密钥或签名URL等方式控制权限。
尤其是数据库备份、日志和用户隐私数据,更应该默认保持私有。
不建议。COS是对象存储,CBS是块存储,两者访问方式和适用场景不同。
MySQL在线数据不适合直接把COS当块设备使用。自建MySQL通常使用CBS,数据库备份文件则可以放COS。
如果应用需要传统共享目录,可以重点考虑CFS。
COS通过对象接口访问数据;CFS通过文件系统协议提供共享目录。
不能只看每GB价格。COS还可能涉及请求、数据传输和取回费用,CBS则涉及容量和性能规格,应按完整业务成本比较。
腾讯云国际站COS、CBS和CFS看起来都在“存数据”,实际上解决的是三类问题:
图片、视频、日志和备份看COS;服务器系统和数据库看CBS;多服务器共享目录看CFS。
选型时先判断应用需要的是Object、Block还是File,再考虑性能、Region和成本,通常比直接比较价格更可靠。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。