Bootstrap

linux之LVM逻辑卷管理

LVM(Logical Volume Manager:逻辑建管理)
 dm:将一个或多个底层快设备组织成一个逻辑设备的模块
     查看:/dev/mapper
     相关概念:
         PV:物理卷,指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备,是LVM的基本存储逻辑块
         VG:卷组,类似于非LVM系统中的物理磁盘,由一个或多个物理卷组成。可以在卷组上创建一个或多个LLV:逻辑卷,类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上
         PE:物理块,LVM设备最小的存储单元。每一个PV被划分为多个PE,默认4M
         
         PV、VG、LV三者的关系


             首先产生物理卷PV
             再将物理卷PV合并成为卷组VG
             最后从卷组VG中划分出多个逻辑卷LV直接使用
                 具体说明:
                     物理磁盘被格式化为PV,空间被划分为很多个PE
                     很多不同的PV组成了同一个VG,PV中的PE全部进入了VG的PE池中
                     LV是基于PE创建的,组成LV的PE可能来自不同的物理磁盘
                     LV可以直接格式化后挂在使用
                     LV的扩展与缩减实质上是增加与减少PE的数量,在此过程中不会丢失数据
     安装LVM
         首先确定系统中是否安装了LVM工具
             ~]#rpm -qa | grep lvm
     创建和管理LVM
         使用分区工具(如:fdisk等)创建LVM分区,方法和创建其他一般分区的方式是一样的,区别仅仅是LVM的分区类型为8e
                 创建2个分区(sdb1,sdb2)
                     将linux类型更改为8e:
                         t---8e
                         w保存
                 创建逻辑卷:
                     pvcreate /dev/sdb1 /dev/sdb2
                     pvs:查看PV的信息
                     pvdisplay:仔细查看PV信息
                 将新创建的两个分区/dev/sdb1和/dev/sdb2转化成物理卷
                创建卷组VG,并将刚才创建好的两个物理卷加入该卷组.可以看出默认PE大小为4MB,PE是卷组的最小存储单元.可以通过 –s参数修改大小。
                    vgcreate  vg /dev/sdb1 /dev/sdb2:卷组名称为vg,可以起别的名称
                    vgs:查看vg的信息
                    vgdisplay:查看详细信息
                从vg上分割1G给新的逻辑卷LV1:
                    lvcreate -L 1G -n lv1 vg
                    lvs
                格式化:(使用mkfs创建ext4文件系统)
                    mkfs.ext4 /dev/vg/lv1
                将创建好的文件系统挂在到/data1上(创建好后会在/dev/mapper生成软连接vg-lv1):
                    记得要创建/data1目录:
                        mkdir /data1
                        mount /dev/vg/lv1 /data1
                        dh -f:查看
                        ll /dev/vg/lv1:查看一下
                    便于服务器重启后自动挂载,需要将创建好的文件系统挂载信息添加到/etc/fstab里面,UUID可以通过blkid查询:
                        blkid(找/dev/mapper/vg-vl1)
                            UUID="739cd3f6-0da8-45a4-9fe4-87c4704ecdbf"
                        vim /etc/fstab
                            UUID="739cd3f6-0da8-45a4-9fe4-87c4704ecdbf" /data1 ext4 defaults 0 0
                    为了查看/etc/fstab是否设置正确,可以先卸载逻辑卷data1,然后使用mount -a使内核重新读取/etc/fstab,看能否自动挂载
                        umount /data1
                        mount -a
                        mount | grep data1
                逻辑卷lv1不够用了,该如何扩展
                    给逻辑卷增加空间并不会影响以前空间的使用,所以无需卸载文件系统,直接通过命令lvextend –L +500M /dev/vg/lv1或者lvextend –l 2.5G /dev/vg/lv1 给lv1加500M空间(lv1目前是2G空间)设置完成之后,记得使用resize2fs命令来同步文件系统。
                        lvextend -L +500M /dev/vg/lv1
                        lvs查看
                        resize2fs /dev/vg/lv1 同步
                        df -h查看文件系统
                卷组不够用了,该如何扩大卷组
                    重新从第二块硬盘上创建一个分区sdb3,具体操作步骤省略。并将创建好的分区加入到已经存在的卷组vgdata中。通过pvs命令查看是否成功。
                        vgextend vg /dev/sdb3:将创建好的分区加入到组vg中
                        pvs:查看
                若磁盘空间不足,如何减少逻辑卷空间释放给其他逻辑卷使用
                    减少逻辑卷空间:
                        先卸载逻辑卷lv
                        然后通过e2fsck命令检测逻辑卷上空余的空间
                        使用resize2fs将文件系统减少到700M
                        再使用lvreduce命令将逻辑卷减少到700M
                            注意:文件系统大小和逻辑卷大小一定要保持一致才行。如果逻辑卷大于文件系统,由于部分区域未格式化成文件系统会造成空间的浪费。如果逻辑卷小于文件系统,那数据就出问题了。
                        umount /data1
                        e2fsck -f /dev/mapper/vg-lv1
                        resize2fs /dev/mapper/vg-lv1  1G
                        lvreduce -L 700M /dev/vgdata/lv1
                        完成后就可以重新使用了:
                            mount /dev/vg/lv1  /data1
                            mount | grep data1
                如果某一块磁盘或者分区故障了如何将数据快速转移到相同的卷组其他的空间去
                    通过pvmove命令转移空间数据
                    通过vgreduce命令将即将坏的磁盘或者分区从卷组vgdata里面移除除去
                    通过pvremove命令将即将坏的磁盘或者分区从系统中删除掉
                        pvs查看
                        pvmove /dev/sdb1 /dev/sdb2
                        pvs查看
                        vgreduce vg /dev/sdb1
                        pvremove /dev/sdb1
                删除整个逻辑
                    先通过umount命令卸载掉逻辑卷lv1
                    修改/etc/fstab里面逻辑卷的挂载信息,否则系统有可能启动不起来
                    通过lvremove 删除逻辑卷lv1
                    通过vgremove 删除卷组vg
                    通过pvremove 将物理卷转化成普通分区
                        umount /dev/mapper/vg-lv1
                        lvremove /dev/vg/lv1
                        vgremove vg
                        pvremove /dev/sdb1 /dev/sdb2
                        删除完了,别忘了修改分区的id标识。修改成普通Linux分区即可

总结:LVM逻辑卷是Linux里面一个很棒的空间使用机制,因为分区在没有格式化的情况下是没有办法加大或者放小的。通过LVM可以将你的磁盘空间做到灵活自如

 

;