非LVM磁盘分区根目录扩容操作参考

简介: 在操作系统部署时,根目录使用的是非LVM分区,后期空间不足又无法扩容。提供一个思路是新增一块硬盘,创建为逻辑卷,把根目录迁移过去,然后引导以新分区启动。迁移完成后,旧的根目录可以再格式化为逻辑卷,合并到新磁盘分区。本操作仅在CentOS Linux release 7.9.2009实验过,其他环境可能不支持。

需求描述

在操作系统部署时,根目录使用的是非LVM分区,后期空间不足又无法扩容。
提供一个思路是新增一块硬盘,创建为逻辑卷,把根目录迁移过去,然后引导以新分区启动。
迁移完成后,旧的根目录可以再格式化为逻辑卷,合并到新磁盘分区。
本操作仅在CentOS Linux release 7.9.2009实验过,其他环境可能不支持。


效果展示

迁移前:

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0  300M  0 part /boot
├─sda2            8:2    0    2G  0 part [SWAP]
└─sda3            8:3    0 17.7G  0 part  /
sdb               8:16   0   30G  0 disk
└─sdb1            8:17   0   30G  0 part
sr0              11:0    1 1024M  0 rom

迁移后:

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0  300M  0 part /boot
├─sda2            8:2    0    2G  0 part [SWAP]
└─sda3            8:3    0 17.7G  0 part
sdb               8:16   0   30G  0 disk
└─sdb1            8:17   0   30G  0 part
  └─my_vg-my_lv 253:0    0   30G  0 lvm  /
sr0              11:0    1 1024M  0 rom

与旧分区合并:

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0  300M  0 part /boot
├─sda2            8:2    0    2G  0 part [SWAP]
└─sda3            8:3    0 17.7G  0 part
  └─my_vg-my_lv 253:0    0 47.7G  0 lvm  /
sdb               8:16   0   30G  0 disk
└─sdb1            8:17   0   30G  0 part
  └─my_vg-my_lv 253:0    0 47.7G  0 lvm  /
sr0              11:0    1 1024M  0 rom

新磁盘创建逻辑卷

将新磁盘创建逻辑卷分区,磁盘分区可选为8e类型,过程不再赘述,只提供逻辑卷操作步骤:

# 创建物理卷(如果尚未创建)
pvcreate /dev/sdb1

# 创建卷组
vgcreate my_vg /dev/sdb1

# 创建逻辑卷
lvcreate -n my_lv -l 100%FREE my_vg

# 格式化分区
mkfs.ext4 /dev/mapper/my_vg-my_lv

迁移操作步骤:

注意事项和准备工作:
1、确保您拥有管理员权限或者以root用户身份登录。
2、确保您了解所执行操作的风险,并且已经备份了所有重要数据。
3、请谨慎操作,并严格按照下列步骤操作。

操作步骤:
1、挂载新的(逻辑卷)根分区:

[root@localhost ~]# mkdir /mnt/new_root
[root@localhost ~]# mount /dev/mapper/my_vg-my_lv /mnt/new_root/
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0  300M  0 part /boot
├─sda2            8:2    0    2G  0 part [SWAP]
└─sda3            8:3    0 17.7G  0 part /
sdb               8:16   0   30G  0 disk
└─sdb1            8:17   0   30G  0 part
  └─my_vg-my_lv 253:0    0   30G  0 lvm  /mnt/new_root
sr0              11:0    1 1024M  0 rom

2、挂载旧的根分区:

[root@localhost ~]# mkdir /mnt/temp_root
[root@localhost ~]# mount /dev/sda3 /mnt/temp_root/
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0  300M  0 part /boot
├─sda2            8:2    0    2G  0 part [SWAP]
└─sda3            8:3    0 17.7G  0 part /mnt/temp_root
sdb               8:16   0   30G  0 disk
└─sdb1            8:17   0   30G  0 part
  └─my_vg-my_lv 253:0    0   30G  0 lvm  /mnt/new_root
sr0              11:0    1 1024M  0 rom

3、迁移根目录数据到新的逻辑卷:

[root@localhost ~]# rsync -avxHAX /mnt/temp_root/ /mnt/new_root/  --info=progress2

4、数据检查:

[root@localhost ~]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
***
/dev/sda3               xfs        18G  4.4G   14G  25% /
***
/dev/mapper/my_vg-my_lv ext4       30G  4.4G   24G  16% /mnt/new_root

