Linux系统根分区(/)空间不足时,会影响系统正常运行,甚至导致服务异常或无法登录,扩容根分区需根据当前磁盘分区类型(LVM或普通分区)选择不同方法,操作前务必备份重要数据,避免因操作失误导致数据丢失,以下是详细的扩容步骤及注意事项。
检查当前磁盘及分区情况
确认根分区挂载点及文件系统类型
使用df -h
命令查看根分区挂载点、已用空间及文件系统类型:
df -h
输出示例中,若根分区为/dev/mapper/centos-root
(LVM逻辑卷)或/dev/sda2
(普通分区),需记录文件系统类型(如ext4、xfs等)。
查看磁盘分区及LVM信息
- LVM环境:使用
lsblk
、pvdisplay
、vgdisplay
、lvdisplay
查看物理卷(PV)、卷组(VG)、逻辑卷(LV)信息:lsblk # 查看磁盘及分区结构 pvdisplay # 查看物理卷信息 vgdisplay # 查看卷组信息(记录VG名称、空闲空间) lvdisplay # 查看逻辑卷信息(记录LV路径、名称)
- 普通分区环境:使用
fdisk -l
或lsblk
查看磁盘分区表,确认根分区所在设备及是否有未分配空间:fdisk -l
常用命令及作用说明
命令 | 作用 | 示例输出关键信息 |
---|---|---|
df -h |
查看文件系统使用情况 | 根分区挂载点、已用空间、总空间 |
lsblk |
查看块设备信息(磁盘、分区、LV) | 设备名、大小、挂载点、类型 |
pvdisplay |
查看物理卷(PV)详情 | PV名称、所属VG、总大小、空闲大小 |
vgdisplay |
查看卷组(VG)详情 | VG名称、PE大小、总PE、空闲PE |
lvdisplay |
查看逻辑卷(LV)详情 | LV路径、名称、大小、挂载点 |
fdisk -l |
查看磁盘分区表 | 分区起始/结束扇区、文件系统类型 |
LVM根分区扩容步骤
确认VG是否有足够空闲空间
若VG中有未分配空间,可直接扩容LV;若无,需先扩容VG(如添加新磁盘或扩容现有PV)。
扩容逻辑卷(LV)
使用lvextend
命令为LV增加空间,支持按大小(如+10G
)或比例(如+100%FREE
,使用VG所有空闲空间)扩容:
# 示例:为根分区逻辑卷增加所有VG空闲空间 lvextend -l +100%FREE /dev/mapper/centos-root
参数说明:
-l
:按PE(物理扩展)数量扩容,+100%FREE
表示使用VG所有空闲PE;-L +10G
:按指定大小扩容(需替换为实际需求)。
扩容文件系统
根据文件系统类型选择对应命令,扩容后需检查文件系统是否正常。
-
ext4文件系统:
# 检查文件系统(可选,建议执行) e2fsck -f /dev/mapper/centos-root # 扩容文件系统 resize2fs /dev/mapper/centos-root
-
xfs文件系统:
# xfs文件系统在线扩容(无需卸载) xfs_growfs /
验证扩容结果
使用df -h
确认根分区空间已增加:
df -h | grep "Filesystem|/dev/mapper/centos-root"
普通分区根扩容步骤(非LVM)
若根分区为普通分区(如/dev/sda2
),需先调整分区大小,再扩容文件系统。
确认磁盘是否有未分配空间
使用fdisk -l
或lsblk
查看磁盘末尾是否有未分配空间,若需新增空间,需先在云平台控制台或物理机上扩容磁盘(如AWS扩容EBS、阿里云扩容云盘),然后重启系统使内核识别新空间。
调整分区大小
以fdisk
工具为例(仅支持MBR分区,GPT分区需使用parted
):
fdisk /dev/sda
进入交互模式后执行以下步骤:
- 输入
d
删除原根分区(记录起始扇区,后续需重新创建); - 输入
n
创建新分区,选择主分区,起始扇区与原分区一致,结束扇区选择磁盘末尾(使用默认值); - 输入
t
设置分区类型(如Linux,83); - 输入
w
保存分区表。
注意:
fdisk
删除分区会导致数据丢失,操作前务必确认分区内容已备份,且起始扇区错误可能导致数据损坏。
重新读取分区表
partprobe /dev/sda # 或重启系统
扩容文件系统
根据文件系统类型执行对应命令:
- ext4:
e2fsck -f /dev/sda2 # 检查文件系统 resize2fs /dev/sda2 # 扩容文件系统
- xfs:
# xfs文件系统需先创建分区,使用xfs_admin修改UUID(可选),再扩容 xfs_growfs / # 在线扩容
验证扩容结果
df -h | grep "/dev/sda2"
云服务器根扩容注意事项
若使用云服务器(如AWS、阿里云、腾讯云),需先在控制台扩容磁盘容量,再执行系统内操作:
- 控制台扩容磁盘:登录云平台,选择对应云盘,扩容容量(注意:扩容后系统内看到的原始分区大小不变,需手动调整);
- 识别新空间:重启实例或使用
partx -a /dev/sda
加载新分区; - 后续步骤:参考上述LVM或普通分区扩容步骤操作。
常见问题及FAQs
Q1:扩容后根分区空间未增加,是什么原因?
A:可能原因及解决方法如下:
- 未扩容文件系统:LVM环境下执行了
lvextend
但未执行resize2fs
或xfs_growfs
,需根据文件系统类型补充扩容文件系统命令; - VG/LV未正确扩容:检查VG是否有空闲空间(
vgdisplay
),若无需先扩容VG(如添加新PV); - 云服务器未同步磁盘:云平台扩容磁盘后未重启或未执行
partprobe
,导致系统未识别新空间; - 分区表未更新:普通分区环境下调整分区大小后未执行
partprobe
或重启,需重新读取分区表。
Q2:扩容过程中提示“Device or resource busy”,如何处理?
A:该错误通常因分区或文件系统正在使用(如根分区挂载中)导致,解决方法:
- 卸载分区:若为非根分区,可先卸载再操作;根分区无法卸载,需进入救援模式(如通过Live CD启动或使用云服务器救援功能);
- 强制检查文件系统:对于ext4文件系统,可使用
e2fsck -f
强制检查(即使挂载中也可能执行,但风险较高,建议先备份); - 云服务器使用单用户模式:通过GRUB引导时按
e
进入编辑模式,在linux行末添加init=/bin/bash
进入单用户模式,再执行扩容操作。
通过以上步骤,可完成Linux系统根分区的扩容操作,操作前务必备份重要数据,并根据实际分区类型(LVM/普通分区)选择对应方法,确保每一步骤准确无误。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/35440.html