这是一份Linux服务器磁盘清理与排查手册,用于安全清理磁盘空间。
在清理之前,先了解磁盘被哪些占用了?
df -h
/或/var的物理磁盘,比如/var/vda2,忽略tmpfs,这个是内存盘,重启服务即清空,不是真实的磁盘示例:
root@dell3050:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.8G 0 1.8G 0% /dev
tmpfs 381M 40M 342M 11% /run
efivarfs 256K 42K 210K 17% /sys/firmware/efi/efivars
/dev/nvme0n1p2 63G 19G 41G 32% /
tmpfs 1.9G 1.4M 1.9G 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/nvme0n1p1 93M 8.1M 85M 9% /boot/efi
trimafs 1.2T 804G 321G 72% /fs
/dev/mapper/trim_caf1374c_2bc8_4b03_ad44_89a35b7d3e0d-0 954G 674G 279G 71% /vol2
/dev/mapper/trim_4d2b7360_aa9b_4ee0_908a_f970ab31c057-0 175G 131G 42G 76% /vol1
overlay 175G 131G 42G 76% /vol1/docker/overlay2/61737b016a11b7ca04f068e7b07cb73ae1f68208cad7381b9b7732d820440882/merged
overlay 175G 131G 42G 76% /vol1/docker/overlay2/331192769b63e9e1f4131ef0e499b0f041784ac51e85d8b4953072232b9d8bc4/merged
overlay 175G 131G 42G 76% /vol1/docker/overlay2/6f20333f4fdfae67b0f2cc777535d346acdaf55f262980c00aa1397d21003535/merged
overlay 175G 131G 42G 76% /vol1/docker/overlay2/76441a4699c154727e186965bbf8fa4c09d7b1d79d8f9754195d823619d911c8/merged
overlay 175G 131G 42G 76% /vol1/docker/overlay2/4457eecad84dd0382154e1f96f90658e63993b52f633c24ba05bcc6464a224db/merged
overlay 175G 131G 42G 76% /vol1/docker/overlay2/108863ba2ab37ce8ac72d5beaf3cb6e4819ba367f859a8669b30a242d7798a9e/merged
overlay 175G 131G 42G 76% /vol1/docker/overlay2/8098d04956d032bac795afa5c78e6dcf13e489b046d0c53b75b0b07abdd96617/merged
overlay 175G 131G 42G 76% /vol1/docker/overlay2/c025395cf30a3acf236c38c03e786d52efea95e2e5f109ca6ccd2cf3185b1530/merged
overlay 175G 131G 42G 76% /vol1/docker/overlay2/5ed79c3840c1863bfd6b45ced7cab5b60e5329d345c66d830ae92d646408c3b5/merged
tmpfs 381M 0 381M 0% /run/user/1000
root@dell3050:~#
比如示例中展示的:
/dev/nvme0n1p2:是我的系统盘。这里有63G(分配时64G,计算机是按照1024算的,显示是按照1000算的,存在误差很正常),已使用19G,还有41G可用。/dev/mapper/:这个是我的数据盘。由上面可以看到docker服务占用的比例不少,那么就可以排查一下docker的占用情况
docker system df
示例:
root@dell3050:~# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 32 11 16.8GB 9.64GB (57%)
Containers 11 9 1.049GB 1.047GB (99%)
Local Volumes 21 1 140.6MB 140.6MB (100%)
Build Cache 139 0 4.163GB 3.159GB
root@dell3050:~#
在示例中,可以看到:
我们可以清理掉没有用到的镜像。
docker images
查看容器的镜像
示例
root@dell3050:~# docker images
i Info → U In Use
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
crpi-nx87cj17hfwzxq8x.cn-hongkong.personal.cr.aliyuncs.com/missying/missying-music:1.0.0 3d21b052a340 706MB 0B U
crpi-nx87cj17hfwzxq8x.cn-hongkong.personal.cr.aliyuncs.com/missying/missying-music:2610091 3d21b052a340 706MB 0B U
crpi-nx87cj17hfwzxq8x.cn-hongkong.personal.cr.aliyuncs.com/missying/missying-todo-web:1.0.0 97874a75c149 49.9MB 0B U
crpi-nx87cj17hfwzxq8x.cn-hongkong.personal.cr.aliyuncs.com/missying/missying-todo:1.0.0 ba78447586c1 306MB 0B U
docker.1ms.run/nacos/nacos-server:v2.3.2 d3063c1db2bb 820MB 0B
docker.1ms.run/onlyoffice/documentserver:9.4.0.1 4934c364adcc 2.89GB 0B U
dongpo:031002 60d2c53f9977 275MB 0B
hanxi/xiaomusic:v0.6.1 3a8d0613b60f 372MB 0B U
minio/minio:RELEASE.2025-04-08T15-41-24Z 9a5b995451f9 183MB 0B U
minio/minio:RELEASE.2025-07-23T15-54-02Z a98a9d647e70 175MB 0B
missying-music:1.0.0 3d21b052a340 706MB 0B U
missying-music:2610091 3d21b052a340 706MB 0B U
missying-todo-web:1.0.0 97874a75c149 49.9MB 0B U
missying-todo:1.0.0 ba78447586c1 306MB 0B U
mysql:8.4.7 67471052edd5 788MB 0B U
nginx:latest ad5708199ec7 192MB 0B
penpotapp/backend:latest 444bea4e7476 835MB 0B
penpotapp/exporter:latest 7e0976d0cb4c 1.97GB 0B
penpotapp/frontend:latest ecce9569ad8f 930MB 0B
phpmyadmin:5.2.3 4e376b5c166f 575MB 0B
postgres:15 b12bf22fb38a 444MB 0B
postgres:15-alpine 06686173a6eb 274MB 0B
redis:6-alpine b7f611844a19 30.2MB 0B
redis:8.4.0 1c390e3bb5cb 139MB 0B U
registry.cn-guangzhou.aliyuncs.com/fnapp/trim-chromium:latest d01bc5fffc8d 2.77GB 0B U
registry.cn-guangzhou.aliyuncs.com/lc-repository/dongpo:031101 3bb061db3e24 275MB 0B
registry.cn-guangzhou.aliyuncs.com/lc-repository/dongpo:031102 60d2c53f9977 275MB 0B
semitechnologies/weaviate:1.19.0 8ec9f084ab23 52.5MB 0B
sj26/mailcatcher:latest 750c37a402e6 129MB 0B
snowdreamtech/frpc:0.69.1 4d90b520a382 128MB 0B U
snowdreamtech/frps:0.67.0 8a809860f1df 52.3MB 0B
tanner23456/playlistdl:v2 8fe1105dc58c 426MB 0B U
ubuntu/squid:latest feec1ad0ab0a 213MB 0B
valkey/valkey:8.1 0ad4f667c7ea 111MB 0B
root@dell3050:~#
可以看到,最后的一列,带U的表示正在使用的,不带U的就是未使用的。
如果你有些镜像想保留,删掉不想要的,那么可以通过以下的命令删除不想要的镜像。
# 方式一:rmi后买你接镜像名:版本号
docker rmi valkey/valkey:8.1
# 方式二: rmi接id
docker rmi 0ad4f667c7ea
通过上面的方式就可以删除一个不想留的镜像了,如果有多个不想要的,在后面补充,以空格分离。
如果不再使用的镜像不想留了,那么可以通过以下命令清除所有未在使用的镜像
docker system prune -a
-a:不仅删除<none>的镜像,还会删除没有被使用的镜像。<none>的镜像,一般是打包镜像不成功出现的。清理了大概15G的空间
Total reclaimed space: 15.18GB
root@dell3050:~# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 9 9 5.221GB 5.221GB (100%)
Containers 9 9 1.184MB 0B (0%)
Local Volumes 21 0 140.6MB 140.6MB (100%)
Build Cache 0 0 0B 0B
root@dell3050:~#
查看磁盘日志情况
find /var/lib/docker/containers/ -name "*-json.log" -exec ls -lh {} \; | awk '{ print $9 ": " $5 }' | sort -k2 -hr
作用:找出指定目录下的日志,并显示。
参数
/var/lib/docker/containers/ :这个是指定的目录。-name :按照名字去查。"*-json.log":以-json.log结尾的文件。-exec:表示要执行下一步的命令。ls -lh {} :列表展示详细信息。\;:表示exec命令的结束|:管道符号awk '{ print $9 ": " $5 }':文本处理工具,提取 ls -lh 输出的第 9 列(文件名)和第 5 列(文件大小),格式化为 文件名: 大小。sort -k2 -hr:-k2 表示按第 2 列(即文件大小列)进行排序,-hr 表示按人类可读格式逆序(从大到小)排列。⚠️找到后千万不要直接rm删除。
容器在运行中,仍然使用着这个文件,如果贸然删除,导致容器找不到这个文件,从而报错。所以要做的,是清理里面的内容,而不是文件。
truncate -s 0 /var/lib/docker/containers/<容器ID>/<容器ID>-json.log
# 或者
echo "" > /var/lib/docker/containers/<容器ID>/<容器ID>-json.log
find /var/log -type f -size +1M -exec ls -lh {} \; | awk '{ print $9 ": " $5 }' | sort -k2 -hr
查看系统日志,与容器日志的查找是相同的,只是目录为/var/log。
示例:
root@dell3050:~# sudo find /var/log -type f -size +1M -exec ls -lh {} \; | awk '{ print $9 ": " $5 }' | sort -k2 -hr
/var/log/trim_app_center/info.log: 76M
/var/log/syslog.1: 51M
/var/log/kern.log.1: 51M
/var/log/trim_app_center/error.log: 36M
/var/log/trim-connect/error.log: 35M
/var/log/trim-connect/pxy.info.log: 18M
/var/log/wtmp.1: 13M
/var/log/samba/log.rpcd_lsad: 11M
/var/log/accountsrv/info.log: 11M
/var/log/kern.log: 9.8M
/var/log/auth.log: 8.8M
/var/log/syslog: 7.2M
/var/log/kern.log.4.gz: 6.0M
/var/log/kern.log.3.gz: 5.9M
/var/log/kern.log.2.gz: 5.9M
/var/log/samba/log.samba-dcerpcd: 5.2M
/var/log/syslog.5.gz: 4.8M
/var/log/syslog.4.gz: 4.8M
/var/log/syslog.3.gz: 4.8M
/var/log/syslog.7.gz: 4.7M
/var/log/cron.log: 4.5M
/var/log/syslog.6.gz: 3.9M
/var/log/syslog.2.gz: 3.6M
/var/log/updatemgr/error.log: 1.9M
/var/log/updatemgr/info.log: 1.8M
root@dell3050:~#
清楚系统历史日志
# 仅保留最近 3 天的日志
journalctl --vacuum-time=3d
# 或者:限制所有归档日志总大小不超过 500MB
journalctl --vacuum-size=500M
/var/log/journal 目录无限膨胀。--vacuum-time:删除早于指定时间(如 3d 表示 3 天,1months 表示 1 个月)的日志。--vacuum-size:删除最旧的日志,直到总占用空间低于指定大小。





















