版权声明:本文为博主 丶川江子 原创文章
LVM逻辑卷基本概念
1、磁盘分区的缺点:
没有备份功能 ------> 诞生raid来解决
无法扩容 ------> 诞生逻辑卷来解决
性能读写io取决于硬盘本身
2、为什么要使用lvm逻辑卷
逻辑卷解决了分区无法扩容的问题
3、LVM逻辑卷的机制
(1)、先确定可以使用的磁盘或分区
(2)、将硬盘拆分成一个个小的块PE(块大小默认为4M,可以修改)
(3)、然后将这些块组成一个集合(vg卷组)
(4)、从这个集合中取所需大小的块数
PV(物理卷):将所选的磁盘或分区进行分块(PE)
VG(卷组): 将所选的磁盘或分区分块组合成一个卷组
LV(逻辑卷):从指定的卷组中获取大小并且取名
注意:如果需要对分区创建逻辑卷,则需要修改分区的类型为8e
#安装lvm环境
yum install lvm2
systemctl start lvm2-lvmetad.service
systemctl start lvm2-lvmetad.socket
#查看有几块硬盘
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 899.1G 0 part /
└─sda3 8:3 0 31.9G 0 part [SWAP]
sdb 8:16 0 931.5G 0 disk
sdc 8:32 0 931.5G 0 disk
#对sdb这块硬盘分2个区,分别500G
fdisk /dev/sdb # 依次输入:p查看当前分区、 d删除当前分区、 n新建分区(回城两次选择默认,分区大小分配输入一半500G)、 p再次查看是否完成分区、 w保存分区、
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 899.1G 0 part /
└─sda3 8:3 0 31.9G 0 part [SWAP]
sdb 8:16 0 931.5G 0 disk
├─sdb1 8:33 0 465.8G 0 part
└─sdb2 8:34 0 465.8G 0 part
sdc 8:32 0 931.5G 0 disk
#创建物理卷
pvcreate /dev/sdb1 /dev/sdb2
#查看物理卷,查看详细信息命令:pvdisplay
pvs
#创建卷组,vg为卷组名称
vgcreate vg /dev/sdb1 /dev/sdb2
#查看卷组,查看详细信息命令:vgdisplay
vgs
#需要LV使用整个VG,可首先用vgdisplay,查找Total PE值,然后在运行lvcreate时指定
vgdisplay vg |grep "Total PE"
Total PE 238466
#建立逻辑卷,-n逻辑名称,vg上面创建的卷组的名称
lvcreate -l 238466 -n lvm vg
#查看逻辑卷
lvs
#格式化文件系统为ext4类型
mkfs.ext4 /dev/mapper/vg-lvm
#查看逻辑卷UUID,写入开机挂载/etc/fstab配置文件
blkid /dev/mapper/vg-lvm
vim /etc/fstab
#挂载上目录
mount /dev/mapper/vg-lvm /data
#查看挂载情况
df -Th
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 899.1G 0 part /
└─sda3 8:3 0 31.9G 0 part [SWAP]
sdb 8:32 0 931.5G 0 disk
├─sdb1 8:33 0 465.8G 0 part
│ └─vg_lvm 252:0 0 931.5G 0 lvm /data
└─sdb2 8:34 0 465.8G 0 part
└─vg_lvm 252:0 0 931.5G 0 lvm /data
sdc 8:16 0 931.5G 0 disk
#lvm逻辑卷扩容,将sdc硬盘扩容到lvm
fdisk /dev/sdc # 依次输入:p查看当前分区、 d删除当前分区、 n新建分区(回车三次选择默认,默认所有容量一个分区)、 p再次查看是否完成分区、 w保存分区
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 899.1G 0 part /
└─sda3 8:3 0 31.9G 0 part [SWAP]
sdb 8:32 0 931.5G 0 disk
├─sdb1 8:33 0 465.8G 0 part
│ └─vg_lvm 252:0 0 931.5G 0 lvm /data
└─sdb2 8:34 0 465.8G 0 part
└─vg_lvm 252:0 0 931.5G 0 lvm /data
sdc 8:16 0 931.5G 0 disk
└─sdc1 8:17 0 931.5G 0 part
#将/dev/sdc1扩容到vg卷组
vgextend vg /dev/sdc1
#查看物理卷,查看详细信息命令:pvdisplay
pvs
#查看卷组,查看详细信息命令:vgdisplay
vgs
#lvm扩容全部的vg卷组
lvextend -l +100%free -r /dev/mapper/vg-lvm
#再次查看物理卷和卷组
pvs && vgs
#重新刷新应用总容量
resize2fs /dev/mapper/vg-lvm
#如下就扩容成功
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 899.1G 0 part /
└─sda3 8:3 0 31.9G 0 part [SWAP]
sdb 8:32 0 931.5G 0 disk
├─sdb1 8:33 0 465.8G 0 part
│ └─vg_lvm 252:0 0 1.8T 0 lvm /data
└─sdb2 8:34 0 465.8G 0 part
└─vg_lvm 252:0 0 1.8T 0 lvm /data
sdc 8:16 0 931.5G 0 disk
└─sdc1 8:17 0 931.5G 0 part
└─vg_lvm 252:0 0 1.8T 0 lvm /data
df -Th /data
#lvm逻辑卷的缩减,移除硬盘分区/dev/sdc1
#取消lvm挂载点
umount /data
#检查磁盘
e2fsck -f /dev/mapper/vg-lvm
#如上sdc1硬盘分区是931.5G,则缩减931.5G文件系统,提示需要先磁盘检查(如果不加-,则为缩减至931.5G)
resize2fs /dev/mapper/vg-lvm -931.5G
#缩减931.5G逻辑卷,此处缩减大小必须与文件系统缩减大小保持一致,否则数据出问题
lvreduce -L -931.5G /dev/mapper/vg-lvm
#从vg中移除硬盘分区并检查
vgreduce vg /dev/sdc1
vgs
#从物理卷中移除硬盘分区并检查
pvreemove /dev/sdc1
pvs
#挂载目录查看
mount /dev/mapper/vg-lvm /data
df -Th /data
#lvm逻辑卷的删除
若要移除lvm,则按照创建的过程反向操作,即:
#1、取消挂载点
umount /data
df -Th /data
#2、移除逻辑卷lv并检查
lvremove /dev/mapper/vg-lvm
lvs
#3、移除卷组vg并检查
vgremove vg
vgs
#4、移除物理卷pv并检查
pvreemove /dev/sdb1 /dev/sdb2 /dev/sdc1
pvs
#5、删除分区(可无)
fdisk /dev/sdb1 /dev/sdb2 /dev/sdc1