什么是lvm?
LVM(Logical Volume Manager)逻辑卷管理,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中。
首先介绍一下与lvm相关的几个词的关系:
pv 是物理卷,由物理分区处理过所得到的;
而,若干个物理卷 整合成一个物理卷组 vg;
从物理卷组划分出来的是 逻辑卷 lvm;
物理拓展 pe 是lvm的最小存储单元。
lvm的创建
实验开始之前,打造一个较纯的实验环境 :
1)删除vdb中的所有分区;
fdisk -l //查看是否vdb中的分区情况,如果有,fdisk /dev/vdb,删除所有的分区
2)解挂;
umount /mnt
3)修改文件内容
vim /etc/fstab //删除之前在文件中的操作
1、打开监控 :
watch -n 1 'pvs;vgs;lvs;df -h /mnt'
监控效果如图所示:
2、建立3个分区,大小分别为 1G;改变 id 为8e;
a . 建立3个1G的分区如图1所示:
b . 修改id为8e的方式如图2所示:
c . 修改完成的整体效果:
3、命令创建逻辑卷
[root@localhost ~]# pvcreate /dev/vdb1 //物理分区处理,初始化物理卷pv
[root@localhost ~]# vgcreate vg0 /dev/vdb1 //创建物理卷组vg0
[root@localhost ~]# lvcreate -L 300M -n lv0 vg0 //创建lv0逻辑卷
[root@localhost ~]# mkfs.xfs /dev/vg0/lv0 //格式化,为了使用lv0逻辑卷
[root@localhost ~]# mount /dev/vg0/lv0 /mnt //挂载
监控效果如下:
*注:我们可能在用df查看挂载情况时,发现不一样的地方
我明明挂载的是 /dev/vg0/lv0 ,为什么会出现下面的情况?*
其实这两个文件的性质是一样的,都指向了同一个地方;
lvm逻辑卷扩容拉伸
——xfs格式(拉伸)
[root@localhost ~]# pvcreate /dev/vdb2 //创建物理卷
[root@localhost ~]# vgextend vg0 /dev/vdb2 //将物理卷vdb2放在物理卷组vg0里
[root@localhost ~]# lvextend -L 1500M /dev/vg0/lv0 //扩容逻辑卷lv0到1500M,但是拉大的一部分没有被格式化
[root@localhost ~]# xfs_growfs /dev/vg0/lv0 //直接拉伸,而mkfs.xfs /dev/vg0/lv0是直接将整体拉伸
监控效果图:
—— ext4格式(拉伸和缩短)
——拉伸——
[root@localhost ~]umount /mnt //因为之前做xfs实验,所以先解挂
[root@localhost ~]mkfs.ext4 /dev/vg0/lv0 //改变格式为ext4
[root@localhost ~]# mount /dev/vg0/lv0 /mnt //挂载
[root@localhost ~]# mount //查看当前挂载情况,检查是不是成功修改为ext4格式
[root@localhost ~]# lvextend -L 1800M /dev/vg0/lv0 //扩容,修改的是文件系统
[root@localhost ~]# resize2fs /dev/vg0/lv0 //直接拉伸,类似于xfs格式的xfs_growfs命令,修改设备的大小
——缩减——
[root@localhost ~]#umount /mnt/ //解挂
[root@localhost ~]#e2fsck -f /dev/vg0/lv0 //扫描
[root@localhost ~]#resize2fs /dev/vg0/lv0 1000M //缩减文件系统
[root@localhost ~]#mount /dev/vg0/lv0 /mnt/ //挂载
[root@localhost ~]#lvreduce -L 1000M /dev/vg0/lv0 //缩减设备
设备移除
pvmove /dev/vdb1 /dev/vdb2 //数据移除,前提是2个设备当前都被占用,如果是闲置的设备,不用操作这一步
vgreduce vg0 /dev/vdb1 //将逻辑卷移出组lv0
pvremove /dev/vdb1
lvm快照
快照的作用主要用于数据备份与恢复。我们还可以利用快照进行实验测试,快照的损坏不影响其他设备的正常工作。
1)扩容
[root@localhost ~]#touch /mnt/westos{1..10}//创建10个文件,方便后期查看效果
[root@localhost ~]#pvcreate /dev/vdb1
[root@localhost ~]#vgextend vg0 /dev/vdb1 //因为此时设定的快照大小超过剩余空间,需要进行扩容操作
2)创建快照
[root@localhost ~]#lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0 //新建快照lv0backup,大小为50M
[root@localhost ~]#mount /dev/vg0/lvobackup /mnt/ //快照挂载
[root@localhost ~]#ls /mnt/ //查看/mnt下有没有westos的10个文件!
3)重新生成
[root@localhost ~]#rm -fr /mnt * //清空/mnt下的文件
[root@localhost ~]#umount /mnt/ //解挂
[root@localhost ~]#lvremove /dev/vg0/lv0backup //快照删除
[root@localhost ~]#lvcreate -L 50M -nlv0backup -s /dev/vg0/lv0 //重新生成快照
[root@localhost ~]#mount /dev/vg0/lv0backup /mnt/ //挂载
4)还原
[root@localhost ~]#umount /mnt //快照解挂
[root@localhost ~]#lvremove /dev/vg0/lv0backup //移除快照
[root@localhost ~]#umount /mnt //lv0解挂
[root@localhost ~]#lvremove /dev/vg0/lv0 //移除lv0
[root@localhost ~]#vgremove vg0 //移除物理卷组vg0
[root@localhost ~]#pvremove /dev/vdb{1..2} //移除vdb设备