一.lvm基本概念及管理
1.lvm
LVM全名是Logical volume Manager,即逻辑卷管理器。LVM的做法是将几个物理的分区(或磁盘)通过软件的组合成为一块看起来是独立的大磁盘(vg),然后再将这块大磁盘再经过分成可以使用的分区(lv),最终就可以挂载使用了。
2.pv,vg,lv的含义及之间的联系
物理存储介质:指系统的物理存储设备----->磁盘,如,/dev/vda,/dev/vdb等是存储系统最底层的存储单元
物理卷(PV):通常一个分区或者一个硬盘就可以建立一个物理卷,物理卷的最小单位是PE,一般默认是4MB
卷组(VG):是由一个或多个物理卷所组成的存储池,在卷组上能创建一个或多个逻辑卷
逻辑卷(LV):类似于非LVM的系统中的硬盘分区,建立在卷组之上,是一个标准的块设备,在逻辑卷之上可以建立文件系统。
可以做一个设想理解以上三者的关系:如果把PV比做地球的一个板块,VG则是一个地球,因为地球是由多个版块组成的,那么在地球上划分一个区域并标记为亚洲,则亚洲就相当于一个LV。
3.相关命令及含义
pv ##物理卷:被lv命令处理过的物理分区
vg ##物理卷组:被组装到一起的物理卷
pe ##图里扩展:lvm设备的最小存储单元,lvm是pe的整数倍
lvm ##逻辑卷:直接使用的设备,可以增大缩减并保持原有的数据不变
4.lvm的优点
允许动态的给一个文件系统分配更多的空间
二.LVM的建立
1.准备工作:
(1).为了可以更直观的看到pv,vg,lv的变化可以用监控命令监控
watch -n 1 'pvs;echo====;vgs;echo====;lvs;echo====;df -h /mnt/'
(2).
fdisk /dev/vdb ##更改vdb5和vdb6的分区标签为8e,即LVM
2.lvm的建立
pvcreate /dev/vdb5 ##创建vdb5物理卷
pvcreate /dev/vdb6 ##创建vdb6物理卷
vgcreate vg0 /dev/vdb5 ##创建vg0物理卷组,并添加vdb5
vgextend vg0 /dev/vdb6 ##添加vdb6到vg0物理卷组
lvcreate -L 500M -n lv0 vg0 ##从物理卷组vg0中取出500M,放入lv0物理扩展中
mkfs.xfs /dev/vg0/lv0 ##格式化lv0
mount /dev/vg0/lv0 /mnt ##挂载lv0道/mnt下
三.lvm的拉伸与缩减
1.xfs文件系统的拉伸
注:xfs文件系统只可以被拉伸,不可缩减
lvextend -L 800M /dev/vg0/lv0 ##改变lv设备大小为800M
xfs_growfs /dev/vg0/lv0 ##格式化扩展出来的部分
2.ext文件系统
(1)拉伸
umount /mnt ##卸载
mkfs.ext4 /dev/vg0/lv0 ##格式化文件系统为ext4
mount /dev/vg0/lv0 /mnt/ ##挂载
lvextend -L 900M /dev/vg0/lv0 ##拉伸lv设备到900M
resize2fs /dev/vg0/lv0 ##拉伸文件系统和lv设备大小一致
(2)缩减
umount /mnt ##卸载
e2fsck -f /dev/vg0/lv0 ##查看最小可缩减到多少
lvreduce -L 500M /dev/vg0/lv0 ##缩减lv设备为500M
pvmove /dev/vdb5 /dev/vdb6 ##将/dev/vdb5正在使用的内存转移到/dev/vdb6
vgreduce vg0 /dev/vdb5 ##缩减vg0
pvremove /dev/vdb5 ##删除闲置分区
注:
在缩减vg0的时候会遇到这个问题 Physical volume “/dev/vdb5” still in use
显示/dev/vdb5正在使用中,因此可以用
pvmove /dev/vdb5 /dev/vdb6 将/dev/vdb5的正在使用中的转移到/dev/vdb6中,将/dev/vdb5恢复为空的状态然后就可以顺利缩减vg0了。
(3)快照
lvm的快照功能可以将某一时刻的信息记录到快照区中,因此,可以利用这一点对数据做完全备份。而后,新提交的数据可以利用二进制日志文件来做增量备份和还原。
umount /mnt/ ##卸载
lvcreate -L 50M -n /dev/vg0/lv_ab -s /dev/vg0/lv0 ##建立lv_ab为50M
mount /dev/vg0/lv_ab /mnt/ ##挂载快照
四.LVM的删除
umount /mnt
lvremove /dev/vg0/lv_ab ##删除lv0快照
lvremove /dev/vg0/lv0 ##删除lv0
vgremove vg0 ##删除vg0
pvremove /dev/vdb6 ##删除pv下的/dev/vdb6
pvremove /dev/vdb7
fdisk /dev/vdb ##删除分区