ansible ad-hoc命令可快速批量查磁盘空间:用df -h查看所有主机使用情况,配合grep、awk精准过滤关键字段,超阈值自动告警;playbook支持结构化巡检与日志留存,需注意工具依赖、容器环境差异及权限问题。

直接用 Ansible 的 ad-hoc 命令就能批量查磁盘空间,不需要写 playbook,几秒钟出结果。
用 df -h 一次性看所有机器的磁盘使用
最常用、最直观的方式:
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
- ansible all -m shell -a "df -h" —— 查所有主机,按人类可读格式显示
- ansible webservers -m shell -a "df -h | grep '/$'" —— 只看根分区(/)的使用率
- ansible db -m shell -a "df -hT | grep 'xfs\|ext4'" —— 只显示主流文件系统,带类型列
精准提取关键字段,方便快速判断
纯 df 输出信息多,容易漏看。加点 awk 过滤更高效:
- ansible all -m shell -a "df -h | awk '\$5+0 > 80 {print \$1, \$5}'" —— 找出使用率超 80% 的挂载点
- ansible all -m shell -a "df -B1 | awk '\$5+0 > 85 {print \$1, \$5, \$4}'" —— 超 85%,同时显示剩余字节数(适合脚本后续处理)
结合 Playbook 做结构化巡检和告警准备
如果需要定期执行、存日志或对接监控,推荐用 playbook:
- 定义一个简单任务,调用
shell模块执行df -h --total,用register捕获输出 - 加
failed_when判断:比如out.stdout | regex_findall('([0-9]{2,3}%)') | map('regex_replace', '%', '') | map('int') | max > 90,当任意分区超 90% 就标为失败 - 配合
debug或copy模块,把结果写入集中日志目录,供后续分析
注意几个实际易错点
- 确保被控节点已安装
util-linux(含 df),极简镜像可能默认没装 - 若目标机器是容器或 chroot 环境,
df显示的是宿主机视图,需确认是否符合预期 - 想查某目录实际占用(不是挂载点),应换用
du -sh /var/log,但注意du耗时长,慎用于大目录 - 权限问题:普通用户运行
df没问题;但若要查 LVM 或底层设备,可能需要become: yes










