应用场景:
随着公司的发展,数据增长较快,最初规划的磁盘容量不够用了弊端:
数据不是直接存放在硬盘上,而是在硬盘的上面又虚拟出来一层逻辑卷存放数据,故而增加了磁盘数据恢复的难度
物理卷(PV):把常规的块设备(硬盘,分区等可以读写数据的设备)通过pvcreate命令对其进行初始化,就成了物理卷
卷组(VG):把多个物理卷的容量组成一个逻辑整体,可以从里面灵活分配容量
逻辑卷(LV):从卷组中划分部分空间成为一个可以读写数据的逻辑单元。需要对其格式化然后挂载使用
创建lvm步骤:
a) 添加物理磁盘,创建物理卷
b) 创建卷组,将物理卷加入卷组
c) 在卷组中划分逻辑卷
d) 格式化逻辑卷
e) 挂载使用
//1.准备物理磁盘
[root@localhost ~]# lsblk |grep "sd[bcd]"
sdb 8:16 0 1G 0 disk
sdc 8:32 0 1G 0 disk
sdd 8:48 0 1G 0 disk
//1.将磁盘加入pv
[root@localhost ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
//检查pv创建情况
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm2 --- 1.00g 1.00g
//2.创建名为datavg的卷组
[root@localhost ~]# vgcreate datavg /dev/sdb
Volume group "datavg" successfully created
//检查卷组
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
datavg 1 0 0 wz--n- 1020.00m 1020.00m
//3.创建逻辑卷, 分配名称, 以及大小, 指定卷组
[root@localhost ~]# lvcreate -L 100M -n lv1 datavg
Logical volume "datalv1" created.
//检查逻辑卷
[root@localhost ~]# lvscan
ACTIVE '/dev/datavg/lv1' [100.00 MiB] inherit
//4.格式化文件系统
[root@localhost ~]# mkfs.xfs /dev/datavg/lv1
//挂载并使用
[root@localhost ~]# mkdir /lv1
[root@localhost ~]# mount /dev/datavg/lv1 /lv1/
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/mapper/datavg-lv1 97M 5.2M 92M 6% /lv1
//1.新硬盘加入pv
[root@localhost ~]# pvcreate /dev/sdc
2.使用vgextend扩展
[root@localhost ~]# vgextend datavg /dev/sdc
Volume group "datavg" successfully extended
[root@localhost ~]# vgreduce datavg /dev/sdb
Removed "/dev/sdb" from volume group "datavg"
//1.检查当前逻辑卷VG中PV使用情况
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb vg1 lvm2 a -- 2.00g 1.76g
/dev/sdc vg1 lvm2 a -- 2.00g 2.00g
//2.pvmove在线数据迁移至其他pv
[root@localhost ~]# pvmove /dev/sdb
/dev/sdb: Moved: 41.33%
/dev/sdb: Moved: 100.00%
//3.检查是否将sdb数据迁移至sdc
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb vg1 lvm2 a -- 2.00g 2.00g
/dev/sdc vg1 lvm2 a -- 2.00g 1.76g
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 2 2 0 wz --n- 1.88g 1.00g
1.扩展lv逻辑卷
//增加800M分配给逻辑卷 {注意: 800M +800M 不一样}
[root@localhost ~]# lvextend -L +800M /dev/datavg/lv1
//分配磁盘池中多少百分比给逻辑卷
[root@localhost ~]# lvextend -l +50%FREE /dev/datavg/lv1
2.扩展fs文件系统
//xfs扩容
[root@localhost ~]# xfs_growfs /dev/datavg/lv1
//ext扩容
[root@localhost ~]# resize2fs /dev/datavg/lv1
ext4
文件系统的逻辑卷裁剪容量首先自己创建一个1G的逻辑卷作为裁剪的对象
# lvcreate -n uplooking -L 1G finance
# mkfs.ext4 /dev/finance/uplooking
# mkdir -p /finance/uplooking
# mount /dev/finance/uplooking /finance/uplooking/
# cp /etc/host* /finance/uplooking/
1、如果已经挂载,必须先卸载
# umount /dev/finance/uplooking
2、裁剪容量,必须是先检测文件系统
# e2fsck -f /dev/finance/uplooking
# resize2fs /dev/finance/uplooking 512M
3、调整完毕后采取裁剪逻辑卷容量
# lvreduce -L 512M /dev/finance/uplooking
WARNING: Reducing active logical volume to 512.00 MiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce uplooking? [y/n]: y
4、强烈建议裁剪后,再次检测文件系统
# e2fsck -f /dev/finance/uplooking
5、挂载测试
如果能够挂载,一般说明裁剪成功,文件系统没有损坏
# mount /dev/finance/uplooking /mnt
...
/dev/mapper/finance-uplooking 472M 1.6M 435M 1% /mnt 而且文件系统容量被刷新了
缩减逻辑卷注意事项:
- 不能在线缩减,得先卸载;
- 确保缩减后的空间大小依然能存储原有的所有数据;
inance/uplooking /mnt
…
/dev/mapper/finance-uplooking 472M 1.6M 435M 1% /mnt 而且文件系统容量被刷新了
> **缩减逻辑卷注意事项:**
>
> 1. 不能在线缩减,得先卸载;
> 2. 确保缩减后的空间大小依然能存储原有的所有数据;
> 3. 在缩减之前应该先强行检查文件,以确保文件系统处于一致性状态。使用命令e2fsck -f /PATH/TO/LV