飞牛os安装时选择的空间较小(16G),刚开始的时候是够用的,随着使用时间剩余空间越来越少,占用达到88%以上。最近在学习lxc容器,在nas上练手,导致系统分区占用100%,在找回空间的过程中,顺便把空间占用减小到60%。

查看磁盘整体使用情况

df -h
确认哪个分区(比如 / 根分区或 /var 分区)已经满了或接近满。

清理系统。

1
2
3
4
5
6
7
8
9
10
11
12
# 检查 apt 缓存(通常能清理几百 MB)
sudo du -sh /var/cache/apt

# 检查临时文件
sudo du -sh /tmp

# 检查 snap 包(如果装了 snap)
sudo du -sh /var/lib/snapd

# 检查下载目录或用户目录
sudo du -sh /root
sudo du -sh /home/* 2>/dev/null

找到占用空间最大的目录

1
sudo du -sh /* --exclude=/vol1 --exclude=/vol2 --exclude=/vol02 2>/dev/null | sort -hr | head -15

排除了挂载的大硬盘 /vol1, /vol2, /vol02,这样看根分区更清楚。需要的时候比较长。
docker,lxc之类默认在/var/lib下面。

查找大于 100MB 的大文件
直接搜索根分区下所有大于 100MB 的文件:

1
sudo find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | awk '{print $5, $9}' | sort -hr | head -20

这个命令会直接列出所有大文件的路径和大小,是最快定位问题的方法。

找到占用空间的主要是这三个:/usr,/swapfile,/var。

  • /swapfile
    有 4.1GB —— 是系统 swap(虚拟内存)。nas的物理内存只有 4GB,系统创建了一个 4.1GB 的 swap 文件来辅助内存。这部分是正常的,不建议删除。
  • /usr
    7.1GB —— 系统程序,不能动。
  • /var
    3.2GB —— 这是可以清理的部分。
1
2
3
4
5
6
7
8
9
10
11
# 查看 /var 下面哪些子目录大
sudo du -sh /var/* 2>/dev/null | sort -hr | head -10
# 清理 apt 包缓存(通常能释放几百 MB)
sudo apt clean
sudo apt autoremove --purge -y

# 清理 journal 日志(保留最近 3 天)
sudo journalctl --vacuum-time=3d

# 如果有 snap 残留
sudo rm -rf /var/lib/snapd/cache/*

解决方案

16GB 根分区对于 Debian + fnOS + Docker 来说确实太小了。大硬盘(/vol1、/vol2)有几百 GB 空间,把 swapfile 迁移到 /vol1 或 /vol2,可以释放根分区 4.1GB 空间。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 关闭当前 swap
sudo swapoff /swapfile

# 在大硬盘上创建新的 swap 文件(例如在 /vol1 上创建 4GB swap)
sudo fallocate -l 4G /vol1/swapfile
sudo chmod 600 /vol1/swapfile
sudo mkswap /vol1/swapfile

# 启用新 swap
sudo swapon /vol1/swapfile

# 删除旧的 swapfile
sudo rm /swapfile

# 更新 /etc/fstab,把原来的 /swapfile 改成 /vol1/swapfile
sudo sed -i 's/\/swapfile/\/vol1\/swapfile/g' /etc/fstab

这样根分区可以立即释放 4.1GB 空间,使用率从 88% 降到 60% 左右,后续再清理一下 /var,就能稳定在 50-60% 的水平。

验证并查看释放的空间

1
2
swapon --show   # 应该显示 /vol1/swapfile
df -h / # 检查根分区的可用空间,应该会从 1.9G 增加到 6G 左右

完成后:

  • 根分区 (/):从 88% 使用率降低到 ~60%。
  • 可用空间:从 1.9GB 增加到 ~6GB。
  • 性能:将 swap 放在大硬盘上,对日常使用没有任何负面影响。

nas上系统分区主要用于放置操作系统,数据独立存放,docker之类占用空间大的都放在大容量存储上,lxc也同样需要放在大容器存储上,不然会把系统分区占满。
本文由deepseek指导,并实操通过。