存储选型是什么
云上有三种基础存储形态:块存储给单机当磁盘用,文件存储给多机共享目录,对象存储存放海量非结构化数据。三者的差别不只是性能,而是访问协议与一致性模型:块存储是块设备、文件存储走 NFS/SMB、对象存储走 HTTP API 且不支持原地随机写。形态选错,不是性能不够就是成本翻倍。
三种存储形态对比
| 维度 | 块存储(云盘) | 文件存储(NAS) | 对象存储(OSS) |
|---|---|---|---|
| 访问协议 | 块设备(挂载) | NFS/SMB | HTTP(S) API |
| 共享能力 | 单实例挂载 | 多实例共享 | 全账号或公网可访问 |
| 性能特征 | 低时延高 IOPS | 中低时延、吞吐型 | 高吞吐、时延较高 |
| 典型场景 | 数据库、系统盘 | 共享目录、容器 PVC | 静态资源、备份、大数据 |
| 计费 | 按容量与性能档 | 按容量 | 按容量、请求数与流量 |
典型使用场景
- 数据库与有状态中间件:必须用块存储,随机 IO 与一致性要求最高
- 多台 Web 共享上传目录:用文件存储挂载到同目录,避免各机数据不一致
- 容器有状态服务:用文件存储提供 ReadWriteMany 的共享卷
- 静态资源与用户上传:对象存储加 CDN,容量无上限、成本最低
- 备份归档:对象存储低频或归档类型,按留存期自动下沉
挂载文件存储示例
挂载文件存储示例
yum install -y nfs-utils # 或 apt install nfs-common
mkdir -p /mnt/nas # 创建挂载点
mount -t nfs4 -o vers=4.0 fs-xxxx.cn-hangzhou.nas.aliyuncs.com:/ /mnt/nas
# 写入 /etc/fstab 时用 _netdev 选项,避免网络未就绪时开机卡住选型速查
| 需求特征 | 首选形态 | 关键理由 |
|---|---|---|
| 单机随机 IO 高 | 块存储 | 低时延、可指定 IOPS 档位 |
| 多机共享同一目录 | 文件存储 | 原生支持多客户端并发挂载 |
| 文件数量极大、只读为主 | 对象存储 | 无目录层级负担,扩展性好 |
| 需要 CDN 直接回源 | 对象存储 | HTTP 原生,回源配置简单 |
不要把数据库数据文件放在文件存储上:NFS 的锁语义与延迟会让数据库出现一致性问题和性能抖动,切换与备份也会变得复杂。
多台实例同时挂载同一块云盘(块存储)是很危险的操作:文件系统没有集群锁,会互相写坏元数据。要共享就用文件存储。