16
2024
12
14:23:29

无损将普通分区转换为 LVM 分区

 服务器用于存放数据的硬盘不够了,但是由于装机时没有采用 LVM 卷组,因此无法将新硬盘快速合并为一个大的存储空间。现在服务器的 sda 用于安装操作系统,sdb 为一个普通 ext4 分区挂载至 /home,现希望将新加入的 sdc 与 sdb 一起创建一个 lvm 卷组,并挂载至 /home

使用须知

  请务必先完整阅读后在操作,并确保你具有以下知识:

  • 熟练的 Linux 运维技术

  • 了解磁盘分区

  • 了解 LVM 原理

  • 明白数据是无价的

操作步骤

  1. 卸载正在使用的硬盘

1
2
3
umount /dev/sdb1
# 如果提示设备正忙,可以使用fuser命令查看正在操作硬盘的进程,并合理关闭它们
fuser -cu /dev/sdb1
  1. 在新硬盘上创建新分区并格式化

1
2
3
4
5
6
7
8
fdisk /dev/sdc
g   新建一份 GPT 分区表
n   添加新分区
默认回车 分区号
默认回车 第一个扇区
默认回车 大小
w   将分区表写入磁盘并退出
mkfs.ext4 /dev/sdc1
  1. 将 sdb 的内容传输至 sdc,虽然采购的硬盘为同一型号,但是由于批次的原因两者大小并不相同,新硬盘有 7814033408 个扇区大于旧硬盘的 7814035087,因此可以直接操作,否则参考第 4 步,现缩小文件系统

1
2
3
dd if=/dev/sdb1 of=/dev/sdc1 bs=512M
# 可以再开一个终端执行此命令查看进度
watch -n 10 kill -USR1 682642
  1. 缩小新硬盘上的文件系统(移动存储的内容)

1
2
3
4
5
6
7
# 操作前要先进行文件系统检查
e2fsck -f /dev/sdc1
# 缩小到3.5G,这里要留意一下缩小后文件系统占用的块数
resize2fs -p /dev/sdc1 3584G
> /dev/sdc1 上的文件系统现在为 939524096 个块(每块4k)。
# 如果没记下来,可以用这个命令查看
dumpe2fs -h /dev/sdc1
  1. 缩小新硬盘上的文件系统(缩小分区表)

1
2
3
4
5
6
7
fdisk /dev/sdc
d   删除分区
n   添加新分区
默认回车 分区号
默认回车 第一个扇区
上一步的块数*4
w   将分区表写入磁盘并退出
  1. 将旧硬盘的分区类型改为 LVM

1
2
3
4
fdisk /dev/sdb
t   更改分区类型
31 Linux LVM
w   将分区表写入磁盘并退出
  1. 创建 LVM 卷组并格式化

1
2
3
4
5
lvm
pvcreate /dev/sdb1
vgcreate vg_data /dev/sdb1
lvcreate -n lv_home -l 100%FREE vg_data
mkfs.ext4 /dev/vg_data/lv_home
  1. 将新硬盘上的数据传至 LVM 卷组

1
dd if=/dev/sdc1 of=/dev/mapper/vg_data-lv_home bs=512M
  1. 重新分区新硬盘

1
2
3
4
5
6
7
fdisk /dev/sdc
d   删除分区
n   添加新分区
默认回车 分区号
默认回车 第一个扇区
默认回车 大小
w   将分区表写入磁盘并退出
  1. 将新硬盘加入 LVM 卷组

1
2
3
4
lvm
pvcreate /dev/sdc1
vgextend vg_data /dev/sdc1
lvextend -l +100%FREE /dev/vg_data/lv_home
  1. 扩容 LVM 卷组的文件系统

1
2
e2fsck -f /dev/vg_data/lv_home
resize2fs -p /dev/vg_data/lv_home
  1. 查询新硬盘的 UUID,修改 fstab,使之开机可以自动挂载

1
2
3
4
5
6
7
ll /dev/disk/by-uuid/

# 编辑 /etc/fstab
vim /etc/fstab

# 立即重新挂载
mount -a








推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/8717.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: