切换主题
lidong 磁盘扩容与 LVM 转换指南
1. 准备工作
bash
# 查看系统中是否安装了 LVM 管理工具
apt list --installed | grep lvm2
# 如提示未安装,执行下面命令安装
apt install lvm2
# 检查系统磁盘情况
fdisk -l | grep /dev/vd | grep -v vda
一般默认除系统盘后,系统第一个磁盘是/dev/vdb、第二个是/dev/vdc
磁盘命名说明
/dev/vda:系统盘(通常是第一个磁盘)/dev/vdb:第一个数据盘/dev/vdc:第二个数据盘- 以此类推...
在物理服务器上,可能会看到 /dev/sda、/dev/sdb 等命名方式,这是不同的磁盘控制器类型导致的命名差异。
查看当前磁盘情况
使用命令 fdisk -l 或者 lsblk 找到新增的未分区的磁盘。
提示:若新增磁盘尚未出现在列表中,可执行以下命令重新扫描 SCSI 主机。
bash
for file in `ls /sys/class/scsi_host`; \
do echo '- - -' > /sys/class/scsi_host/$file/scan ; \
done注意事项:
- 执行扫描命令后,建议等待几秒钟让系统识别新磁盘
- 如果仍然无法识别,可以尝试重启系统
- 在云服务器环境中,可能需要先在控制台挂载新磁盘
重要提示
需求确认:
- 需要扩容原本的/dev/vdb1 空间以利用/dev/vdb 所有空间,请参考
2. 原磁盘本身扩容 - 需要将/dev/vdc 和/dev/vdb 合并使用,请参考
3. 新增磁盘扩容,与原有磁盘合并
2. 原磁盘本身扩容
适用情况:原磁盘已有分区,但申请了新增了磁盘空间 类似于下图:本身 vdb1 只有 500GB,但对 vdb 磁盘新增了 500G,本次需要对 vdb1 扩容至 1000G

扩容原理说明
- 首先取消磁盘挂载,确保数据安全
- 将分区表转换为 GPT 格式,支持更大容量
- 调整分区大小,使其占用所有可用空间
- 扩展文件系统以使用新增的空间
- 重新挂载并验证扩容结果
2.1 取消原磁盘挂载
bash
vim /etc/fstab
注释以下行`# /dev/vdb1 /home ext4 defaults 0 0`并`ESC`和`:wq`保存退出
bash
mount -a
umount /home ## 取消/home挂载挂载点说明
/etc/fstab文件记录了系统启动时需要自动挂载的文件系统- 在修改挂载配置前,请确保了解每个挂载点的用途
- 建议在修改前备份
/etc/fstab文件
2.2 转为 GPT 格式
高风险操作
以下命令会写入磁盘分区表。请确认设备路径正确,并在完成可恢复备份后继续。
bash
gdisk /dev/vdb # 选择磁盘
w # 写入,是否转为GPT格式
Y # 确定转格式
# 等待执行完成
2.3 调整分区大小
高风险操作
调整分区与文件系统前,请确认备份有效,并保证操作期间供电与连接稳定。
bash
# 检查文件系统
e2fsck -f /dev/vdb1
# 使用 parted 调整分区
parted /dev/vdb # 操作磁盘
print # 打印信息
(parted) resizepart 1 # 选择分区
End? [500GB]? 100% # 扩展到全部空间
(parted) quit # 退出
# 扩展文件系统
resize2fs /dev/vdb1
2.4 重新挂载
bash
mount /dev/vdb1 /home
vim /etc/fstab
# 注释以下行`/dev/vdb1 /home ext4 defaults 0 0`并`ESC`和`:wq`保存退出
2.5 检查磁盘挂载情况
bash
mount -a
lsblk
df -hT
3. 新增磁盘扩容,与原有磁盘合并
适用情况:已有磁盘/dev/vdb,需要将新磁盘/dev/vdc 合并,即把/dev/vdc 空间和/dev/vdb 合并使用
LVM 扩容优势
- 支持在线扩容,无需停机
- 可以灵活管理多个物理磁盘
- 支持动态调整分区大小
- 提供更好的数据管理能力
3.1. 备份原本磁盘数据(/dev/vdb->/dev/vdc)
数据备份重要性
- 确保备份目标磁盘有足够空间
- 建议在备份前进行数据完整性检查
- 备份完成后进行验证
- 保留备份直到确认新系统运行正常
3.1.1 在新硬盘上创建新分区并格式化
高风险操作
格式化会清除目标分区上的现有数据。请再次核对目标磁盘与备份状态。
bash
# 查看新硬盘信息
fdisk -l /dev/vdc
# 创建新分区
fdisk /dev/vdc
g # 新建一份 GPT 分区表
n # 添加新分区
# 默认回车 分区号
# 默认回车 第一个扇区
# 默认回车 大小
w # 将分区表写入磁盘并退出
# 格式化分区
mkfs.ext4 /dev/vdc1
# 验证分区创建
fdisk -l /dev/vdc13.1.2 将旧硬盘内容传输至新硬盘
bash
# 建议先验证源分区和目标分区的大小,需求 vdc 区大于或等于 vdb 区
fdisk -l /dev/vdb1 /dev/vdc1
# 开始数据迁移
dd if=/dev/vdb1 of=/dev/vdc1 bs=512M
# 可以再开一个终端执行此命令查看进度
watch -n 10 kill -USR1 $(ps aux | grep "dd if=/dev/vdb1"|grep -v grep|awk '{print $2}')数据迁移注意事项
- 迁移过程中请勿中断操作
- 建议在迁移前进行数据完整性检查
- 迁移完成后务必进行验证
- 如果发现数据不一致,请立即停止操作并联系技术支持
3.2 修改原磁盘为 LVM 卷组(如 /dev/vdb)
3.2.1 删除 /dev/vdb 当前分区
高风险操作
删除分区会使原有数据不可直接访问。请确认迁移副本完整且目标设备无误。
bash
# 卸载正在使用的硬盘
umount /dev/vdb1
# 如果提示设备正忙,可以使用 fuser 命令查看正在操作硬盘的进程,并合理关闭它们
fuser -cu /dev/vdb1 # 找到进程号
ps -ef|grep 进程号 # 找到对应进程
kill -9 进程号 # 杀死进程
# 如当前终端处于 /home 路径,切换到其他路径,如 `cd /`,避免占用
# 删除磁盘分区
fdisk /dev/vdb
d # 删除分区
w # 将分区表写入磁盘并退出
3.2.2 将 /dev/vdb 转换为 LVM 卷组
高风险操作
创建物理卷会覆盖目标设备的 LVM 元数据。请勿对错误的磁盘执行命令。
bash
# 检查当前磁盘状态
lsblk
fdisk -l /dev/vdb
# 清除磁盘签名,会删除 /dev/vdb 数据
wipefs -a /dev/vdb
# 创建物理卷 (PV)
pvcreate /dev/vdb
# 创建卷组 (VG)
vgcreate vg_data /dev/vdb
# 创建逻辑卷 (LV)
lvcreate -n lv_data -l 100%FREE vg_data
# 格式化逻辑卷 (LV),**需要等一会儿执行完成**
mkfs.ext4 /dev/mapper/vg_data-lv_data
# 挂载逻辑卷 /home
mount /dev/mapper/vg_data-lv_data /home
# 设置自动挂载
vim /etc/fstab
# 按a进入编辑模式,添加下面一行
/dev/mapper/vg_data-lv_data /home ext4 defaults 0 0
# esc 后再 :wq 保存
# 手动挂载
mount -a
# 检查挂载情况
df -h


