清理VPS存储空间

问题

最近在虚拟机上存储文件时发现预留的10G虚拟磁盘竟然占满了,于是来清理一下空间。

步骤

  1. 查看磁盘占用情况
1sudo df -h

image

可以发现/dev/sda1空间已经使用7.4G,这是清理后的容量。

/dev/sda1 是 Linux 中的一个块设备文件,通常用于表示硬盘分区。在 Linux 中,硬盘通常被表示为 /dev/sd* 的形式,其中 * 表示一个小写字母,例如 /dev/sda/dev/sdb 等。

当一个硬盘被分成多个分区时,每个分区都会被分配一个设备文件,用于表示分区。其中,/dev/sda1 表示第一个分区,/dev/sda2 表示第二个分区,以此类推。

  1. 查看硬盘中大文件
1sudo du -ah . | sort -rh | head -n 10

du 命令可以查看指定目录或文件的磁盘使用情况,包括文件大小和目录大小等。可以使用 -h 选项以人类可读的方式显示文件大小。例如,以下命令将在当前目录中查找并列出所有文件和目录的大小,并按照大小排序:

在这个命令中,-a 表示列出所有文件和目录的大小,-h 表示以人类可读的方式显示文件大小,. 表示当前目录,可以改为你想查询的目录名,sort -rh 表示按照大小逆序排序,head -n 10 表示只显示前 10 条结果。

image

  1. 分别使用命令清理大文件

发现/usr占用较多,但是经过清理之后发现容量几乎没有变化,可以考虑跳过。同时目录包含了大量的用户安装的程序、库文件和其他资源,因此清理该目录需要谨慎操作,以免意外删除了重要文件,导致系统出现问题。接下来讲解命令的使用。

  • 删除不需要的语言文件:
1sudo apt autoclean
  • 删除所有不再需要的包:
1sudo apt autoremove --purge
  • 删除不再需要的依赖项和配置文件:
1sudo apt clean

接下来清理/var

varvariable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

. /lib/docker/overlay2 目录是 Docker 存储驱动程序中的一个重要目录,用于存储 Docker 镜像和容器的文件系统层。在使用 Docker 时,该目录的大小可能会逐渐增加,占用大量磁盘空间。删除不需要的 Docker 镜像和容器,或者使用 Docker 的清理命令来清理无用的数据。以下是一些常用的 Docker 清理命令示例:

  • 列出所有已停止的容器:
1sudo docker ps -a -q -f status=exited
  • 删除所有已停止的容器:
1sudo docker rm $(sudo docker ps -a -q -f status=exited)
  • 列出所有未被使用的镜像:
1sudo docker images -q -f dangling=true
  • 删除所有未被使用的镜像:
1sudo docker rmi $(sudo docker images -q -f dangling=true)
  • 清理所有未被使用的数据:
1sudo docker system prune -a --volumes

请注意,在清理 Docker 数据时,最好备份一下需要保留的 Docker 镜像和容器,以防误删重要数据。

使用 logrotate 工具来自动轮换和删除旧日志文件。logrotate 工具可以配置为按时间、大小或其他条件来轮换和删除日志文件,以保持日志文件的大小和数量在可控范围内。

  • 删除一个大文件,可以使用以下命令:
1sudo truncate -s 0 /var/log/your_large_file.log
  • 此命令将把 /var/log/your_large_file.log 文件的大小截断为零,即清空该文件。然后运行 logrotate 命令来轮换和归档旧日志文件:
1sudo logrotate -f /etc/logrotate.conf

-f 参数将强制 logrotate 立即执行轮换操作,即使当前不需要轮换文件。/etc/logrotate.conflogrotate 的默认配置文件路径,可以根据需要使用不同的配置文件路径。

请注意,在使用 truncate 命令时,最好备份一下将要清空的文件,以防万一需要恢复文件内容。

使用 journalctl 工具来清理旧的日志消息和数据。journalctl 工具可以按时间、优先级、来源和关键词等过滤日志消息,以及限制日志消息的数量和时间范围。以下是一些常用的 journalctl 命令示例:

  • 显示最近的 100 条系统日志信息:
1sudo journalctl -n 100
  • 显示某个服务的日志信息:
1sudo journalctl -u your_service_name
  • 显示某个时间范围内的日志信息:
1sudo journalctl--since"2022-01-01 00:00:00"--until"2022-02-01 00:00:00"
  • 显示某个进程的日志信息:
1sudo journalctl _PID=your_process_id

清理旧的日志消息和数据,可以使用以下命令:

1sudo journalctl --vacuum-size=100M

该命令将清理所有不再需要的日志消息和数据,并将日志文件大小限制为 100M。您可以根据需要调整 --vacuum-size 参数的值。请注意,此命令仅清理系统日志。

总结

经过如上操作就可以为你的VPS或者虚拟机清理出一些空间了

参考文献

Linux系统目录结构

    评论
    0 评论
avatar

取消