可以看到sda3和my_vg-my_lv的Used数据量是一致的。

5、更新/boot下的引导信息:

[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-1160.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-8ff399da12b8416993db7c4fb98f39e4
Found initrd image: /boot/initramfs-0-rescue-8ff399da12b8416993db7c4fb98f39e4.img
Found CentOS Linux release 7.9.2009 (Core) on /dev/mapper/my_vg-my_lv
done

6、更新/mnt/new_root/etc/fstab文件:
使用文本编辑器打开/mnt/new_root/etc/fstab,将旧根分区的UUID更新为新逻辑卷的UUID。

[root@localhost ~]# vim /mnt/new_root/etc/fstab
UUID=</dev/mapper/my_vg-my_lv的UUID> /                       ext4    defaults        0 0

7、更新启动加载项:

[root@localhost ~]# grub2-install /dev/sdb
Installing for i386-pc platform.
Installation finished. No error reported.

如果/dev/sdb不是您的启动磁盘,请将其替换为正确的磁盘。

8、更新initramfs:

[root@localhost ~]# dracut -f /boot/initramfs-$(uname -r).img $(uname -r)

9、卸载临时挂载点:

[root@localhost ~]# umount /mnt/temp_root
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0  300M  0 part /boot
├─sda2            8:2    0    2G  0 part [SWAP]
└─sda3            8:3    0 17.7G  0 part /
sdb               8:16   0   30G  0 disk
└─sdb1            8:17   0   30G  0 part
  └─my_vg-my_lv 253:0    0   30G  0 lvm  /mnt/new_root
sr0              11:0    1 1024M  0 rom

10、注释掉/boot配置文件中旧的启动项,大概是在87~118行:

[root@localhost ~]# vim /boot/grub2/grub.cfg

image

11、重启系统:

[root@localhost ~]# reboot

image

12、检查迁移后的磁盘:

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0  300M  0 part /boot
├─sda2            8:2    0    2G  0 part [SWAP]
└─sda3            8:3    0 17.7G  0 part
sdb               8:16   0   30G  0 disk
└─sdb1            8:17   0   30G  0 part
  └─my_vg-my_lv 253:0    0   30G  0 lvm  /
sr0              11:0    1 1024M  0 rom
[root@localhost ~]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
***
/dev/mapper/my_vg-my_lv ext4       30G  4.4G   24G  16% /
***

分区合并操作

若您希望将sda3分区添加到my_vg-my_lv逻辑卷中,您可以按照以下步骤进行操作:

确保sda3分区没有被挂载,否则需要先卸载它。
使用 pvcreate 命令将sda3分区转换为物理卷。
将新的物理卷添加到卷组(Volume Group)中,您可以使用 vgextend 命令。
最后,您可以使用 lvextend 命令将逻辑卷(Logical Volume)扩展至所需大小。

以下是具体的命令示例:
1、卸载sda3分区(如果已经挂载)

umount /dev/sda3

2、将sda3分区转换为物理卷

[root@localhost ~]# pvcreate /dev/sda3
WARNING: xfs signature detected on /dev/sda3 at offset 0. Wipe it? [y/n]: y
  Wiping xfs signature on /dev/sda3.
  Physical volume "/dev/sda3" successfully created.

3、将新的物理卷添加到卷组中

[root@localhost ~]# vgextend my_vg /dev/sda3
  Volume group "my_vg" successfully extended

4、扩展逻辑卷至所需大小

[root@localhost ~]# lvextend -l +100%FREE /dev/mapper/my_vg-my_lv
  Size of logical volume my_vg/my_lv changed from <30.00 GiB (7679 extents) to <47.70 GiB (12211 extents).
  Logical volume my_vg/my_lv successfully resized.

5、(可选)对扩展后的逻辑卷进行文件系统的扩展,以便能够利用新的空间

[root@localhost ~]# resize2fs /dev/mapper/my_vg-my_lv
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/my_vg-my_lv is mounted on /; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 6
The filesystem on /dev/mapper/my_vg-my_lv is now 12504064 blocks long.

6、检查修改后的逻辑卷状态

[root@localhost ~]# lvdisplay /dev/mapper/my_vg-my_lv
  --- Logical volume ---
  LV Path                /dev/my_vg/my_lv
  LV Name                my_lv
  VG Name                my_vg
  LV UUID                gEMnMQ-Hsqz-ZD9D-PTtp-2f1u-Rs4C-q3DbFL
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2023-10-18 18:16:25 -0700
  LV Status              available
  # open                 1
  LV Size                <47.70 GiB
  Current LE             12211
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

7、检查修改后的磁盘状态

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0  300M  0 part /boot
├─sda2            8:2    0    2G  0 part [SWAP]
└─sda3            8:3    0 17.7G  0 part
  └─my_vg-my_lv 253:0    0 47.7G  0 lvm  /
sdb               8:16   0   30G  0 disk
└─sdb1            8:17   0   30G  0 part
  └─my_vg-my_lv 253:0    0 47.7G  0 lvm  /
sr0              11:0    1 1024M  0 rom
[root@localhost ~]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
***
/dev/mapper/my_vg-my_lv ext4       47G  4.4G   41G  10% /
***

注意事项和细节:
1、请务必仔细检查每个步骤,确保命令的准确性和正确的选项。
2、检查新的逻辑卷是否具有足够的空间来承载整个根分区的数据。
3、请确保文件系统和分区大小的兼容性。
4、在进行操作之前最好先在测试环境中尝试这些步骤。

目录
相关文章
|
Linux
生产环境Linux服务器磁盘分区、无损扩容根分区以及挂载磁盘到目录实战
生产环境Linux服务器磁盘分区、无损扩容根分区以及挂载磁盘到目录实战
453 0
|
14天前
|
存储 监控 Linux
在 CentOS 7 中进行磁盘分区和挂载的具体操作步骤,如何使用 `fdisk` 创建分区、格式化分区、创建挂载点以及临时和永久挂载分区的方法。
本文介绍了在 CentOS 7 中进行磁盘分区和挂载的具体操作步骤。通过一个实际案例,详细说明了如何使用 `fdisk` 创建分区、格式化分区、创建挂载点以及临时和永久挂载分区的方法。此外,还分享了一些实践经验,帮助读者更好地管理和优化服务器磁盘空间。
37 4
|
15天前
|
存储 监控 Linux
如何在 CentOS 7 中进行磁盘分区和挂载,包括准备工作、创建分区、格式化分区、创建挂载点、挂载分区及实践经验分享
随着业务扩展和技术进步,服务器硬盘容量需求不断增加。本文通过具体案例介绍如何在 CentOS 7 中进行磁盘分区和挂载,包括准备工作、创建分区、格式化分区、创建挂载点、挂载分区及实践经验分享,帮助读者更好地管理和利用磁盘空间。
57 3
|
1月前
|
存储 监控 Linux
在 CentOS 7 上如何对未使用的硬盘进行分区、格式化和挂载的最佳实践,包括准备工作、创建分区、格式化分区、创建挂载点、挂载分区及最佳实践建议
【10月更文挑战第8天】本文详细介绍了在 CentOS 7 上如何对未使用的硬盘进行分区、格式化和挂载的最佳实践,包括准备工作、创建分区、格式化分区、创建挂载点、挂载分区及最佳实践建议,旨在有效管理和利用服务器磁盘资源,提升系统稳定性和可维护性。
47 1
|
6月前
|
运维 Linux 虚拟化
linux|磁盘管理工作|lvm逻辑管理卷的创建和使用总结(包括扩容,根目录扩容演示)
linux|磁盘管理工作|lvm逻辑管理卷的创建和使用总结(包括扩容,根目录扩容演示)
552 0
|
Linux
Linux——系统扩容根目录磁盘空间、磁盘扩容的操作方法
Linux根目录磁盘空间不够用了,当修改了虚拟机模版增加磁盘大小或者插入了一块新硬盘,但是发现系统里的大小还是没改变。 产生的原因是没有给磁盘格式化,没有增加分区。
1973 0
linux 根分区磁盘 LVM 拉升(磁盘扩容)
linux 根分区磁盘 LVM 拉升(磁盘扩容)
|
存储 Linux
linux篇-Linux MBR分区、挂载操作步骤,逻辑卷扩容操作
linux篇-Linux MBR分区、挂载操作步骤,逻辑卷扩容操作
278 0
linux篇-Linux MBR分区、挂载操作步骤,逻辑卷扩容操作
|
机器学习/深度学习 Shell Linux
linux LVM 一键分区脚本自动扩容
lv 分区,vg 卷,pv 硬盘;加s 列出,remove 删除 ;如:lvs和 lvremove 需要fdisk -l 查看LVM硬盘目录,如删除分区:lvremove /dev/mapper/eisc-b
2003 0

相关实验场景

更多