重启机器后,检查挂载情况

3.3 将新硬盘上的数据传至 LVM 卷组
bash
# 开始数据迁移,**等待执行完成**
dd if=/dev/vdc1 of=/dev/mapper/vg_data-lv_data bs=512M
# 可以再开一个终端执行此命令查看进度
watch -n 10 kill -USR1 $(ps aux | grep "dd if=/dev/vdc1"|grep -v grep|awk '{print $2}')3.4 将新硬盘加入 LVM 卷组
高风险操作
本节会重新分区并加入卷组。请确认数据迁移已完成并经过校验。
bash
# 删除原有分区
fdisk /dev/vdc
d # 删除分区
n # 添加新分区
# 默认回车 分区号
# 默认回车 第一个扇区
# 默认回车 大小
w # 将分区表写入磁盘并退出
# 通知操作系统分区表更新
partprobe /dev/vdc
# 查看 pv 信息
pvs
# 创建 pv
pvcreate /dev/vdc
# 扩展卷组(VG)空间
vgextend vg_data /dev/vdc # 往 vg_data 添加
lvextend -l +100%FREE /dev/mapper/vg_data-lv_data # 100%空间分配3.5 扩容 LVM 卷组的文件系统
文件系统扩容注意事项
- 确保文件系统支持在线扩容
- 扩容过程中不要中断操作
- 建议在扩容后检查文件系统完整性
bash
# 检查当前文件系统类型
df -hT
# 根据文件系统类型选择扩容命令
# 如果是 ext4 文件系统
resize2fs -p /dev/mapper/vg_data-lv_data
# 如果是 xfs 文件系统
# xfs_growfs /dev/mapper/vg_data-lv_data
# 检查挂载信息
df -hT
4. 注意事项
常见问题处理
磁盘无法识别
- 检查磁盘是否已正确连接
- 执行磁盘扫描命令
- 检查系统日志
挂载失败
- 检查文件系统是否损坏
- 验证挂载点权限
- 检查 fstab 配置
LVM 操作失败
- 检查 PV、VG、LV 状态
- 确保有足够的空间
- 查看系统日志