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

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

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

第一条评论后的du更新/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

答案1

你可能有一个文件被删除了,但正在写入它的守护进程(通过 fd)保持打开状态。看一下

lsof +L1

它将列出此类文件。当您知道文件时,您只需要找出哪个守护进程,然后告诉它重新启动或重新打开其日志文件。


从评论中可以看出:原来 OP 删除了 /var 中的文件,并且没有重新启动正在写入这些文件的守护进程(特别是 nginx)。

答案2

最快(并且有点非常黑客化)的方法是将服务器启动到救援媒体并移动/var,甚至/usr移动到/home文件系统并将其符号链接回来。

正确的(TM)方法是以合理的方式调整分区大小,但由于您使用软件 RAID,所以这并不容易或快速。

答案3

  • 由于它是 Debian 系统,您可能积累了大量下载的软件包,/var/cache/apt它们可能会填满您的/var。除非您有充分的理由保留它们,否则请apt-get clean以 root 身份运行以删除它们。

  • 您可以使用RAID 工具parted或类似工具来更改分区大小。请记住在此之前准备好当前备份!

  • 作为一个快捷的度假胜地,我不太推荐,您还可以将/usr文件夹移动到/home根目录的分区和符号链接。 请记住在此之前准备好当前备份!我的工作指令是:

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

一定要小心。你应该知道自己在做什么。

答案4

你的数字不对。您的根文件系统上可能有一些您“看不到”的数据。

我只能计算出你根目录的 du 输出大约 3G。我怀疑你遇到了以下情况:

  • 在某个时候将数据复制/home到不同的文件系统并更改了挂载点,但未能删除原始副本 - 这当然仍然占用空间。现在您已经更改了挂载点,只是看不到它了。

    找到这种歌剧魅影数据,人们确实会比较du/ 上的总数(不跨越 fs 边界),和df

  • 或者在其中创建了一些巨大的文件/,在这种情况下您需要移动/删除它们 - 它们不属于那里。

相关内容