非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
CentOS7下对非LVM类型的根分区进行扩容
CentOS7下对非LVM类型的根分区进行扩容
1153 0
CentOS7下对非LVM类型的根分区进行扩容
|
Linux
生产环境Linux服务器磁盘分区、无损扩容根分区以及挂载磁盘到目录实战
生产环境Linux服务器磁盘分区、无损扩容根分区以及挂载磁盘到目录实战
1251 0
|
缓存
银河麒麟server-V10配置镜像源
银河麒麟server-V10配置镜像源
19799 1
|
Linux
CentOS7 系统磁盘空间不足,如何进行扩容
CentOS7 系统磁盘空间不足,如何进行扩容
2020 0
CentOS7 系统磁盘空间不足,如何进行扩容
|
Web App开发 弹性计算
阿里云ECS云服务器系统盘不够用怎么办?磁盘扩容功能了解一下
阿里云ECS云服务器默认搭配的是40G的系统盘,系统盘不够用怎么办?云服务器吧告诉大家ECS系统盘支持磁盘扩容更能,无需更换系统盘,一键扩容: ECS云服务器磁盘扩容 以前ECS云服务器系统盘不够用,是通过更换系统盘来实现的,更换系统盘时通过更换一个新的磁盘,选择一个镜像的方式来扩容,老的磁盘会被释放,十分麻烦。
15653 1
|
Linux
Linux系统ext4磁盘扩容实践指南
这个过程就像是给你的房子建一个新的储物间。你需要先找到空地(创建新的分区),然后建造储物间(格式化为ext4文件系统),最后将储物间添加到你的房子中(将新的分区添加到文件系统中)。完成这些步骤后,你就有了一个更大的储物空间。
1305 10
|
存储 监控 Linux
在 CentOS 7 中如何对未分配的大容量硬盘进行分区和挂载。通过具体案例,详细说明了使用 `fdisk` 创建分区、格式化分区、创建挂载点以及临时和永久挂载分区的步骤
本文介绍了在 CentOS 7 中如何对未分配的大容量硬盘进行分区和挂载。通过具体案例,详细说明了使用 `fdisk` 创建分区、格式化分区、创建挂载点以及临时和永久挂载分区的步骤。此外,还分享了一些实践经验,帮助读者更好地管理和优化磁盘空间。
1286 8
|
存储 Linux 数据安全/隐私保护
【CentOS 7】深入指南:使用LVM和扩展文件系统增加root分区存储容量
通过上述步骤,您可以在 CentOS 7 系统中使用 LVM 和扩展文件系统来增加 root 分区的存储容量。这种方法不仅灵活,还能在不中断系统运行的情况下扩展存储空间,非常适合生产环境。请确保在操作前备份重要数据,并仔细执行每一步骤,以确保系统稳定和数据安全。
1272 6
|
存储 Linux
挂在mount报错can't read superblock修复过程
`can't read superblock`错误表明存在文件系统或硬件问题,解决这类问题需要先从软件层面尝试修复,无效时再考虑硬件替换。值得注意的是,数据备份对于防范这类突发故障至关重要,应定期进行数据备份,以最大限度减少数据丢失风险。
8668 3

热门文章

最新文章