Files
kenaito-kopsc/README.disk.md
T

130 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 磁盘与文件占用(`kopsc disk <子命令>`)
> 返回 [README.md](README.md)
看哪个目录、哪个文件最占空间,查看 inode 使用,一键磁盘健康检查。
```bash
kopsc disk usage # 当前目录的占用排行(路径可省略)
kopsc disk usage /var # 指定目录
kopsc disk usage /var --depth 2 # 下钻一层
kopsc disk inode # 查看 inode 使用情况
kopsc disk check # 一键磁盘健康检查
kopsc disk check /var # 检查指定路径
kopsc disk check --all # 检查所有挂载点
```
## 命令一览
| 命令 | 作用 |
| --- | --- |
| `kopsc disk usage [路径]` | 查看目录占用排行 |
| `kopsc disk inode [路径]` | 查看 inode 使用情况 |
| `kopsc disk check [路径]` | 一键磁盘健康检查 |
## 磁盘占用排行(disk.usage)
`kopsc disk usage [路径]` 等价于 `du -x --max-depth=1 -h <路径> | sort -hr`:
```text
$ kopsc disk usage /var
1.2G /var/lib
800.0M /var/cache
4.0K /var/tmp
0 /var/opt
总计 2.0G /var
```
- 路径**可省略**,缺省为当前目录;也可用位置参数(`/var`)或 `--path /var`、`--path=/var`,一次一个。
- `--depth N`(`-d N` / `--depth=N`)控制列出到第几层,默认 1(只看直接子项);
`--depth 2` 会下钻一层,未下钻的目录仍按递归大小算。
- 统计每个条目:普通文件按自身大小,目录递归累计其下普通文件的大小;每个文件只计一次,
合计不会因加深度而重复。
- 不跟随符号链接;Unix 上通过设备号实现 `-x`(不跨文件系统),Windows 上不跟随
reparse point,目录遍历本身不会跨越卷。
- 输出按大小降序,大小采用与 `du -h` 相同的二进制单位(1.0K、1.5M、2.0G)。
- 末尾输出该路径的合计行。
### 选项
| 选项 | 说明 |
| --- | --- |
| `[路径]` / `--path <路径>` / `--path=<路径>` | 要统计的目录,默认当前目录 |
| `--depth N` / `-d N` / `--depth=N` | 列到的层数,默认 1;必须大于 0 |
> `--path`、`--depth` 是 kopsc 自己的选项,不是 `du` 的参数,因此可以写在任意位置。
## inode 使用查看(disk.inode)
```bash
kopsc disk inode # 当前文件系统
kopsc disk inode /var # 指定路径所在文件系统
```
显示文件系统的 inode 使用统计。inode 耗尽会导致无法创建新文件,即使磁盘空间充足。
输出示例:
```
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/vda1 3276800 180432 3096368 6% /
```
| 平台 | 实际执行 |
| --- | --- |
| Linux / macOS | `df -i` |
| Windows | 不支持(NTFS 使用 MFT,无 inode 概念) |
## 一键磁盘健康检查(disk.check)
```bash
kopsc disk check # 检查根目录
kopsc disk check /var # 检查指定路径
kopsc disk check --all # 检查所有挂载点
```
一条命令完成磁盘排障,综合检查 5 项内容:
输出示例:
```
=== 磁盘健康检查 ===
[1/5] 空间使用
/dev/vda1 50G 总计 22G 已用 28G 可用 44% 使用率 ✓ 正常
[2/5] inode 使用
/dev/vda1 3.2M 总计 180K 已用 3.0M 可用 5% 使用率 ✓ 正常
[3/5] 大文件 TOP 5(>100M)
2.1G /var/log/syslog
1.5G /var/lib/docker/overlay2/...
800M /opt/app/data.db
[4/5] 大目录 TOP 5
15G /var/lib/docker
2.3G /var/log
1.2G /opt/app
[5/5] 建议
✓ 磁盘空间充足
✓ inode 使用正常
```
### 检查项目
| 项目 | 说明 |
| --- | --- |
| 空间使用 | 磁盘使用率,>80% 警告,>90% 危险 |
| inode 使用 | inode 使用率(Unix only) |
| 大文件 | 列出 >100M 的文件 TOP 5 |
| 大目录 | 列出直接子目录占用 TOP 5 |
| 建议 | 根据检查结果给出清理建议 |
### 选项
| 选项 | 说明 |
| --- | --- |
| `[路径]` | 要检查的路径,默认 `/` |
| `--all` / `-a` | 检查所有挂载点 |