Ubuntu 24.04 磁盘空间管理:从查看到 LVM 动态扩容完整指南
Ubuntu 24.04 磁盘空间管理:从查看到 LVM 动态扩容完整指南
前言
在使用 Ubuntu 系统的过程中,磁盘空间不足是常见问题。特别是在使用 Docker、Ollama 等大模型工具时,根分区很容易被占满。本文将详细介绍如何查看磁盘使用情况,以及如何利用 LVM(逻辑卷管理)动态扩展根分区空间,彻底解决"空间不足"的烦恼。
一、查看磁盘空间使用情况
1.1 查看整体磁盘分区结构
lsblk
这个命令会显示所有块设备的树状结构,清晰展示分区和挂载点。例如输出:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS nvme0n1 259:0 0 931.5G 0 disk ├─nvme0n1p1 259:1 0 1G 0 part /boot/efi ├─nvme0n1p2 259:2 0 2G 0 part /boot └─nvme0n1p3 259:3 0 928.5G 0 part └─ubuntu--vg-ubuntu--lv 252:0 0 100G 0 lvm /
通过这个输出,我们可以了解:
-
物理硬盘大小和分区情况
-
各分区的挂载点
-
LVM 逻辑卷的分配情况
1.2 查看更详细的分区信息
lsblk -f
这会额外显示文件系统类型和 UUID 等信息。
1.3 查看磁盘使用率
df -h
以人类可读的格式显示各挂载点的使用情况:
文件系统 大小 已用 可用 已用% 挂载点 /dev/mapper/ubuntu--vg-ubuntu--lv 98G 84G 9.3G 91% /
重点关注:
-
已用%:当超过 85% 时就需要注意
-
可用空间:直接影响能否继续存储文件
1.4 查看 LVM 卷组和物理卷信息
# 查看卷组信息
sudo vgs
# 或查看详细信息
sudo vgdisplay
# 查看物理卷信息
sudo pvs
# 或查看详细信息
sudo pvdisplay
这些命令会显示 LVM 的核心信息:
VG #PV #LV #SN Attr VSize VFree ubuntu-vg 1 1 0 wz--n- <928.46g <828.46g
关键字段:
-
VSize:卷组总大小
-
VFree:卷组空闲空间(可分配给逻辑卷的空间)
1.5 查看目录占用空间
# 查看根目录下各目录占用大小
sudo du -sh /* 2>/dev/null | sort -rh | head -10
# 使用 ncdu 交互式查看(需要安装)
sudo apt install ncdu
sudo ncdu /
二、磁盘空间清理(临时方案)
在扩展空间之前,可以先清理一些系统垃圾:
2.1 清理 APT 缓存
# 清理下载的软件包缓存
sudo apt clean
sudo apt autoclean
# 删除不再需要的依赖包
sudo apt autoremove
2.2 清理系统日志
# 限制 journal 日志大小为 500M
sudo journalctl --vacuum-size=500M
# 或限制日志保留时间
sudo journalctl --vacuum-time=7d
2.3 清理旧内核
# 查看已安装的内核
dpkg --list | grep linux-image
# 删除旧内核(保留当前使用的)
sudo apt autoremove --purge
2.4 清理 Snap 包
# 查看 snap 占用的磁盘空间
du -h /var/lib/snapd/snaps
# 清理旧版本的 snap 包
sudo snap list --all | awk '/disabled/{print $1, $3}' | while read snapname revision; do sudo snap remove "$snapname" --revision="$revision"; done
三、LVM 动态扩展根分区(永久方案)
3.1 什么是 LVM?
LVM(Logical Volume Manager,逻辑卷管理)是 Linux 下的磁盘管理工具,它允许我们动态调整分区大小,而无需重新分区或格式化。其架构为:
-
物理卷(PV, Physical Volume):实际的物理硬盘分区
-
卷组(VG, Volume Group):一个或多个物理卷组成的存储池
-
逻辑卷(LV, Logical Volume):从卷组中划分的逻辑分区,相当于传统的分区
3.2 扩展前的准备工作
在扩展前,务必确认:
-
卷组是否有空闲空间
sudo vgs如果 VFree 为 0,则需要先添加新的物理卷到卷组。
-
确认文件系统类型
df -hT /Ubuntu 24.04 默认使用 ext4 文件系统。
-
备份重要数据(虽然是安全的操作,但建议做好备份)
3.3 扩展逻辑卷
方案一:扩展到指定大小(例如 200G)
# 扩展逻辑卷到 200G
sudo lvextend -L 200G /dev/ubuntu-vg/ubuntu-lv
# 扩展文件系统(ext4)
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
方案二:使用所有可用空间
# 使用卷组中所有剩余空间
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
# 扩展文件系统
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
方案三:增加指定大小(例如增加 50G)
# 增加 50G 空间
sudo lvextend -L +50G /dev/ubuntu-vg/ubuntu-lv
# 扩展文件系统
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
3.4 验证扩展结果
# 查看逻辑卷新大小
sudo lvdisplay
# 查看文件系统新大小
df -h /
3.5 如果卷组没有空闲空间怎么办?
如果 vgs 显示 VFree 为 0,但物理硬盘还有未分配空间:
# 1. 查看未使用的物理分区
sudo fdisk -l
# 2. 创建新的物理卷(假设是 /dev/sdb1)
sudo pvcreate /dev/sdb1
# 3. 将新物理卷添加到卷组
sudo vgextend ubuntu-vg /dev/sdb1
# 4. 确认空闲空间
sudo vgs
# 5. 继续执行逻辑卷扩展
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
3.6 扩展过程中的常见问题
问题 1:resize2fs 提示需要先检查文件系统
# 先检查文件系统
sudo e2fsck -f /dev/ubuntu-vg/ubuntu-lv
# 再执行扩展
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
问题 2:文件系统是 XFS 而不是 ext4
如果 df -hT 显示文件系统类型为 xfs,使用以下命令扩展:
# 使用 xfs_growfs 替代 resize2fs
sudo xfs_growfs /
问题 3:扩展后 df 显示大小未变化
可能是文件系统未正确扩展,重新执行扩展命令即可。
四、Ollama 模型存储管理
4.1 查看 Ollama 模型存储路径
# 查看默认路径
ls -la ~/.ollama/models
# 查看是否设置了自定义路径
echo $OLLAMA_MODELS
4.2 更改 Ollama 模型存储路径
如果根分区空间有限,可以将模型存储到其他分区:
方法一:使用软链接
# 停止 ollama 服务
sudo systemctl stop ollama
# 创建新目录
mkdir -p /home/xrl/ollama_models
# 移动原有模型
mv ~/.ollama/models/* /home/xrl/ollama_models/
# 创建软链接
ln -s /home/xrl/ollama_models ~/.ollama/models
# 重启服务
sudo systemctl start ollama
方法二:设置环境变量(推荐)
# 编辑 ollama 服务配置
sudo systemctl edit ollama
# 添加以下内容:
[Service]
Environment="OLLAMA_MODELS=/home/xrl/ollama_models"
# 重启服务
sudo systemctl restart ollama
# 验证配置
systemctl show ollama | grep Environment
4.3 管理已下载的模型
# 查看已下载的模型
ollama list
# 删除不需要的模型
ollama rm 模型名称
# 下载新模型
ollama pull llama3.1
五、实战案例:解决 Ollama 空间不足问题
场景描述
用户在执行 ollama pull 时遇到"文件空间不够"的错误。通过 lsblk 发现:
-
根分区只有 100G,已用 84G,剩余仅 9.3G
-
物理硬盘有 928.5G,但只分配了 100G 给根分区
-
LVM 卷组有 828.46G 空闲空间
解决方案
步骤 1:确认当前状态
# 查看磁盘分区
lsblk
# 查看 LVM 空闲空间
sudo vgs
# 查看根分区使用情况
df -h /
步骤 2:扩展根分区
# 扩展逻辑卷到 200G
sudo lvextend -L 200G /dev/ubuntu-vg/ubuntu-lv
# 扩展文件系统
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
步骤 3:验证扩展结果
df -h /
现在根分区变为 197G,可用空间 103G,问题解决。
步骤 4:继续下载模型
ollama pull llama3.1
操作要点总结
-
先诊断后操作:使用
lsblk、df -h、vgs了解空间状况 -
优先扩展而非迁移:LVM 扩展是根本解决方案
-
选择合适的扩展大小:可以先用指定大小,未来可继续扩展
-
注意文件系统类型:ext4 用
resize2fs,xfs 用xfs_growfs -
清理与扩展结合:先清理无用文件,再扩展空间
六、预防性建议
6.1 定期监控磁盘使用
# 创建监控脚本
cat > ~/check_disk.sh << 'EOF'
#!/bin/bash
USAGE=$(df -h / | tail -1 | awk '{print $5}' | sed 's/%//')
if [ $USAGE -gt 85 ]; then
echo "警告:根分区使用率已达 ${USAGE}%"
# 可以配置邮件提醒等
fi
EOF
chmod +x ~/check_disk.sh
# 添加到 crontab 每天检查
(crontab -l 2>/dev/null; echo "0 9 * * * /home/xrl/check_disk.sh") | crontab -
6.2 合理规划分区大小
-
根分区(/):至少 50-100G,推荐 200G+
-
/home:单独分区,便于数据管理
-
/var:如果运行大量服务,建议单独分区
6.3 使用 LVM 的最佳实践
-
安装系统时选择 LVM 方式,便于后续扩展
-
为逻辑卷预留增长空间,不要一次性分配所有空间
-
定期检查卷组空闲空间,及时添加新的物理卷
七、总结
本文详细介绍了:
-
如何查看磁盘空间:使用
lsblk、df -h、vgs等命令 -
如何清理磁盘空间:清理 APT 缓存、系统日志、旧内核等
-
如何扩展 LVM 逻辑卷:三种扩展方式及常见问题解决
-
如何管理 Ollama 模型存储:查看路径、更改路径、管理模型
掌握这些技能后,你就能从容应对各种磁盘空间不足的问题。记住,LVM 扩展是解决根分区空间不足的最有效方案,只要卷组还有空闲空间,就能随时扩展。
参考资料
-
Linux man pages: lvextend, resize2fs, vgs, lvs
最后提醒:虽然 LVM 扩展是安全的,但操作前建议备份重要数据。如有任何疑问,可以在操作前咨询有经验的系统管理员。

浙公网安备 33010602011771号