Linux 服务器分区扩容操作指南
目录
本文档是一份面向新手的 Linux 服务器磁盘分区扩容傻瓜式操作指南,每条命令均附带中文解释,按顺序执行即可完成扩容。
⚠️ 操作前必读
- 扩容前请备份重要数据,尤其是生产环境,防止操作失误导致数据丢失。
- 操作时建议先在测试环境验证完整流程。
- 注意区分
ext4 和xfs 文件系统,使用对应的扩展命令。 - 如果是根分区扩容,确保系统有足够的内存和 swap,避免操作中断。
一、整体流程概览
磁盘扩容一般分为 4 个层级,需要依次完成:
底层磁盘 → 分区 → LVM(PV/VG/LV)→ 文件系统
- 底层磁盘:在云平台 / 虚拟化平台把磁盘容量调大
- 分区:让操作系统识别新增的磁盘空间
- LVM:把新空间分配给逻辑卷(如果是 LVM 方式)
- 文件系统:让文件系统识别新的容量,空间才真正可用
二、第一步:查看当前磁盘和分区情况
在扩容前,先了解当前系统的磁盘、分区、LVM 和文件系统状态。
lsblk
列出所有块设备及其挂载关系,查看磁盘和分区结构,确认要扩容的磁盘名(如
sda)和分区号。
df -h
以人类可读格式显示文件系统使用情况,查看挂载点和剩余空间。
df -T
显示文件系统类型,Type 列会显示
ext4 或xfs 等,这一步很重要,决定后续用哪个命令扩容文件系统。
pvdisplay
显示 Physical Volume(物理卷)的详细信息,包括 PV 名称、大小、所属 VG。如果没有任何输出,说明没有使用 LVM。
vgdisplay
显示 Volume Group(卷组)的详细信息,包括 VG 名称、总大小、剩余 PE 数。记下 VG 名称(如
centos)。
lvdisplay
显示 Logical Volume(逻辑卷)的详细信息,包括 LV 路径、大小。记下要扩容的 LV 路径(如
/dev/centos/root)。
三、第二步:扩展底层磁盘(在云平台 / 虚拟化平台操作)
先在 VMware、VirtualBox 或云服务商控制台(阿里云、腾讯云、华为云等)将磁盘容量调大,然后刷新磁盘,让 Linux 系统识别新增空间。
echo 1 > /sys/class/scsi_device/0\:0\:0\:0/device/rescan
向 SCSI 设备发送重新扫描指令,使系统识别新增磁盘空间。注意:路径中的
0\:0\:0\:0 需要根据实际情况修改,可通过ls /sys/class/scsi_device/ 查看实际编号。
echo 1 > /sys/block/sda/device/rescan
向指定磁盘(
sda)发送重新扫描指令,刷新磁盘容量信息。把sda 替换为实际磁盘名。
四、第三步:创建新分区或扩展现有分区
⚠️ 重要:方式 A 和方式 B 是「二选一」,千万不要两种都执行!
先看你的情况,再选择执行哪种方式:
- 选方式 A 的场景:你想把新增的磁盘空间创建为一个全新的分区(例如原来只有 sda1、sda2,新增空间后创建为 sda3)。使用 LVM 的系统通常选这种方式。
- 选方式 B 的场景:你想直接把原有的某个分区扩大(例如直接把 sda1 或 sda3 扩展到磁盘末尾),不新建分区。
👉 不管选了哪种方式,最后都要执行「刷新分区表」那一步。
方式 A:使用 fdisk 新建分区(二选一|把新增空间创建为全新的分区)
fdisk /dev/sda
打开 fdisk 分区工具,对
/dev/sda 磁盘进行分区操作。
在 fdisk 交互界面中依次输入以下命令:
| 命令 | 作用 |
|---|---|
n | 新建分区 |
p | 选择主分区(primary) |
| 回车 | 使用默认起始扇区 |
| 回车 | 使用默认结束扇区(使用全部剩余空间) |
t | 修改分区类型 |
| 分区号 | 选择刚创建的分区号 |
8e | 设置为 Linux LVM 类型 |
w | 保存分区表并退出 |
方式 B:使用 parted 扩展现有分区(二选一|直接把原有分区扩大)
parted /dev/sda
启动 parted 分区工具,操作
/dev/sda 磁盘。
(parted) resizepart 3 100%
将第 3 号分区扩展到磁盘末尾,
100% 表示使用全部剩余空间。把3 替换为实际分区号。
(parted) quit
退出 parted。
刷新分区表(方式 A 或方式 B 执行完后,都必做这一步)
partprobe /dev/sda
通知内核重新读取
/dev/sda 的分区表,使新分区立即生效,无需重启系统。
五、第四步:LVM 扩容(仅 LVM 方式需要)
如果第一步
pvdisplay 有输出,说明使用了 LVM,需要执行本步骤。如果没有使用 LVM,请跳到第六步。⚠️ 本步骤分两条路径,取决于你在第三步选了方式 A 还是方式 B,请「对号入座」只执行对应路径,不要两条都做:
- 第三步选了方式 A(新建分区) → 执行下面的「路径 A」
- 第三步选了方式 B(扩展现有分区) → 执行下面的「路径 B」
两条路径最后都要执行「扩展 LV」。
路径 A:第三步选了「方式 A - 新建分区」时执行(下面两条命令都要做)
pvcreate /dev/sda3
将
/dev/sda3 分区初始化为 Physical Volume(物理卷),供 LVM 使用。把sda3 替换为实际分区名。
路径 A 第 2 条:将新 PV 加入到 VG(卷组)
vgextend centos /dev/sda3
将物理卷
/dev/sda3 加入到名为centos 的 Volume Group(卷组)中,扩展 VG 容量。把centos 替换为第一步查到的 VG 名称。
(⬆️ 以上是「路径 A」,仅适用于第三步选了方式 A 的情况。如果你选的是方式 B,请跳过路径 A,直接执行下面的路径 B。)
路径 B:第三步选了「方式 B - 扩展现有分区」时执行
pvresize /dev/sda3
通知 PV 重新识别分区大小,扩展 PV 容量。适用于扩展现有分区的场景。
两种路径都要做:扩展 LV(逻辑卷)
lvextend -l +100%FREE /dev/centos/root
将 VG 中 100% 剩余空间分配给 LV。
-l 表示以 PE 数量为单位,100%FREE 表示所有剩余空间。把/dev/centos/root 替换为第一步查到的 LV 路径。
lvextend -L +50G /dev/centos/root
给 LV 增加 50GB 空间。
-L 表示以具体大小为单位,+ 表示在原有基础上增加。可按需修改50G。
lvextend -L 100G /dev/centos/root
将 LV 扩展到 100GB(绝对大小)。不带
+ 号表示设置为绝对大小,不是增加。
六、第五步:扩展文件系统
这一步让文件系统识别新的容量,空间才真正可用。请根据第一步
df -T 查到的文件系统类型选择对应命令。
ext4 文件系统
resize2fs /dev/centos/root
在线扩展 ext4 文件系统,使其识别 LV 扩容后的新空间。参数为 LV 设备路径。适用于 CentOS 6、Ubuntu 早期版本等。
xfs 文件系统(CentOS 7+ 默认)
xfs_growfs /
在线扩展 xfs 文件系统。参数是挂载点(这里是
/ 根目录),不是设备路径。适用于 CentOS 7+、RHEL 7+。
七、第六步:验证扩容结果
df -h
查看文件系统容量,确认已成功扩容。对比扩容前后的容量变化。
lsblk
查看块设备树,确认 LV 和文件系统大小已更新。
八、非 LVM 方式扩容(普通分区)
如果第一步 pvdisplay 没有输出,说明没有使用 LVM,是普通分区,流程更简单:
parted /dev/sda
启动 parted 分区工具。
(parted) resizepart 1 100%
将第 1 号分区扩展到磁盘末尾。把
1 替换为实际分区号。
(parted) quit
退出 parted。
partprobe /dev/sda
通知内核重新读取分区表,使扩容立即生效。
resize2fs /dev/sda1
在线扩展 ext4 文件系统。把
sda1 替换为实际分区名。
xfs_growfs /dev/sda1
在线扩展 xfs 文件系统(参数为设备路径或挂载点)。
九、快速一键扩容命令(云服务器推荐)
适用于云服务器(阿里云、腾讯云、华为云等)的标准扩容流程,使用 growpart 工具简化操作:
yum install -y cloud-utils-growpart
CentOS/RHEL 系统安装 growpart 工具。如果已安装可跳过。
apt install -y cloud-guest-utils
Ubuntu/Debian 系统安装 growpart 工具。如果已安装可跳过。
growpart /dev/sda 1
growpart 会自动扩展指定分区,无需手动操作 fdisk/parted。
/dev/sda 1 表示扩展 sda 磁盘的第 1 个分区。
pvresize /dev/sda1
通知 PV 重新识别分区大小,扩展 PV 容量(LVM 方式才需要)。
lvextend -l +100%FREE /dev/mapper/centos-root
将 VG 中所有剩余空间分配给根 LV。把
/dev/mapper/centos-root 替换为实际 LV 路径。
xfs_growfs /
在线扩展 xfs 文件系统,使新空间可用。如果是 ext4 文件系统,改用
resize2fs /dev/mapper/centos-root。
十、常见问题与解决方案
| 问题 | 解决方案 |
|---|---|
| 分区后磁盘未识别 | 执行 partprobe /dev/sda 刷新分区表,或重启系统 |
xfs_growfs 报错 | xfs 只能扩展不能缩小,且挂载点必须存在且已挂载 |
resize2fs 报错 | ext4 可以在线扩展,但缩小需要先卸载文件系统 |
| swap 分区占用空间 | 先关闭 swap:swapoff -v /dev/centos/swap,删除该 LV 后再重新创建较小的 swap |
| 根分区无法操作 | 使用 growpart 工具:growpart /dev/sda 1,专门用于扩展根分区 |
pvdisplay 无输出 | 说明没有使用 LVM,走非 LVM 扩容流程(第八步) |
vgextend 报错找不到 VG | 用 vgdisplay 确认正确的 VG 名称,区分大小写 |
十一、命令速查表
| 命令 | 作用 | 使用场景 |
|---|---|---|
lsblk | 查看块设备树 | 查看磁盘和分区结构 |
df -h | 查看文件系统使用情况 | 查看挂载点和剩余空间 |
df -T | 查看文件系统类型 | 确定用 resize2fs 还是 xfs_growfs |
pvdisplay | 查看物理卷 | 确认是否使用 LVM |
vgdisplay | 查看卷组 | 获取 VG 名称 |
lvdisplay | 查看逻辑卷 | 获取 LV 路径 |
pvcreate | 创建物理卷 | 新分区初始化为 PV |
pvresize | 扩展物理卷 | 扩展现有分区场景 |
vgextend | 扩展卷组 | 将 PV 加入 VG |
lvextend | 扩展逻辑卷 | 给 LV 分配更多空间 |
resize2fs | 扩展 ext4 文件系统 | ext4 文件系统扩容 |
xfs_growfs | 扩展 xfs 文件系统 | xfs 文件系统扩容 |
partprobe | 刷新分区表 | 分区操作后生效 |
growpart | 自动扩展分区 | 云服务器根分区扩容 |
十二、安全建议
- 扩容前备份重要数据,尤其是生产环境,防止操作失误导致数据丢失。
- 操作时建议先在测试环境验证完整流程,确认无误后再在生产环境执行。
- 注意区分
ext4 和xfs 文件系统,使用对应的扩展命令(resize2fs vsxfs_growfs)。 - 如果是根分区扩容,确保系统有足够的内存和 swap,避免操作过程中断。
- 操作前建议执行
sync 命令,将内存中的数据写入磁盘。 - xfs 文件系统只能扩展不能缩小,操作时务必注意。
#运维 #Linux #磁盘扩容 #LVM