【运维】Linux 服务器实战(3):磁盘查看与 LVM/云盘扩容
Linux 服务器实战 · 第 3 篇
磁盘满了、云盘扩了但df没涨?本篇讲 查看占用 + LVM/分区扩容。
1. 先看清楚磁盘结构
df -h
lsblk -f
sudo fdisk -l
| 命令 | 用途 |
|---|---|
df -h |
各挂载点使用率 |
lsblk |
磁盘 → 分区 → LVM 树 |
du -sh /* 2>/dev/null | sort -rh | head |
根目录谁占空间 |
可选现代工具:
sudo apt install -y ncdu
sudo ncdu /
2. 场景 A:云盘已在控制台扩容,单分区 ext4(无 LVM)
假设 /dev/sda3 已变大,文件系统未跟涨:
# 1. 扩分区(Growpart 来自 cloud-guest-utils)
sudo apt install -y cloud-guest-utils
sudo growpart /dev/sda 3
# 2. 扩文件系统(ext4)
sudo resize2fs /dev/sda3
df -h /
分区号
3按lsblk实际修改。XFS 用sudo xfs_growfs /。
3. 场景 B:Ubuntu 默认 LVM(/dev/mapper/ubuntu--vg-ubuntu--lv)
3.1 先看 VG 有没有空闲
sudo vgdisplay
sudo pvdisplay
sudo lvdisplay
Free PE / Size 有剩余 → 直接扩 LV:
# 吃掉全部 VG 空闲
sudo lvextend -r -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
# 路径也可能是 /dev/mapper/ubuntu--vg-ubuntu--lv
df -h /
-r 会自动 resize2fs。
3.2 分区大了,但 PV 未扩
sudo growpart /dev/sda 3
sudo pvresize /dev/sda3
sudo lvextend -r -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
3.3 指定扩到目标大小
sudo lvresize -L 50G /dev/mapper/ubuntu--vg-ubuntu--lv
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
4. 场景 C:ESXi / 本地虚拟机加盘
- hypervisor 侧增大虚拟磁盘
- 客户机内:
sudo partprobe
lsblk
# 若需新分区:sudo cfdisk /dev/sda 或 growpart
sudo pvresize /dev/sda3
sudo lvextend -r -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
扩完后 fdisk -l 不应再报 GPT PMBR size mismatch(若仍报,重启或 partprobe 后再查)。
5. 清理空间(非扩容)
# journal 过大(详见第 4 篇)
sudo journalctl --disk-usage
sudo journalctl --vacuum-time=7d
# 不用 snap 时可清理 loop 占用
sudo apt autoremove --purge snapd
# 删 10 天前备份
find /home/backup -mtime +10 -type f -delete
6. 磁盘 IO 谁在写(预告第 6 篇)
sudo apt install -y iotop
sudo iotop -oPa
常见坑
| 现象 | 原因 |
|---|---|
控制台扩了盘,df 不变 |
只扩了虚拟盘,未 growpart / pvresize / resize2fs |
lvextend 报 insufficient free space |
PV 未 resize,或扩错分区 |
| 生产环境 | 先快照/备份;LVM 操作前 lvdisplay 确认路径 |
系列导航
| 篇 | 主题 |
|---|---|
| 1 | /forum/13/ 初始化 |
| 2 | /forum/14/ SSH 安全 |
| 3 | 磁盘与 LVM(本文) |
| 4–8 | 日志 / 网络 / 监控 / 诊断 / Cron |
本篇速查
df -h && lsblk && sudo vgdisplay
sudo growpart /dev/sda N && sudo pvresize /dev/sdaN
sudo lvextend -r -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv