智传网优云课堂,专注分享IT技术
与IT技术爱好者一起共同学习进步

Linux LVM实战案例配置图文详解(含扩容缩容管理)

前言

本文将列举最常用的LVM磁盘管理案例,分2个案例4种场景,涵盖最常用的使用案例,希望能帮助读者能很好理解LVM的原理、操作及使用时的注意点。

案例1:目前硬盘的空间不足,原硬盘的根分区是LVM分区。想通过加新硬盘的方式,扩展原来根分区的大小。即把新加硬盘的空间加入到原来的根分区。

Step1:在加硬盘之前先查看硬盘资源情况:

执行lsblk可以看到vda2是物理分区,vda2使用了LVM逻辑分区,分成了两个分区,一个swap,一个是根分区。

[root@zcwyou ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 252:0 0 240G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 39G 0 part
├─centos-root 253:0 0 35.1G 0 lvm /
└─centos-swap 253:1 0 3.9G 0 lvm [SWAP]

查看当前硬盘分区情况

执行df -TH可以看到根分区使用了xfs文件系统,物理分区vda1挂载到/boot,同样使用xfs文件系统

[root@zcwyou ~]# df -TH

Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 38G 940M 37G 3% /
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 8.9M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/vda1 xfs 1.1G 150M 914M 15% /boot
tmpfs tmpfs 398M 0 398M 0% /run/user/0

查看当前分区与挂载点

执行parted -l可以看到磁盘vda的分区情况

[root@zcwyou ~]# parted -l

Model: Virtio Block Device (virtblk)
Disk /dev/vda: 258GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number Start End Size Type File system Flags
1 1049kB 1075MB 1074MB primary xfs boot
2 1075MB 42.9GB 41.9GB primary lvm

查看当前分区与文件系统

Step2:加新硬盘后查看硬盘资源情况:

执行lsblk可以看到新硬盘vdb

[root@zcwyou ~]# lsblk 

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 252:0 0 240G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 39G 0 part
├─centos-root 253:0 0 35.1G 0 lvm /
└─centos-swap 253:1 0 3.9G 0 lvm [SWAP]
vdb 252:16 0 60G 0 disk

查看新硬件连接情况

执行parted -l可以看到新硬盘vdb

[root@zcwyou ~]# parted -l

Error: /dev/vdb: unrecognised disk label
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 64.4GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:

使用parted查看新硬盘连接情况
使用parted查看新硬盘连接情况

Step3:使用fdisk给新硬盘分区(可选):

[root@zcwyou ~]# fdisk /dev/vdb

Command (m for help): n 输入n表示建立新分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p 输入p表示建立主分区,MBR主分区最多4个
Partition number (1-4, default 1): 直接回车使用默认即可,表示从最可用低值开始
First sector (2048-125829119, default 2048): 扇区开始的位置,直接回车使用默认即可
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-125829119, default 125829119): 扇区结束的位置,直接回车使用剩下的所有空间。
Using default value 125829119
Partition 1 of type Linux and of size 60 GiB is set

Command (m for help): t 输入t表示修改分区的系统ID
Selected partition 1
Hex code (type L to list all codes): 8e输入8e表示修改分区的系统ID为LVM
Changed type of partition ‘Linux’ to ‘Linux LVM’

Command (m for help): w 输入w表示保存分区信息
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

使用fdisk给新硬盘分区,界面如下:

使用fdisk给新硬盘分区

Step4:加入原PV组:

扫描pv,看到PV组的成员以及VG组的名字

[root@zcwyou ~]# pvscan

PV /dev/vda2 VG centos lvm2 [<39.00 GiB / 4.00 MiB free]

扫描当前LVM组的PV

扫描vg,看到vg组名字为centos

[root@zcwyou ~]# vgscan

Reading volume groups from cache.
Found volume group “centos” using metadata type lvm2

扫描当前系统中的vg组情况
扫描当前系统中的vg组情况
图中的组名为cl,根据自己的环境中的实际情况进行调整。

如果没有执行Step3,则把整个vdb加入PV组:

[root@zcwyou ~]# pvcreate /dev/vdb

如果执行了Step3,则把vdb1加入PV组

[root@zcwyou ~]# pvcreate /dev/vdb1

因为刚刚分区了,有了vdb1,所以可以把该分区加入到pv组中。

新分区成功加入PV组

检查

[root@zcwyou ~]# pvscan

PV /dev/vda2 VG centos lvm2 [<39.00 GiB / 4.00 MiB free]
PV /dev/vdb1 lvm2 [<60.00 GiB]

扫描pv情况
扫描pv情况

查询pv的信息

[root@zcwyou ~]# pvdisplay

查询pv的信息

如果要删除物理卷,执行命令:

[root@zcwyou ~]# pvremove /dev/vdb1

Step5:加入原VG组:

加入VG组

[root@zcwyou ~]# vgextend centos /dev/vdb1

把vdb1加入原VG组
把vdb1加入原VG组

注意,图中的VG组为cl,根据自己的实际情况自行调整

检查,留意空间是否变大了:

[root@zcwyou ~]# vgdisplay

留意空闲的空间
Free PE / Size XXXX / XXX GiB

检查vg组是否更新
检查vg组是否更新

从VG组删除:

[root@zcwyou ~]# vgreduce centos /dev/vdb1

Step6:扩展LV卷

查看原有的LV名字,可以看到一个LV名为root,一个LV名为swap:

[root@zcwyou ~]# lvs

LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao—- <35.12g
swap centos -wi-ao—- <3.88g

使用lvs命令查询当前lv信息
使用lvs命令查询当前lv信息

以扩展LV卷为例:

变更LV逻辑卷的大小三种方式,只需要采用其中一种就行:

  1. 定义逻辑卷最终大小:
[root@zcwyou ~]# lvresize -L 40g /dev/centos/root
  1. 定义逻辑卷要添加减少的大小:
[root@zcwyou ~]# lvresize -L +20g /dev/centos/root
  1. 把vg组剩下所有可用的空间加入LV卷
[root@zcwyou ~]# lvresize -l +100%FREE /dev/centos/root

把vg组剩下所有可用的空间加入LV卷

Step7:检查磁盘错误,前提是必须先卸载文件系统,对于根分区,不能在线执行此命令:

如果原来的文件系统是EXT2/3/4,执行以下指令

[root@zcwyou ~]# e2fsck -f /dev/centos/root

对于正在挂载的文件系统,则显示以下错误:

使用e2fsck检查磁盘错误
使用e2fsck检查磁盘错误

如果原来的文件系统是xfs,执行以下指令

[root@zcwyou ~]# xfs_ncheck /dev/centos/root

Step8:扩展文件系统大小:

如果原来的文件系统是EXT2/3/4,执行以下指令更新文件系统信息

[root@zcwyou ~]# resize2fs -f /dev/centos/root

如果原来的文件系统是xfs,执行以下指令更新文件系统信息

[root@zcwyou ~]# xfs_growfs /dev/centos/root

更新xfs文件系统信息
更新xfs文件系统信息

检查逻辑卷状态

[root@zcwyou ~]# lvdisplay

检查逻辑卷最新状态
检查逻辑卷最新状态

可以看到lv的容量已经更新了。

Step9:检查文件系统大小:

[root@zcwyou ~]# df -TH

Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 103G 941M 102G 1% /

检查调整过后的文件系统大小
检查调整过后的文件系统大小

可以看到根分区的大小已经成功扩展!

接下来我们看看其他案例

案例2:目前硬盘的空间充足,但原分区划分不合理。比如根分区小,不够用。/home分区过大过剩。

前提条件:
根分区和/home分区都是LVM。并且/home不能是XFS文件系统,因为XFS不支持缩小空间。
系统可以重启

场景1:假设/home的文件系统是XFS或者/home里的资料已经做好了安全备份,这时可以直接把/home分区删除。注意,此方法需要重启系统。

Step1:修改fstab配置

[root@zcwyou ~]# df -TH

Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 54G 939M 53G 2% /
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 8.9M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos-home xfs 199G 34M 199G 1% /home
/dev/vda1 xfs 1.1G 150M 915M 15% /boot
tmpfs tmpfs 398M 0 398M 0% /run/user/0

编辑/etc/fstab,

[root@zcwyou ~]# vi /etc/fstab

删除关于/home的行,

如果不会vi命令,执行以下命令一键删除关于/home的行

sed -i '/home/d' /etc/fstab

然后重启系统

[root@zcwyou ~]# reboot

Step2:删除LV

重启后:

[root@localhost ~]# df -TH /home/

Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 54G 940M 53G 2% /

可以看到现在的/目录是挂在/centos-root上的,跟/目录属于同一分区。

扫描LV

[root@localhost ~]# lvs

LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-a—– 20.00g
root centos -wi-ao—- 50.00g
swap centos -wi-ao—- <3.88g

记下VL名称与VG名称。

删除对应的LV

[root@zcwyou ~]# lvremove /dev/centos/home

删除LV后,应该可以得到空闲的VG空间

[root@zcwyou ~]# vgdisplay

Free PE / Size 42271 / 165.12 GiB

Step3:扩展LV卷

查看原有的LV名字,可以看到一个LV名为root,一个LV名为swap:

[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao—- <35.12g
swap centos -wi-ao—- <3.88g

以扩展LV卷为例:

变更LV逻辑卷的大小三种方式,只需要采用其中一种就行:

  1. 定义逻辑卷最终大小:
[root@zcwyou ~]# lvresize -L 40g /dev/centos/root
  1. 定义逻辑卷要添加减少的大小:
[root@zcwyou ~]# lvresize -L +20g /dev/centos/root
  1. 把vg组可用的空间加入LV卷
[root@zcwyou ~]# lvresize -l +100%FREE /dev/centos/root

Step4:检查磁盘错误,前提是必须先卸载文件系统,对于根分区,不能在线执行此命令:

如果原来的文件系统是EXT2/3/4,执行以下指令

[root@zcwyou ~]# e2fsck -f /dev/centos/root

如果原来的文件系统是xfs,执行以下指令

[root@zcwyou ~]# xfs_ncheck /dev/centos/root

Step5:扩展文件系统大小:

如果原来的文件系统是EXT2/3/4,执行以下指令更新文件系统信息

[root@zcwyou ~]# resize2fs -f /dev/centos/root

如果原来的文件系统是xfs,执行以下指令更新文件系统信息

[root@zcwyou ~]# xfs_growfs /dev/centos/root

检查逻辑卷状态

[root@zcwyou ~]# lvdisplay

Step6:检查文件系统大小:

[root@zcwyou ~]# df -TH

Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 253G 940M 252G 1% /

场景2:假设/home的文件系统是EXT2/3/4,原理是把/home的分区缩小,/分区增大。/home和/分区必须是LVM分区。

Step1:前期准备

[root@zcwyou ~]# df -TH

Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 43G 939M 42G 3% /
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 8.9M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos-home ext4 207G 63M 196G 1% /home
/dev/vda1 xfs 496M 141M 355M 29% /boot
tmpfs tmpfs 398M 0 398M 0% /run/user/0

可以看到根目录/的空间很小,/home的空间是207G,并且/home的文件系统是ext系列的,支持LVM缩小。如果是XFS,则不支持缩小。

修改fstab配置

[root@zcwyou ~]# vi /etc/fstab

注释掉/home的行,即前面加#号
#/dev/mapper/centos-home /home ext4 defaults 1 2

重启系统

[root@zcwyou ~]# reboot

Step2:检查磁盘错误,前提是必须先卸载文件系统,对于根分区,不能在线执行此命令:

查看LVM的基本情况:

[root@zcwyou ~]# lvs

LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-ao—- <195.53g
root centos -wi-ao—- 40.00g
swap centos -wi-ao—- 4.00g

记下LV名称和VG名称

[root@zcwyou ~]# e2fsck -f /dev/centos/home

Step3:缩小文件系统大小和LV大小:

缩小文件系统,更新文件系统信息

[root@zcwyou ~]# resize2fs /dev/centos/home 10g

减少LV大小

[root@zcwyou ~]# lvresize -L 10g /dev/centos/home

编辑/etc/fstab

[root@zcwyou ~]# vi /etc/fstab

把刚刚加入的#号删除
/dev/mapper/centos-home /home ext4 defaults 1 2

重新挂载文件系统

[root@zcwyou ~]# mount -a

检查调整后的文件系统,看到9.9G

[root@zcwyou ~]# df -TH

Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 43G 939M 42G 3% /
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 8.9M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/vda1 xfs 496M 141M 355M 29% /boot
tmpfs tmpfs 398M 0 398M 0% /run/user/0
/dev/mapper/centos-home ext4 11G 38M 9.9G 1% /home

Step4:扩展LV卷

查看原有的LV名字,可以看到一个LV名为root,一个LV名为swap:

[root@zcwyou ~]# lvs

LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao—- <35.12g
swap centos -wi-ao—- <3.88g

[root@zcwyou ~]# vgdisplay

看到空闲空间
Free PE / Size 47495 / <185.53 GiB

以扩展LV卷为例:

变更LV逻辑卷的大小三种方式,只需要采用其中一种就行:

  1. 定义逻辑卷最终大小:
[root@zcwyou ~]# lvresize -L 40g /dev/centos/root
  1. 定义逻辑卷要添加减少的大小:
[root@zcwyou ~]# lvresize -L +20g /dev/centos/root
  1. 把vg组可用的空间加入LV卷
[root@zcwyou ~]# lvresize -l +100%FREE /dev/centos/root

Step5:检查磁盘错误,前提是必须先卸载文件系统,对于根分区,不能在线执行此命令:

如果原来的文件系统是EXT2/3/4,执行以下指令

[root@zcwyou ~]# e2fsck -f /dev/centos/root

如果原来的文件系统是xfs,执行以下指令

[root@zcwyou ~]# xfs_ncheck /dev/centos/root

Step6:扩展文件系统大小:

如果原来的文件系统是EXT2/3/4,执行以下指令更新文件系统信息

[root@zcwyou ~]# resize2fs -f /dev/centos/root

如果原来的文件系统是xfs,执行以下指令更新文件系统信息

[root@zcwyou ~]# xfs_growfs /dev/centos/root

检查逻辑卷状态

[root@zcwyou ~]# vgdisplay

看到空闲空间为0
Free PE / Size 0 / 0

Step7:检查文件系统大小:

[root@zcwyou ~]# df -TH

Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 243G 940M 242G 1% /

场景3:针对KVM虚拟机,把虚拟机关机后对原硬盘扩充,重新开机后,进入系统使用fdisk创建一个新分区

Step1:创建新分区:

[root@zcwyou ~]# fdisk /dev/vda

Command (m for help): n 输入n表示建立新分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p 输入p表示建立主分区,MBR主分区最多4个
Partition number (3-4, default 3): 直接回车使用默认即可,表示从最可用低值开始
First sector (2048-125829119, default 20480): 扇区开始的位置,直接回车使用默认即可
Using default value 20480
Last sector, +sectors or +size{K,M,G} (2048-125829119, default 125829119): 扇区结束的位置,直接回车使用剩下的所有空间。
Using default value 125829119
Partition 3 of type Linux and of size 60 GiB is set

Command (m for help): t 输入t表示修改分区的系统ID
Selected partition 1
Hex code (type L to list all codes): 8e输入8e表示修改分区的系统ID为LVM
Changed type of partition ‘Linux’ to ‘Linux LVM’

Command (m for help): w 输入w表示保存分区信息
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Step2:查看新分区:

[root@zcwyou ~]# lsblk

应该可以看到类似于标识为vda3的新分区,并且没有挂载点。

Step3:加入原PV组:

扫描pv,看到PV组的成员以及VG组的名字

[root@zcwyou ~]# pvscan

PV /dev/vda2 VG centos lvm2 [<39.00 GiB / 4.00 MiB free]

扫描vg,看到vg组名字为centos

[root@zcwyou ~]# vgscan

Reading volume groups from cache.
Found volume group “centos” using metadata type lvm2

把vdb3加入PV组

[root@zcwyou ~]# pvcreate /dev/vdb1

检查

[root@zcwyou ~]# pvscan

PV /dev/vdb3 lvm2 [<60.00 GiB]

[root@zcwyou ~]# pvdisplay

如果要删除物理卷,执行命令:

[root@zcwyou ~]# pvremove /dev/vdb3

Step4:加入原VG组:

加入VG组

[root@zcwyou ~]# vgextend centos /dev/vdb1

检查:

[root@zcwyou ~]# vgdisplay

留意空闲的空间
Free PE / Size XXXX / XXX GiB

从VG组删除:

[root@zcwyou ~]# vgreduce centos /dev/vdb1

Step5:扩展LV卷

查看原有的LV名字,可以看到一个LV名为root,一个LV名为swap:

[root@zcwyou ~]# lvs

LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao—- <35.12g
swap centos -wi-ao—- <3.88g

以扩展LV卷为例:

变更LV逻辑卷的大小三种方式,只需要采用其中一种就行:

  1. 定义逻辑卷最终大小:
[root@zcwyou ~]# lvresize -L 40g /dev/centos/root
  1. 定义逻辑卷要添加减少的大小:
[root@zcwyou ~]# lvresize -L +20g /dev/centos/root
  1. 把vg组剩下所有可用的空间加入LV卷
[root@zcwyou ~]# lvresize -l +100%FREE /dev/centos/root

Step6:检查磁盘错误,前提是必须先卸载文件系统,对于根分区,不能在线执行此命令:

如果原来的文件系统是EXT2/3/4,执行以下指令

[root@zcwyou ~]# e2fsck -f /dev/centos/root

如果原来的文件系统是xfs,执行以下指令

[root@zcwyou ~]# xfs_ncheck /dev/centos/root

Step7:扩展文件系统大小:

如果原来的文件系统是EXT2/3/4,执行以下指令更新文件系统信息

[root@zcwyou ~]# resize2fs -f /dev/centos/root

如果原来的文件系统是xfs,执行以下指令更新文件系统信息

[root@zcwyou ~]# xfs_growfs /dev/centos/root

检查逻辑卷状态

[root@zcwyou ~]# lvdisplay

Step8:检查文件系统大小:

[root@zcwyou ~]# df -TH

Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 103G 941M 102G 1% /

总结:善于利用LVM,能灵活按需求调整分区大小,但请注意,调整分区有大风险,调整前请备好数据。

赞(1)
未经允许不得转载:Linux入门学习到精通 » Linux LVM实战案例配置图文详解(含扩容缩容管理)
分享到: 更多 (0)

学习QQ群:557371664

关注微信公众号自助视频学习

评论 抢沙发

评论前必须登录!