常见问题

飞牛NAS磁盘空间不足:快速清理与扩容

磁盘空间告急是NAS用户最常遇到的问题之一。无论是PT下载、Docker容器日志,还是虚拟机镜像,都可能在不经意间占满你的存储池。这篇文章将从实际运维角度出发,手把手教你如何快速定位空间占用大户,并给出两种行之有效的扩容方案。

第一步:精准定位空间消耗源

在动手清理前,首先需要弄清楚空间都去哪了。飞牛NAS基于Debian系统,我们可以通过终端或SSH登录后台,使用du命令逐层排查。

打开飞牛NAS的SSH功能(设置→终端→启用SSH),然后使用root账号登录。执行以下命令查看根目录下各文件夹的占用情况:

du -h --max-depth=1 /vol1 2>/dev/null | sort -hr | head -20

这里的/vol1是你存储池的挂载点,如果有多块硬盘,请对应修改。该命令会列出第一层目录的大小,按从大到小排序。通常你会发现以下几个常见大户:

1. Docker目录:飞牛将Docker数据存放在/vol1/@docker/docker下。容器日志、镜像层和卷数据会迅速膨胀。进入该目录继续深挖:

du -h --max-depth=3 /vol1/@docker/containers 2>/dev/null | sort -hr | head -30

找到最大的容器ID后,可以查看其日志文件大小:

ls -lh /vol1/@docker/containers/[容器ID]/*-json.log

2. 回收站与快照:飞牛默认开启回收站功能,删除的文件并不会真正释放空间。检查/vol1/@ recycle目录,或通过文件管理器清空各共享文件夹的回收站。

3. 系统更新缓存:系统升级后,旧内核和软件包缓存会残留在/var/cache/apt/archives/usr/src中。

第二步:实战清理操作

清理Docker日志

容器日志是最大的隐形杀手,尤其是运行了数据库或Web服务的容器。使用以下命令直接清空日志文件:

truncate -s 0 /vol1/@docker/containers/[容器ID]/*-json.log

注意不要删除文件,只清空内容,否则Docker会报错。更推荐的做法是在/etc/docker/daemon.json中配置日志轮转:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

修改后重启Docker服务:systemctl restart docker。这样每个容器日志最多占用30MB。

清理APT缓存和旧内核

apt-get clean
apt-get autoremove --purge

对于旧内核,先查看当前使用的版本:

uname -r

然后列出已安装的内核:

dpkg --list | grep linux-image

保留当前版本和上一版本,其余用apt-get purge删除。

清理飞牛系统临时文件

进入飞牛后台,在「系统→存储→存储池」页面查看是否有「回收站」或「快照」功能开启。如果快照占用过大,可以在「快照管理器」中删除旧快照。同时检查「应用中心」中是否有未使用的应用,直接卸载能释放大量空间。

第三步:扩容方案对比与操作

当清理后空间仍然紧张,或者你根本不想频繁清理,扩容才是根本解决方案。飞牛NAS提供两种扩容路径。

方案一:无损扩容存储池(推荐)

如果你还有空闲的硬盘位,这是最优选择。飞牛支持将新硬盘直接加入现有存储池,实现容量叠加,全程无需迁移数据。

操作步骤:

  1. 关机状态下插入新硬盘,开机后进入「系统→存储→存储池」。
  2. 点击目标存储池右侧的「扩容」按钮。
  3. 选择新加入的硬盘,确认后系统会开始数据均衡。这个过程根据硬盘大小可能需要数小时,期间NAS可以正常使用,但建议不要进行大量写入操作。
  4. 扩容完成后,文件系统会自动扩展到新容量,无需手动调整分区。

注意:确保新硬盘容量不低于池内最大硬盘(如果使用RAID模式)。如果使用的是Basic模式(单盘独立),则无法通过加盘扩容,只能迁移数据。

方案二:手动挂载新盘作为独立存储

如果你的存储池是Basic模式,或者不想动现有阵列,可以将新硬盘格式化为独立存储空间,专门用于存放下载或Docker数据。

在飞牛后台「系统→存储→硬盘」中,对新硬盘进行格式化,选择ext4或Btrfs文件系统。然后创建新的共享文件夹,将需要占空间的应用(如PT下载路径、Docker的data目录)迁移到新盘中。

对于Docker迁移,需要修改应用配置或使用软链接:

# 停止相关容器
# 将原数据目录移动到新盘
mv /vol1/@docker /vol2/docker
# 创建软链接
ln -s /vol2/docker /vol1/@docker
# 启动容器

这种方法灵活性高,但需要手动管理多个存储空间。

进阶技巧:设置自动清理策略

为了防止空间再次告急,建议设置定时任务自动清理。在飞牛「系统→计划任务」中新增一个脚本任务,定期执行以下清理命令:

#!/bin/bash
# 清理Docker日志
find /vol1/@docker/containers/ -name "*-json.log" -exec truncate -s 0 {} \;
# 清理APT缓存
apt-get clean
# 清理临时文件
rm -rf /tmp/*

设置每周日凌晨执行一次,即可保持系统清爽。

总结

磁盘空间管理是NAS维护的日常功课。通过du命令精准定位、清理Docker日志和系统缓存,可以快速释放空间;而扩容方面,优先考虑无损扩容存储池,如果条件不允许则使用独立新盘挂载。记住,预防胜于治理,合理的日志轮转和定期自动清理能让你告别空间焦虑。当你下次再看到空间不足的警告时,按照本文步骤操作,十分钟内就能解决问题。

💬 评论区
发表评论

暂无评论,来说两句吧