当前位置:首页 > Linux > 正文

linux 如何扩展分区

在 Linux 中扩展分区可借助 LVM(逻辑卷管理)实现动态扩容;若为普通分区,需用 fdisk/ parted 调整分区表,再通过 resize2fs 同步文件系统,操作前务必备份

Linux 系统中扩展分区是一项关键运维任务,尤其当存储容量接近上限时,合理规划与执行可显著提升系统稳定性,以下从前期准备、核心步骤、多场景方案、风险控制及常见错误排查五个维度展开详细说明,并提供实用示例与对比表格。


前置条件核查清单

检查项 目的 执行命令/方法 预期结果
物理磁盘剩余空间 确认具备可分配的自由空间 lsblk + sudo fdisk -l 显示未分配区域(Free Space)
文件系统类型 判断是否支持动态扩容 blkid /dev/sdXn ext4/xfs/btrfs等
分区用途 区分根分区/家目录/数据分区 mount | grep [分区路径] 明确目标分区的业务属性
快照/备份状态 防止数据丢失 rsync 全量备份 完成二次校验
LVM 环境检测 识别逻辑卷组归属关系 pvdisplay vgscan 确认是否为 LVM 成员

️ 重要提示:若目标分区为根分区(),建议通过 LiveCD/USB 启动后操作,避免因系统运行时修改分区导致崩溃。


基础场景:非 LVM 物理分区扩展(以 ext4 为例)

创建新分区并挂载测试

# 查看磁盘布局
lsblk
# 使用 fdisk 新建分区(假设 /dev/sda3 需扩展,后方有未分配空间)
sudo fdisk /dev/sda
# 内部操作:输入 d 删除原分区 → n 新建同起始扇区的新分区 → w 写入分区表
# 格式化新分区(保持文件系统一致)
sudo mkfs.ext4 /dev/sda3
# 临时挂载验证
sudo mount /dev/sda3 /mnt/test
df -Th /mnt/test  # 确认容量已更新

正式迁移数据与更新引导

# 停止相关服务(如数据库、Web服务器)
systemctl stop mysql mariadb apache2
# 同步原始分区数据到新分区(生产环境建议增量同步+校验)
rsync -avHAX --progress /old/partition/ /new/partition/
# 修改 /etc/fstab 确保开机挂载正确性
grep 'UUID=' /etc/fstab  # 替换旧 UUID 为新分区的 UUID
# 重启系统并验证
reboot
mount | grep 'on /dev/sda3'  # 检查挂载状态

高级场景:LVM 逻辑卷在线扩容

操作阶段 命令示例 说明
查看卷组信息 vgs 确认可用 PE(Physical Extent)数量
扩展逻辑卷 lvextend -L+5G /dev/mapper/vg0-lv 按需增加容量(支持百分比:-L+10%FREE
文件系统扩容 resize2fs /dev/mapper/vg0-lv 自动同步超级块与实际容量
监控扩容进度 watch "lvdisplay" 实时观察 Logical Volume Size 变化

优势对比:LVM 方案无需停机即可完成扩容,且支持跨物理磁盘动态调配空间,适合高可用场景。


特殊文件系统处理要点

文件系统 扩容工具 注意事项
ext4 resize2fs 仅能扩大不能缩小,需提前备份
XFS xfs_growfs 支持离线/在线扩容,推荐用于大数据
btrfs btrfs filesystem grow 可添加新设备实现横向扩展
ZFS zpool online expand 需先创建镜像/RAIDZ 冗余结构

风险控制与故障排查

典型错误及解决方案

错误现象 可能原因 解决方法
resize2fs: Device or resource busy 分区仍被进程占用 卸载分区或切换至维护模式
No free space found 物理磁盘无连续空闲块 使用 parted 重新排列分区顺序
GUID 冲突导致启动失败 新分区生成重复标识符 手动指定唯一 UUID:tune2fs /dev/sda3 -U <新UUID>

应急回退方案

# 若扩容后无法启动,进入救援模式
cd /mnt/sysimage/chroot
# 恢复旧分区表备份(需提前制作)
sfdisk --no-reread /dev/sda < backup.sfdisk
# 重建 initramfs 并退出重启
dracut -f
exit

最佳实践归纳

  1. 优先级排序:优先扩展经常写入日志的分区(如 /var/log),其次考虑数据库数据目录。
  2. 性能优化:对于高频读写的分区,建议搭配 SSD 并启用 noatime 挂载选项。
  3. 监控机制:设置 df -h 定时任务,当使用率超过 85% 时触发告警。
  4. 文档记录:修改前后均需拍照记录 lsblkblkid 输出,便于追溯。

FAQs

Q1: 能否在不重启的情况下扩展正在使用的 ext4 分区?
A: 可以,但需满足两个条件:① 分区位于 LVM 卷组内;② 使用 lvextend + resize2fs 组合命令,直接操作物理分区会导致 I/O 错误,必须卸载后操作。

linux 如何扩展分区  第1张

Q2: 为什么执行 resize2fs 后实际可用空间未增加?
A: 常见原因是未正确更新分区表,请检查 fdisk -l 显示的结束扇区是否已扩展,若未生效,需重新执行 fdisk 调整分区边界并写入分区表

0