先别急着扩容硬盘,那属于“治标不治本”且成本最高的做法。阿里云 ECS 的本地盘或云盘扩容是有上限的,而且静态资源(图片、视频、JS/CSS)占空间大、IO 读写频繁,直接塞在系统盘里会让服务器变慢,甚至导致磁盘 IOPS 打满,影响业务逻辑。
作为过来人,我给你梳理几条从“零成本优化”到“架构升级”的实操方案,按推荐程度排序:
1. 最推荐:对象存储 OSS + CDN(彻底解脱)
这是处理海量静态资源的标准答案。
- 原理:把图片、视频、附件等非代码文件全部迁移到阿里云 OSS(Object Storage Service)。OSS 是按容量付费的,价格极低(比如几毛钱/GB/月),而且无限扩容。
- 搭配 CDN:开启 CDN 提速。用户访问图片时,请求直接打到离用户最近的 CDN 节点,不经过你的 ECS 服务器。
- 好处:
- ECS 磁盘瞬间清空:你的服务器只跑代码和数据库,性能飙升。
- 带宽节省:CDN 流量费通常比 ECS 公网出流量便宜得多。
- 高可用:OSS 数据冗余多副本,不怕丢。
- 怎么做:
- 购买 OSS Bucket。
- 使用工具(如 ossutil 或第三方同步软件)将现有静态文件批量上传到 OSS。
- 修改前端代码或后端接口,将静态资源的 URL 指向
https://your-bucket.oss-cn-xxx.aliyuncs.com/...。 - 配置 CDN 域名解析到 OSS 的 Endpoint。
2. 低成本替代:云盘扩容 + 挂载新盘(过渡方案)
如果你暂时不想改代码,或者项目太小,不值得搞 OSS,那就老老实实扩容。
- 操作:
- 在阿里云控制台给当前云盘“扩容”。注意:Linux 系统需要执行
growpart和resize2fs(ext4)或xfs_growfs(xfs)命令来识别新空间。 - 强烈建议:不要把所有东西都堆在根目录
/。买一块新的云盘(比如 100G 起步),格式化为 ext4/xfs,挂载到/data或/static目录下。 - 将 Nginx/Apache 的静态资源根目录指向这个新挂载盘。
- 在阿里云控制台给当前云盘“扩容”。注意:Linux 系统需要执行
- 缺点:还是依赖 ECS 本身的带宽和磁盘 IO,如果并发高了,服务器依然会卡。
3. 极致省钱:利用免费额度或边缘计算
- CloudBase / Serverless 方案:如果你的静态资源主要是前端构建产物(React/Vue 打包后的 HTML/CSS/JS),可以考虑直接用 阿里云函数计算 FC + 对象存储 或者 轻量应用服务器 的静态网站托管功能。有些场景下,低频访问的静态资源放在 OSS 低频访问型存储中,成本几乎可以忽略不计。
- 检查是否有未使用的快照:有时候磁盘不够用是因为历史快照太多。去控制台清理旧的自动快照,能释放一部分配额(但本质是回收空间,不是增加容量)。
4. 技术优化:压缩与懒加载(治本之策)
在迁移之前,先看看能不能“瘦身”:
- 图片压缩:检查你的图片是否都是原始大图?用 TinyPNG 或阿里云的图片处理服务(IMG)进行 WebP 转换和压缩。一张 5MB 的原图压成 WebP 可能只有 500KB,空间立省 90%。
- Nginx Gzip/Brotli:确保 Nginx 开启了 Gzip 或 Brotli 压缩,对 JS、CSS、HTML 文本进行压缩传输,虽然不减少磁盘占用,但能大幅降低带宽压力,间接缓解服务器负载。
- CDN 缓存策略:如果用了 CDN,设置合理的 Cache-Control,让浏览器和 CDN 节点缓存更久,减少回源请求。
❌ 避坑指南(千万别做)
- 不要把日志也存到同一块盘:如果磁盘满了,首先排查是不是 Nginx 或应用的日志文件没轮转(logrotate),导致单个日志文件几个 G。及时清理或配置 logrotate。
- 不要手动删除系统关键文件:为了腾空间删掉
/usr或/var下的库文件,会导致系统崩溃,重装都比修复快。 - 不要迷信“虚拟内存”:加 Swap 只能解决 OOM(内存不足),解决不了磁盘空间不足。
总结行动步骤
- 立刻:检查磁盘使用率
df -h,确认哪些文件夹最大(用du -sh /*逐层排查)。 - 本周内:将所有非必要的静态资源(图片、视频、下载包)迁移至 阿里云 OSS。
- 配置:启用 OSS 的 CDN 提速,并更新前端引用地址。
- 后续:定期监控 OSS 用量,按需调整存储类型(标准 -> 低频 -> 归档),进一步降低成本。
这套组合拳下来,你的 ECS 服务器会变得非常轻盈,而且未来无论加多少图片,都不再担心磁盘爆满的问题。
CLOUD云计算