Linux Debian主分区(/)的服务器满,如何为它腾出空间

我如何安全地释放根文件系统上的一些空间?

df说:

 Filesystem Size Used Avail Use% Mounted on /dev/md1 9.7G 9.2G 0 100% / tmpfs 3.9G 0 3.9G 0% /lib/init/rw udev 10M 244K 9.8M 3% /dev tmpfs 3.9G 620K 3.9G 1% /dev/shm /dev/md3 1.8T 327G 1.4T 19% /home 

================================================== ====================

du给我:

 root@sbs691:/# ls | xargs du -hs 5.8M bin 13M boot 244K dev 8.0K dotdeb.gpg 8.1M etc 281G home 17M lib 3.7M lib32 0 lib64 16K lost+found 8.0K media 4.0K mnt 157M opt du: cannot access `proc/31735/task/31735/fd/4': No such file or directory du: cannot access `proc/31735/task/31735/fdinfo/4': No such file or directory du: cannot access `proc/31735/fd/4': No such file or directory du: cannot access `proc/31735/fdinfo/4': No such file or directory 0 proc 41M root 4.0K run 14M sbin 4.0K selinux 4.0K srv 0 sys 129M tmp 2.2G usr 431M var 

================================================== ===

在第一条评论之后更新, /var

 root@sbs691:/var# ls | xargs du -hs 4.8M backups 149M cache 4.0K games 265M lib 4.0K local 12K lock 14M log 4.0K mail 4.0K opt 200K run 24K spool 4.0K tmp 16K www 

问题现在已经通过重新启动nginx临时解决了

 service nginx restart 

重新启动后

 root@sbs691:/# df -h Filesystem Size Used Avail Use% Mounted on /dev/md1 9.7G 6.0G 3.3G 65% / tmpfs 3.9G 0 3.9G 0% /lib/init/rw udev 10M 244K 9.8M 3% /dev tmpfs 3.9G 620K 3.9G 1% /dev/shm /dev/md3 1.8T 339G 1.4T 20% /home 

你可能有一个被删除的文件,但是正在写入的守护进程正在被打开(通过fd)。 看看输出

 lsof +L1 

这将列出这样的文件。 当你知道这个文件的时候,你只需要弄清楚哪个守护进程,然后告诉它重新启动或重新打开它的日志文件。


从注释:事实certificate,OP已经删除/ var中的文件,并没有重新启动正在写入文件的守护进程(特别是nginx)。

最快(也有点非常黑客)的方法是将服务器启动到应急媒体中,并将/var甚至/usr/home文件系统并将其符号链接回去。

正确的(TM)方法是以合理的方式调整分区的大小,但是由于使用了软件RAID,这并不是那么简单或快速。

  • 由于这是一个Debian系统,你可能已经在/var/cache/apt积累了很多下载的软件包,可能会填满你的/var 。 除非你有足够的理由保留它们,否则以root身份执行apt-get clean来删除它们。

  • 你可以使用分割或类似的工具 RAID工具来改变你的分区大小。 请记住,在此之前准备好一个当前的备份!

  • 作为一个我不能真正推荐的快捷方式您也可以将/usr文件夹从根目录移动到/home分区和符号链接。 请记住,在此之前准备好一个当前的备份! 我的工作顺序是:

    1. 如果可能的话,closures并从救援系统重新启动。
    2. 复制具有所有权限的文件夹,链接等: # cp -a /usr /home/root-usr从救援系统工作时,path会有所不同!请确保没有名为root-usr用户! ))
    3. 比较旧的和新的文件夹,以确保复制工作: # diff -r /usr /home/root-usr
    4. 删除旧目录并创build符号链接: # rm -rf /usr; ln -s /home/root-usr /usr # rm -rf /usr; ln -s /home/root-usr /usr从救援系统执行此操作时,请确保符号链接正确无误!您可能必须通过chroot才能完成此操作)。
    5. 重新启动到您的系统。

一定要小心。 你应该知道你做了什么。

你的var文件夹有大约431M的数据,我首先清除你的日志。

你的号码不加起来。 你可能在你的根目录下有数据,你不会“看到”。

我只能算你的根的输出〜3G。 我怀疑你有:

  • 在某些时候,将/home的数据复制到不同的文件系统,并且更改了安装点,但未能删除原始副本 – 这当然仍占用空间。 现在您已经无法看到您已经更改了安装点。

    为了find这种歌剧数据的幻象 ,我们将du / on(不带fs边界)和df总和进行比较。

  • 或者在/创build了一些大文件,在这种情况下,你需要移动/删除它们 – 它们不属于那里。

/ home后来被添加/挂载到系统中了吗?

如果在md1和/ home目录中有旧数据,并且您将新分区(md3)挂载到/ home目录并且为非空选项,那么/ home可以隐藏放在md1中的原始数据并保存其大小,但是可以没有看到这种其他的图表,

如果您可能会中断服务器操作,请将系统closures并进入救援模式

 init 1 

umount /home系统,并查找原始根分区(md1)中剩余的文件

 ls -la /home