Centos7 LVM空间转移

一、背景

安装了Centos7之后,发现root分区不够用,而大部分分区都在home。磁盘是通过LVM进行管理,可以在线将home分区缩减,并将root分区扩容。由于LVM的特性,逻辑卷扩容时不需要卸载分区,可以实现不停机扩容。

二、知识

1、LVM介绍

LVM 是一种可用在Linux内核的逻辑分卷管理器;可用于管理磁盘驱动器或其他类似的大容量存储设备。LVM独立于物理磁盘,可以实现存储空间的抽象化并在上面建立虚拟分区,可以更加简易地扩大和缩小分区,可以增删分区时无需担心某个物理硬盘上没有足够的连续空间,避免为正在使用的磁盘重新分区的麻烦。

LVM的基本组成如下:

物理卷 (PV)

一个可供存储LVM的块设备,也就是物理硬盘。如果新加入的一块硬盘要作为正在使用的分区的扩充,就需要先把硬盘创建成物理卷。

卷组 (VG)

物理卷的一个组,作为存放逻辑卷的容器。 不同硬盘的物理卷可以组成同一个卷组,然后可以把卷组的空间分配给逻辑卷,这样不同硬盘也可以被分配到同一个分区,并且可以动态的扩大和缩小。

逻辑卷 (LV)

“虚拟/逻辑卷”存放在一个卷组中并由物理块组成。是一个类似于物理设备的块设备,例如,你可以直接在它上面创建一个文件系统文件系统。

物理块 (PE)

一个卷组中最小的连续区域(默认为4 MiB),多个物理块将被分配给一个逻辑卷。你可以把它看成物理卷的一部分,这部分可以被分配给一个逻辑卷。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
`物理硬盘`

硬盘1 (/dev/sda):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|分区1 50GB (物理卷) |分区2 80GB (物理卷) |
|/dev/sda1 |/dev/sda2 |
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ __|

硬盘2 (/dev/sdb):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|分区1 120GB (物理卷) |
|/dev/sdb1 |
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|

`LVM逻辑卷`

卷组(Volume Group1) (/dev/MyVolGroup/ = /dev/sda1 + /dev/sda2 + /dev/sdb1):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|逻辑卷1 15GB |逻辑卷2 35GB |逻辑卷3 200GB |
|/dev/MyVolGroup/rootvol |/dev/MyVolGroup/homevol |/dev/MyVolGroup/mediavol |
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ __|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|

2、System Storage Manager介绍

System Storage Manager是一个用来管理各种文件系统的命令行工具,可以管理包括LVM、btrfs和加密卷等文件系统,可以简化存储管理。通过ssm可以自动完成lvm自动完成LVM的创建,文件系统创建和挂载。下面,我们通过ssm工具将home分区空间转移到root分区。

三、实践

1、查看分区情况

在root空间不够用时,笔者尝试过其他教程,将home空间缩小,其中的一部分给root,但是失败了,从资料3得知可能home的文件系统不支持缩减,故直接删除。

执行lsblk命令,查看磁盘分区,磁盘sda2被分成了三个逻辑卷,类型都是LVM,大部分磁盘空间都分给了home。

1
2
3
4
5
6
7
8
9
[root@master ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 300G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 299G 0 part
├─centos-root 253:0 0 50G 0 lvm /
└─centos-swap 253:1 0 11.8G 0 lvm [SWAP]
└─centos-home 253:1 0 237.18G 0 lvm /home
sr0 11:0 1 1024M 0 rom

如果/home下有数据,请按需备份,新装系统或无文件,可以直接删除。

2、通过System Storage Manager删除home分区,把空间增加到root里。

⭐安装System Storage Manager

1
yum -y install system-storage-manager

⭐查看分区

1
ssm list

发现root分区只有50G空间,home分区有237G空间。

⭐卸载home

1
umount /home

⭐删除逻辑卷home

1
ssm remove /dev/centos/home

⭐查看释放出来的空间

1
ssm list

home逻辑卷已经成功被删除,卷组centos有237.18G的空余,可以分配给root分区。

⭐将剩余空间全部加入root分区

1
ssm resize -s +100%FREE /dev/centos/root

root逻辑卷已经从50G增加到287.18G,由于此时操作的是LVM,文件系统并未更新分区信息,centos7还需要执行xfs_growfs同步文件系统。

⭐同步文件系统

1
xfs_growfs /dev/centos/root

⭐查看修改后的卷信息

1
ssm list

此时,home逻辑卷已经被删除,腾出的空间都增加到root逻辑卷,目标完成。由于home分区已经被删除,还需要修改/etc/fstab文件,将挂载home的一行注释或者删除掉。

⭐取消挂载home

1
vim /etc/fstab

将红框那一行注释或者删除,wq保存退出,大功告成。

三、资料

1、archlinux-文档:LVM_(简体中文)

2、哔哩哔哩-部分原理和操作:LInux LVM分区于应用详解

3、csdn:CentOS7 LVM管理 把/home空间转移给/