- 1 1. 前置知识:Linux / Ubuntu 中的存储结构与挂载
- 2 2. 检查磁盘空间的基本命令行方法
- 3 3. 使用 GUI 工具检查磁盘空间(Ubuntu 桌面)
- 4 3. 使用 GUI 工具检查磁盘空间(Ubuntu 桌面)
- 5 4. 磁盘空间不足时的调查与对策
- 6 5. 高级技巧(实用技术与注意事项)
- 6.1 5.1 自动化定期磁盘检查
- 6.2 5.2 One-Liners to Find Large Files
- 6.3 5.3 Creating Aliases for Frequently Used Commands
- 6.4 5.4 Continuously Monitoring Disk Usage Changes
- 6.5 5.5 Be Aware of Permission Barriers
- 6.6 5.6 Considerations for SSD and HDD Environments
- 6.7 5.7 Turning Disk Management into a Preventive System
- 6.8 Summary
- 7 6. 常见问题 (FAQ)
- 7.1 Q1. 在 Ubuntu 上检查当前磁盘空间的最简方法是什么?
- 7.2 Q2. 如何按目录检查磁盘使用情况?
- 7.3 Q3. df 与 du 的区别是什么?
- 7.4 Q4. 如何使用图形界面工具检查磁盘空间?
- 7.5 Q5. 当出现“磁盘已满”警告时,应该先删除哪些内容?
- 7.6 Q6. Snap 应用会占用大量磁盘空间吗?
- 7.7 Q7. 如果 /var 或 /home 过大怎么办?
- 7.8 Q8. du 命令运行太慢,如何加速?
- 7.9 Q9. 如何防止磁盘空间问题再次出现?
- 7.10 Q10. 有哪些扩展磁盘空间的选项?
- 7.11 Q11. 可以在没有 root 权限的情况下检查磁盘使用情况吗?
- 7.12 Q12. 如何在没有 GUI 的服务器上检查磁盘空间?
- 7.13 Q13. 检查磁盘使用情况有风险吗?
- 7.14 Q14. 有什么技巧可以节省磁盘空间吗?
- 7.15 Q15. 推荐的磁盘监控工具有哪些?
- 7.16 最终总结
1. 前置知识:Linux / Ubuntu 中的存储结构与挂载
在 Ubuntu(以及大多数基于 Linux 的操作系统)上检查磁盘空间时,有几个基本的结构概念需要正确理解。本节整理了以下常常引起混淆的概念:
- 设备与分区的含义
- 挂载与挂载点
- LVM(逻辑卷管理)的基础
- Ubuntu 中的典型存储配置
我们将逐一进行说明。
1.1 设备与分区的基础
设备(物理磁盘和逻辑磁盘)
在 Linux 中,每个存储单元都被视为 设备文件。例如,HDD、SSD 和 USB 驱动器会以 /dev/sda、/dev/sdb 或 /dev/nvme0n1 等名称出现。
字母后缀(a、b、c 等)表示系统检测到设备的顺序。
分区
单个物理设备可以直接使用,但在大多数情况下会被划分为多个逻辑区域,即分区。分区使得可以分别管理操作系统、用户数据和日志等内容。
例如,/dev/sda1 和 /dev/sda2 代表分区。这些名称的含义是“设备 sda 上的第 1 / 第 2 分区”。
每个分区上都会创建文件系统,实际数据就存放在其中。
(Linux 分区示例说明: Engineer’s Entrance)
分区使用 MBR(较旧)或 GPT(较新)等格式,每种格式都有不同的限制和优势。
1.2 挂载与挂载点
挂载
要让文件系统可用,需要进行 挂载 操作。此过程将分区(或逻辑卷)与特定目录(挂载点)关联起来。
如果不进行挂载,分区上的数据是无法访问的。
例如,即使在 /dev/sda1 上存在 ext4 文件系统,除非执行类似 mount /dev/sda1 /mnt/data 的命令,否则无法在 /mnt/data 下访问其内容。
挂载点
文件系统被挂载到的目录称为 挂载点。
常见的挂载点包括:
/(斜杠):根目录(整个系统的起点)/home:用户主目录所在位置/var:日志、缓存和可变数据所在位置/boot:启动相关文件所在位置
在 Ubuntu 以及许多 Linux 发行版中,/etc/fstab 文件定义了系统启动时哪些设备或 UUID 会被挂载到哪些位置。
1.3 LVM(逻辑卷管理)概述
仅使用传统分区,后期灵活修改磁盘布局会比较困难。为了解决这个问题,Linux 提供了 LVM(逻辑卷管理器)。
LVM 的基本组件
- 物理卷(PV):物理磁盘或分区。
- 卷组(VG):将多个 PV 合并为一个大的虚拟存储池的层。
- 逻辑卷(LV):从 VG 中创建的逻辑分配空间。文件系统在 LV 上创建。
这种分层结构使得逻辑卷可以在以后扩展或缩减,并且可以轻松添加并整合额外的物理磁盘。
LVM 的优势与注意事项
优势
- 存储容量可灵活伸缩
- 能够将多块磁盘合并为一个整体
- 便于创建快照用于备份
注意事项
- 配置和操作相对更复杂
- 若配置错误可能导致数据丢失
- 扩容方式与非 LVM 环境不同
Ubuntu 安装程序通常提供使用 LVM 的选项,但这并非强制,取决于使用场景和管理策略。
1.4 Ubuntu 中的典型存储配置
单分区配置(简易设置)
在最简配置中,所有内容都放在根目录(/)下。这种方式初期管理方便,但后期扩展或分离会比较困难。
常见的多分区配置
常用的布局将存储划分为多个分区,例如:
/(根):核心系统文件/home:用户数据/var:日志和可变数据/boot:启动文件- 交换区(分区或交换文件)
这种结构有助于防止日志或缓存占满整个系统。
基于 LVM 的逻辑卷配置
更高级的配置使用 LVM,如下所示:
- 物理磁盘 → PV(物理卷)
- 多个 PV 组合成 VG(卷组)
- 为
/、/home、/var等创建逻辑卷 - 未来可以扩展或添加新的 LV(逻辑卷)
这种方法在添加磁盘或扩展存储时提供了高度灵活性。
2. 检查磁盘空间的基本命令行方法
在 Ubuntu 上,使用命令行工具是检查磁盘使用情况最可靠、最灵活的方式。
即使在没有 GUI 的服务器环境中,命令也能进行精确分析。
本节重点介绍基础的 df 和 du 命令以及配套工具。
2.1 使用 df 命令检查文件系统使用情况
df 概述
df(disk free)显示文件系统的整体磁盘使用情况和可用空间。
它是检查 Linux 系统(包括 Ubuntu)磁盘容量的最常用方式。
基本用法
df -h
此命令以人类可读的单位(K、M、G)列出所有文件系统。
主要列的含义如下:
主要列说明
| Column | Description |
|---|---|
| Filesystem | Target device name (e.g., /dev/sda1) |
| Size | Total filesystem size |
| Used | Used disk space |
| Avail | Remaining available space |
| Use% | Usage percentage |
| Mounted on | Mount point (e.g., /, /home) |
常用选项
| Option | Description |
|---|---|
-h | Display sizes in MB / GB (essential for readability) |
-T | Also display filesystem type (ext4, xfs, etc.) |
--total | Add a total summary line at the end |
df -h /home | Display only the filesystem containing a specific directory |
执行示例
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 100G 55G 40G 59% /
/dev/sda1 512M 120M 392M 24% /boot
tmpfs 16G 32M 16G 1% /run
此输出可帮助您快速了解磁盘空间的分配和使用情况。
重要提示
- 未挂载的分区不会在
df中显示。 - Snap 包(例如
/var/lib/snapd/snaps)可能占用大量磁盘空间,需要单独检查。 - 某些挂载点仅在以 root 权限运行时可见。
2.2 使用 du 命令检查目录使用情况
du 概述
du(disk usage)衡量目录和文件的磁盘空间使用情况。
虽然 df 提供了宏观概览,但 du 更适合定位实际磁盘空间的消耗位置。
基本用法
du -sh /home
此命令以人类可读的格式显示 /home 目录的总磁盘使用量。
常用选项
| Option | Description |
|---|---|
-s | Show only the summary total |
-h | Automatically convert units for readability |
--max-depth=1 | List usage of directories directly under the specified path |
-c | Display a grand total at the end |
--exclude=PATTERN | Exclude specific directories (e.g., caches) |
示例:比较目录大小
sudo du -h --max-depth=1 /var
示例输出:
1.2G /var/log
2.5G /var/lib
800M /var/cache
4.5G /var
这使得轻松识别哪些目录占用最多空间。
高级用法:按大小排序
通过将 du 与 sort 结合,可快速识别大型目录。
sudo du -hsx /* | sort -rh | head -10
此命令计算根目录下各子目录的磁盘使用量,并显示前 10 大的目录。
重要提示
- 对于深层目录结构,执行可能需要时间。
- 没有 root 权限时,某些目录的磁盘使用情况可能显示不完整。
- 即使在高速 SSD 上,扫描数十 GB 也可能需要数分钟。
2.3 其他有用的辅助命令和工具
lsblk:查看块设备结构
lsblk
lsblk 以树形结构显示磁盘设备及其分区布局。
它有助于直观了解设备、分区和挂载点之间的关系。
示例:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 512M 0 part /boot
└─sda2 8:2 0 99.5G 0 part /
ncdu:交互式磁盘使用分析器
如果你想要一个更直观的 du 替代方案,强烈推荐使用 ncdu(NCurses Disk Usage)。
安装:
sudo apt install ncdu
启动:
sudo ncdu /
你可以使用方向键浏览目录,并交互式地识别磁盘使用热点。
该工具在系统管理员中尤其受欢迎,适用于服务器环境。
与 find 命令结合使用
要定位大型单个文件,使用 find:
sudo find / -type f -size +1G
此命令会搜索所有大于 1 GB 的文件,便于识别大型日志或磁盘映像。
2.4 选择合适的方法(比较摘要)
| Purpose | Command Example | Characteristics |
|---|---|---|
| Check overall free disk space | df -h | Filesystem-level overview |
| Check a specific directory | du -sh /path | Detailed size measurement |
| Find disk usage hotspots | du -hsx /* | sort -rh | Quick identification of large directories |
| View device and partition layout | lsblk | Visual representation of structure |
| Find large files | find / -type f -size +1G | Filter by file size |
3. 使用 GUI 工具检查磁盘空间(Ubuntu 桌面)
Ubuntu 提供了方便的 图形化工具(GUI),让你无需使用终端即可检查磁盘空间。
本节介绍以下两种主要方法:
- 使用默认的文件管理器(Nautilus)
- 使用磁盘使用分析器(Baobab)
3.1 使用文件管理器(Nautilus)检查可用空间
Ubuntu 中的标准方法
在 Ubuntu 桌面上,检查磁盘空间的最简便方式是打开 文件管理器(Nautilus)。
- 点击左侧 Dock(应用启动器)中的 “文件” 图标
- 查看右上角或左下角显示的 状态栏
- 剩余磁盘空间会显示为 “XX GB 可用” 或 “XX GB 已用,共 YY GB”
这样可以快速验证系统盘的可用空间。
通过属性查看详细信息
右键单击文件夹或磁盘图标,选择 [Properties],即可查看该文件夹或卷的详细使用信息。
这在直观检查 /home、/Downloads 等目录大小时特别有用。
优势与局限性
| Advantages | Limitations |
|---|---|
| Simple, click-based operation | Difficult to analyze system-wide or hidden areas |
| Beginner-friendly | Hard to detect growth in /var/log or system directories |
虽然适合快速概览,但更深入的分析最好使用下面介绍的 Baobab 工具。
3.2 磁盘使用分析器(Baobab)
什么是 Baobab?
Baobab(官方名称为 磁盘使用分析器)是 Ubuntu 附带的图形化工具,使用 饼图和树形图 直观展示磁盘使用情况。
它通常默认已安装,但如果没有,可以通过以下命令进行安装:
sudo apt install baobab
如何启动 Baobab
- 在 Activities(左上角搜索)中 搜索 “Disk Usage”
- 点击 “Disk Usage Analyzer (Baobab)” 启动
- 启动后,选择 “扫描文件夹” 或 “扫描文件系统”
扫描完成后,磁盘使用情况会以饼图或树形视图的形式直观显示。
示例展示(概念性)
- 外层环代表更深层的目录级别
- 区域大小对应磁盘使用量
这使得一眼就能辨认出哪些文件夹占用了最多空间。
主要特性
| Feature | Description |
|---|---|
| Target Selection | Scan specific directories such as /home |
| Tree View | View folder hierarchy and sizes in a list format |
| Identifying Unnecessary Files | Quickly spot large directories at a glance |
| Right-click → Open | Open the corresponding directory directly in the file manager |
优势与注意事项
优势
- 直观的图形化可视化,适合初学者
- 有助于快速决定清理和文件组织方案
- 以 root 权限启动时,可分析系统目录
注意事项
- 扫描整个文件系统可能需要较长时间
- 权限限制可能导致某些文件夹的测量不够准确
- 大容量磁盘在分析时可能占用较多内存
3.3 使用 GNOME Disks 检查磁盘信息
Ubuntu 还内置了名为 GNOME Disks(磁盘实用工具) 的标准应用。
该工具用于检查 磁盘结构本身,而不仅仅是可用空间。
你可以查看以下信息:
- 设备名称(例如 /dev/sda)
- 文件系统类型(ext4、NTFS 等)
- 挂载点
- 使用情况和可用空间的图表
如何启动:
- 在 Activities 中搜索 “Disks”
- 打开 GNOME Disks
- 在左侧列表中选择一个磁盘
磁盘使用情况以可视化仪表显示,提供相当于 df 命令的图形化信息。如果你想要一个更直观的 du 替代方案,强烈推荐使用 ncdu(NCurses 磁盘使用)。
安装:
sudo apt install ncdu
启动:
sudo ncdu /
你可以使用方向键在目录间导航,并交互式地识别磁盘使用热点。
该工具在服务器环境中尤其受到系统管理员的欢迎。
与 find 命令结合使用
要定位大型单个文件,请使用 find:
sudo find / -type f -size +1G
此命令会搜索所有大于 1 GB 的文件,非常适合用于查找大型日志或磁盘镜像。
2.4 选择合适的方法(比较摘要)
| Purpose | Command Example | Characteristics |
|---|---|---|
| Check overall free disk space | df -h | Filesystem-level overview |
| Check a specific directory | du -sh /path | Detailed size measurement |
| Find disk usage hotspots | du -hsx /* | sort -rh | Quick identification of large directories |
| View device and partition layout | lsblk | Visual representation of structure |
| Find large files | find / -type f -size +1G | Filter by file size |
3. 使用 GUI 工具检查磁盘空间(Ubuntu 桌面)
Ubuntu 提供了便捷的 图形工具(GUI),让你无需使用终端即可检查磁盘空间。
本节介绍以下两种主要方法:
- 使用默认的文件管理器(Nautilus)
- 使用磁盘使用分析器(Baobab)
3.1 使用文件管理器(Nautilus)检查可用空间
Ubuntu 中的标准方法
在 Ubuntu 桌面上,检查磁盘空间最简便的方法是打开 文件管理器(Nautilus)。
- 点击左侧 Dock(应用启动器)中的 “文件” 图标
- 查看右上角或左下角显示的 状态栏
- 剩余磁盘空间会显示为 “XX GB 可用” 或 “XX GB 已使用,共 YY GB”
这让你能够快速确认系统盘的可用空间。
通过属性查看详情
右键点击文件夹或磁盘图标,选择 [Properties],即可查看该文件夹或卷的详细使用信息。
这在直观检查 /home 或 /Downloads 等目录大小时特别有用。
优势与局限性
| Advantages | Limitations |
|---|---|
| Simple, click-based operation | Difficult to analyze system-wide or hidden areas |
| Beginner-friendly | Hard to detect growth in /var/log or system directories |
虽然适合快速概览,但更深入的分析最好使用下面介绍的 Baobab 工具。
3.2 磁盘使用分析器(Baobab)
Baobab 是什么?
Baobab(官方名称为 磁盘使用分析器)是 Ubuntu 附带的图形工具,使用 饼图和树状图 直观展示磁盘使用情况。
它通常默认已安装,但如果没有,可以使用以下命令进行安装:
sudo apt install baobab
如何启动 Baobab
- 在 Activities(左上角搜索)中搜索 “Disk Usage”
- 点击 “Disk Usage Analyzer (Baobab)” 启动
- 启动后,选择 “扫描文件夹” 或 “扫描文件系统”
扫描完成后,磁盘使用情况会以饼图或树状视图的形式直观显示。
示例显示(概念)
- 外层环代表更深的目录层级
- 区域大小对应磁盘使用量
这使得能够瞬间识别出哪些文件夹占用了最多空间。
主要特性
| Feature | Description |
|---|---|
| Target Selection | Scan specific directories such as /home |
| Tree View | View folder hierarchy and sizes in a list format |
| Identifying Unnecessary Files | Quickly spot large directories at a glance |
| Right-click → Open | Open the corresponding directory directly in the file manager |
优势与注意事项
优势
- 直观的图形化可视化,适合初学者
- 有助于快速决定清理和文件组织方案
- 以 root 权限启动时可分析系统目录
注意事项
- 扫描整个文件系统可能需要较长时间
- 权限限制可能导致某些文件夹的测量不够准确
- 大容量磁盘在分析时可能占用较多内存
3.3 使用 GNOME Disks 检查磁盘信息
Ubuntu 还自带一个名为 GNOME Disks(磁盘实用工具) 的标准应用。
该工具用于检查 磁盘结构本身,而不仅仅是可用空间。
你可以查看以下信息:
- 设备名称(例如 /dev/sda)
- 文件系统类型(ext4、NTFS 等)
- 挂载点
- 使用情况和可用空间图表
启动方式:
- 在 Activities 中搜索 “Disks”
- 打开 GNOME Disks
- 在左侧列表中选择一个磁盘
磁盘使用情况以可视化仪表显示,提供相当于 df 命令的图形化信息。
3.4 在 GUI 与命令行工具之间的选择
在 Ubuntu 桌面版中,单纯使用 GUI 工具即可满足基本的磁盘空间管理需求。
但对于 精确的故障排查和服务器管理,df、du 等命令行工具是必不可少的。
| Scenario | Recommended Tool |
|---|---|
| Quickly check available space | File Manager (Nautilus) |
| Analyze which folders are large | Baobab (Disk Usage Analyzer) |
| Inspect disk and partition layout | GNOME Disks |
| Server or remote environments | df, du, lsblk, ncdu |
3.5 没有 GUI 的环境(针对服务器用户)
如果你运行的是 Ubuntu Server 或其他 没有 GUI 的环境,
诸如 Baobab 或文件管理器之类的工具将不可用。
在这种情况下,前面介绍的 df、du 与 ncdu 命令能够仅通过终端提供足够详细的磁盘分析。
小结
使用 GUI 工具可以 完全通过点击 完成磁盘使用检查和清理分析。
其中 Baobab 是一种被广泛使用的标准工具,适合新手和高级用户。
结合本节介绍的多种方法,日常存储监控将变得更加轻松。
4. 磁盘空间不足时的调查与对策
长期使用 Ubuntu 时,随着更新和数据的累积,磁盘空间可能会逐渐紧张。
让系统长期处于低空间状态会导致更新失败、日志写入问题以及整体不稳定。
本节将 逐步说明如何定位磁盘空间问题并采取有效解决方案。
4.1 识别磁盘空间耗尽的迹象
首先,检查是否出现了磁盘空间不足的症状。
如果出现以下任意情况,就需要调查存储使用情况:
apt upgrade报告 “磁盘空间不足”- GUI 弹出 “磁盘空间不足” 警告
- 某些应用无法保存设置或写入日志
/var、/tmp等目录被占满,导致系统运行迟缓
在这些情况下,仅仅释放空间是不够的——必须找出 磁盘空间被消耗的具体位置。 
4.2 步骤 1:检查整体磁盘使用情况(df)
首先使用 df -h 命令查看整体磁盘情况。
df -h
示例输出:
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 50G 48G 1.2G 98% /
/dev/sda1 512M 120M 392M 24% /boot
任何 Use% 超过 90% 的文件系统都需要立即处理。
如果根目录 /、/var 或 /home 等关键目录几乎已满,请继续进行下一步。
4.3 步骤 2:识别占用空间的目录(du)
确定受影响的分区后,使用 du 命令分析其内容。
示例:显示前 10 大目录
sudo du -hsx /* | sort -rh | head -10
示例输出:
15G /var
10G /home
5.2G /usr
3.1G /snap
如果是 /var 占用较大,通常是日志或缓存导致;如果是 /home 占用较大,通常是用户数据所致。
进一步深入 /var
sudo du -hsx /var/* | sort -rh | head -10
通过这种方式遍历目录层级,你可以精准定位到底是哪些目录在消耗磁盘空间。
4.4 步骤 3:删除不必要的文件和缓存
在确定磁盘使用来源后,开始从 安全可删除的无用文件 入手进行清理。
(1) 删除 APT 缓存
Ubuntu 在更新过程中会将临时软件包文件存放在 /var/cache/apt/archives。
删除这些文件通常可以释放数 GB 的磁盘空间。
sudo apt clean
sudo apt autoremove
apt clean:删除所有已缓存的软件包文件apt autoremove:删除不再使用的依赖包
(2) 删除旧日志文件
/var/log 是导致磁盘空间膨胀的常见原因之一。
sudo journalctl --vacuum-time=7d
此命令会删除七天以前的系统日志。
你也可以手动删除不需要的压缩日志文件(.gz)。
sudo rm -f /var/log/*.gz
(3) 删除旧的 Snap 包修订版
在 Ubuntu 上,Snap 应用默认会保留多个版本。
可以使用以下命令删除已禁用的旧修订版:
sudo snap list --all | grep disabled | awk '{print $1, $3}' | \
while read snapname revision; do
sudo snap remove "$snapname" --revision="$revision"
done
或者,也可以使用专门的 “Snap Cleaner” 工具来完成此操作。
(4) 删除缩略图缓存
如果经常处理图片或视频,~/.cache/thumbnails 中可能会累计大量缓存文件。
rm -rf ~/.cache/thumbnails/*
(5) 清空回收站
通过图形界面删除的文件通常仍保存在 ~/.local/share/Trash/files 中。
rm -rf ~/.local/share/Trash/*
4.5 步骤 4:处理应用程序和日志相关的磁盘增长
(1) Docker 环境
如果使用 Docker,未使用的镜像和容器往往会占用大量磁盘空间。
docker system df
docker system prune -a
docker system df:检查 Docker 相关的磁盘使用情况docker system prune -a:删除未使用的镜像和容器
(2) 大量使用 Flatpak 或 Snap
拥有众多 GUI 应用的桌面环境容易累积旧版本的残留数据。
可使用 flatpak uninstall --unused 等命令进行清理。
(3) 检查日志轮转设置
检查 /etc/logrotate.conf 以及 /etc/logrotate.d/ 目录下的文件,确保日志保留周期和大小限制配置合理。
这有助于防止未来出现磁盘空间不足的问题。
4.6 步骤 5:通过扩容或磁盘扩展解决根本原因
如果仅靠清理不足以解决问题,可考虑以下结构性改动。
(1) 使用 LVM 扩展逻辑卷
在使用 LVM(逻辑卷管理器)的环境中,逻辑卷可以轻松扩容。
sudo lvextend -L +20G /dev/ubuntu-vg/ubuntu-lv
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
这将增加根文件系统的可用空间。
(2) 添加并挂载新磁盘
可以在 /mnt/data 等目录下挂载新存储设备,
并将大型目录(如 /var/lib/docker 或 /home)迁移到新磁盘上。
(3) 使用云存储
另一种方案是将日志或备份迁移到云存储服务,如 Google Drive、Dropbox 或 Nextcloud。
4.7 防止再次发生:定期监控
磁盘空间不足是 可以通过定期监控来预防 的。
以下运维实践非常有效:
- 定期检查
df -h和du -sh /var - 编写脚本自动检测大目录
- 当磁盘使用率超过设定阈值时发送邮件提醒(使用
cron和mailutils)
简单示例:
#!/bin/bash
THRESHOLD=90
USAGE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')
if [ "$USAGE" -gt "$THRESHOLD" ]; then
echo "Disk usage on / has exceeded ${THRESHOLD}%!" | mail -s "Disk Alert" admin@example.com
fi
4.8 小结:磁盘空间应对措施的优先顺序
| Priority | Countermeasure | Notes |
|---|---|---|
| ★★★★★ | Remove APT cache (sudo apt clean) | Immediate effect |
| ★★★★☆ | Log cleanup (sudo journalctl --vacuum-time=7d) | Safe and reliable |
| ★★★★☆ | Remove unused Snap / Flatpak versions | Effective on desktop systems |
| ★★★☆☆ | Remove unused Docker data | Effective for server use |
| ★★☆☆☆ | Disk expansion or additional mounts | Effective as a fundamental solution |
| ★☆☆☆☆ | Introduce monitoring scripts | Most effective for long-term operations |
当 Ubuntu 系统的磁盘空间变得紧张时,
“识别高占用 → 安全删除不必要的数据 → 检查系统结构”
遵循这三步方法即可解决大多数问题。
5. 高级技巧(实用技术与注意事项)
即使已经掌握了基本的磁盘空间检查和清理方法,长期运行过程中磁盘使用量仍可能逐渐增加。
本节将介绍一些高级技巧,帮助保持 Ubuntu 系统的平稳运行。
5.1 自动化定期磁盘检查
手动运行 df 和 du 可能比较繁琐,但 自动化脚本 能显著降低工作量。
通过将简单的监控脚本注册到 cron,当磁盘使用率超过某一水平时即可收到提醒。
示例:当可用空间低于 10% 时发送邮件通知
#!/bin/bash
THRESHOLD=90
USAGE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')
if [ "$USAGE" -gt "$THRESHOLD" ]; then
echo "Warning: Root disk usage has reached ${USAGE}%." | \
mail -s "Ubuntu Disk Warning" user@example.com
fi
Save this as /usr/local/bin/check_disk.sh and grant execute permission with chmod +x.
Then register it using crontab -e:
0 8 * * * /usr/local/bin/check_disk.sh
→ This runs the check automatically every morning at 8:00.
Helpful Enhancements
- Notifications can be sent not only by email but also via Slack webhooks or LINE Notify
- The script can be extended to monitor multiple mount points simultaneously
5.2 One-Liners to Find Large Files
Disk space shortages are often caused by a single large file.
The following one-liner lists all files larger than 1GB:
sudo find / -type f -size +1G -exec ls -lh {} \; | awk '{print $9 ": " $5}'
Example output:
/var/log/syslog.1: 1.5G
/var/lib/docker/overlay2/.../diff/usr/lib/libchrome.so: 2.3G
/home/user/Downloads/video.mp4: 4.1G
This allows you to quickly identify files that should be deleted or moved.
Variation: Search Only a Specific Directory
sudo find /var -type f -size +500M
This is useful when investigating large files under /var.
5.3 Creating Aliases for Frequently Used Commands
Typing long commands repeatedly is inefficient, so setting up aliases improves productivity.
Example: Add to ~/.bashrc
alias dfh='df -h --total'
alias duh='sudo du -hsx /* | sort -rh | head -10'
alias logs='sudo du -hs /var/log/* | sort -rh | head -10'
Apply the changes:
source ~/.bashrc
After this, you can quickly run:
dfh: Check total disk usageduh: Show top 10 largest directorieslogs: Analyze log directory usage
5.4 Continuously Monitoring Disk Usage Changes
During long-term Ubuntu operation, disk usage can grow unnoticed.
Keeping a history of disk usage is an effective countermeasure.
Example: Log Disk Usage to a File
#!/bin/bash
df -h / | awk 'NR==2 {print strftime("%Y-%m-%d %H:%M:%S"), $3, $4, $5}' >> /var/log/disk_usage.log
Running this daily via cron allows you to track growth trends over time.
More Advanced Approaches
- Visualize usage with
collectdornetdata - Use Prometheus + Grafana for enterprise monitoring
- Integrate with AWS CloudWatch or GCP Ops Agent in cloud environments
5.5 Be Aware of Permission Barriers
Accurate disk analysis may require root privileges.
Example:
du -sh /var
Without sufficient permissions, some directories may be skipped with “Permission denied,”
resulting in smaller reported sizes than actual usage.
→ Use sudo or administrative privileges when performing system-wide analysis.
5.6 Considerations for SSD and HDD Environments
SSD Environments
- Enable regular TRIM operations to avoid unnecessary writes:
sudo systemctl enable fstrim.timerThis allows SSDs to optimize deleted blocks automatically.
HDD Environments
- Log and cache fragmentation may occur more easily, so rebooting after cleanup can be effective
- Run I/O-intensive commands such as
duduring low-load periods (e.g., late at night)
5.7 Turning Disk Management into a Preventive System
The optimal approach to disk management is habitual and systematic prevention.
Practical Checklist
- Regularly check
df -h - Review
/var/loggrowth monthly - Run
apt autoremoveweekly - Clean up unused Snap and Docker data regularly
- Enable automated alert scripts
By following these practices, most disk space issues can be prevented in advance.
Summary
This section introduced advanced techniques for efficient disk management on Ubuntu.
The key points are:
- 通过自动化和警报进行早期检测
- 使用别名和单行命令提升效率
- 在了解权限和存储特性的前提下安全管理
将这些方法结合起来,可将磁盘管理从繁琐的任务提升为系统运维的核心部分。
6. 常见问题 (FAQ)
Q1. 在 Ubuntu 上检查当前磁盘空间的最简方法是什么?
最简单的方法是在终端运行以下命令:
df -h
此命令会显示每个文件系统的总大小、已用空间和可用空间。
-h 选项会以人类可读的方式(GB / MB)格式化数值。
Q2. 如何按目录检查磁盘使用情况?
使用 du 命令。
检查特定目录:
du -sh /home
选项含义:
-s:仅显示总计-h:以人类可读的格式显示大小
进行更详细的分析:
sudo du -h --max-depth=1 /var
Q3. df 与 du 的区别是什么?
简而言之,它们测量的是不同的目标。
| Command | Target | Main Purpose |
|---|---|---|
df | Entire filesystem | Check available space |
du | Files and directories | Identify disk usage sources |
Q4. 如何使用图形界面工具检查磁盘空间?
在 Ubuntu 桌面版上,你可以使用文件管理器(Nautilus)或磁盘使用分析器(Baobab)。
- 文件管理器:在状态栏显示剩余空间
- Baobab:通过图表和树状图可视化磁盘使用情况
Q5. 当出现“磁盘已满”警告时,应该先删除哪些内容?
按以下顺序先删除安全项:
- APT 缓存:
sudo apt clean - 未使用的软件包:
sudo apt autoremove - 旧日志:
sudo journalctl --vacuum-time=7d - 回收站和缩略图缓存:
rm -rf ~/.cache/thumbnails/* ~/.local/share/Trash/*
Q6. Snap 应用会占用大量磁盘空间吗?
是的,Snap 设计上会保留多个修订版。
使用以下命令删除未使用的修订版:
sudo snap list --all | grep disabled | awk '{print $1, $3}' | \
while read snapname revision; do
sudo snap remove "$snapname" --revision="$revision"
done
Q7. 如果 /var 或 /home 过大怎么办?
/var:清理日志(/var/log)和缓存(/var/cache)/home:将大型用户文件归档或移动到外部存储
如有必要,可考虑使用 LVM 扩展存储或挂载额外的磁盘。
Q8. du 命令运行太慢,如何加速?
- 使用
--max-depth=1限制深度 - 排除不必要的目录(例如
--exclude=/proc) - 使用
ncdu进行交互式分析
Q9. 如何防止磁盘空间问题再次出现?
- 每周运行
sudo apt autoremove - 每月检查
/var/log和/home - 记录
df -h输出以跟踪趋势 - 定期清理 Snap 和 Docker 数据
- 在 SSD 系统上启用 TRIM
Q10. 有哪些扩展磁盘空间的选项?
- 扩展 LVM 卷
sudo lvextend -L +10G /dev/ubuntu-vg/ubuntu-lvsudo resize2fs /dev/ubuntu-vg/ubuntu-lv - 添加并挂载新磁盘,如挂载到
/mnt/data目录下 - 使用云存储来存放大文件和备份
Q11. 可以在没有 root 权限的情况下检查磁盘使用情况吗?
可以运行 df -h,但 du 需要权限才能检查某些目录。
在没有 root 权限的情况下,将分析范围限制在你的 home 目录:
du -sh ~/*
Q12. 如何在没有 GUI 的服务器上检查磁盘空间?
使用以下命令集合:
| Purpose | Command |
|---|---|
| Check overall usage | df -h |
| Directory-level analysis | sudo du -hsx /* |
| Find large files | sudo find / -type f -size +1G |
| Interactive analysis | sudo ncdu / |
Q13. 检查磁盘使用情况有风险吗?
仅仅检查磁盘使用情况是安全的。
但删除或调整大小的操作需要谨慎。
- 使用
sudo rm -rf时请再次确认路径 - 绝不要删除系统目录,如
/bin、/lib或/etc - 如果不确定,请先备份
Q14. 有什么技巧可以节省磁盘空间吗?
- 在
/etc/logrotate.conf中缩短日志保留时间 - 删除未使用的语言包(
sudo apt install localepurge) - 自动删除旧内核(
sudo apt autoremove --purge)
Q15. 推荐的磁盘监控工具有哪些?
| Tool | Features |
|---|---|
| ncdu | Lightweight and fast CLI tool |
| Baobab | GUI-based visual analysis |
| duf | Enhanced df with readable tables |
| Netdata / Prometheus / Grafana | Advanced server monitoring and visualization |
最终总结
通过本 FAQ,Ubuntu 磁盘管理的关键要点可概括如下:
- 同时使用
df(概览)和du(细节) - 按安全顺序删除不必要的数据(APT → 日志 → 缓存)
- 通过自动化和监控防止问题再次出现
将这些做法常规化后,磁盘空间问题将变得罕见。
磁盘管理可能不够光鲜亮丽,但它是确保 Ubuntu 稳定运行的最关键维护任务之一。


