什么是逻辑卷?
LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。
LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。举例如我增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上层服务的是以逻辑卷的方式。
LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。
LVM的技术需求与产生背景
企业日益变化的存储需求使得传统的磁盘分区存储显得不够灵活,磁盘空间总有一天会被数据填满,那该怎么办呢?
这个时候逻辑卷盘LVM的诞生也就顺时改进了存储技术,也大大优化在线存储技术实现磁盘在线动态管理,降低了企业的管理成本。
基本逻辑卷LVM的管理概念:
PV(Physical Volume)- 物理卷
即物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备。
VG(Volumne Group)- 卷组
卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。
LV(Logical Volume)- 逻辑卷
逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。
PE(Physical Extent)- 即物理块
LVM 默认使用4MB的PE区块,而LVM的LV最多仅能含有65534个PE (lvm1 的格式),因此默认的LVM的LV最大容量为4M*65534/(1024M/G)=256G。PE是整个LVM 最小的储存区块,也就是说,其实我们的资料都是由写入PE 来处理的。简单的说,这个PE 就有点像文件系统里面的block 大小。所以调整PE会影响到LVM 的最大容量!不过,在CentOS 6.x 以后,由于直接使用 lvm2 的各项格式功能,因此这个限制已经不存在了。
现在开始我们的实验环境搭配:
我们逻辑卷的搭建全部在虚拟机上实现,如果有什么不同的配置选项,建议还是以生产环境为主要验证对象。
虚拟机是:VMware Workstation 12
系统是:Centos6.8 | LVM版本:lvm2.2
磁盘我们采用一个分区和一个整块硬盘,容量大小分区10G,磁盘20G
(因为我们的实验环境是一个分区和一整块硬盘。但对于raid设备实现逻辑卷,生产环境中应该是比较少用,所以我们不介绍),相信您学完此方法用raid来实现逻辑卷管理,自然不在话下。
注意:分出单个磁盘分区,需要加卷标,如果是一整块硬盘就不用加卷标直接格式化就行。
哦,对了。我先要删除逻辑卷的实验环境。这个删除有意思,完全是反着来的。
接下来第一步;对单个硬盘分出一个分区 (简单磁盘分区,命令fdisk ,一大步)
第一个磁盘分区我们分完了,看看小伙伴们,分区是不是很简单呢...
接下来第二步;独立一块硬盘我们不用分区直接拿来创建物理卷就行
把刚分好的分区与单个硬盘一起创建为物理卷(磁盘的名称以自己系统检测出来的为准我这里是sdb,sdc)
[[email protected] ~]#pvcreate /dev/sd{b1,c} (创建物理卷,命令pvcreate ,二大步)
创建成功,并且用pvs看格式为lvm2
接下来第三步;创建卷组
把/dev/sdb1和/dev/sdc组合创建为一个卷组,卷组名为vg0
[[email protected] ~]# vgcreate vg0 /dev/sd{b1,c}(创建卷组,命令vgcreate ,三大步)
创建成功,并且用vgs查看VG对应的卷组名是vg0,显示PV卷有两个,共30GB的空间容量
接下来第四步;创建逻辑卷
把新增的卷组容量加入逻辑卷中,逻辑卷名为lv0
[[email protected] ~]# lvcreate -n lv0 -L 10G vg0 (创建逻辑卷,命令lvcreate ,四大步)
此命令的意思是:从vg0 中分出10G的空间给lv0使用
显示整个逻辑卷的详细信息 lvdisplay
接下来第五步;格式化逻辑卷
注意:我们是先创建完pv,vg和lvm之后再格式化为ext4文件系统,跟raid的格式化是反着来的。
[[email protected] ~]# mkfs.ext4 /dev/vg0/lv0 (格式化逻辑卷,命令mkfs.ext4,五大步)
接下来第六步;挂载逻辑卷(挂载逻辑卷之前要先把逻辑卷路径写入配置文件fstab)
vim /etc/fstab (挂载逻辑卷修改fstab文件,六大步1)
[[email protected] ~]# mount /dev/vg0/lv0 /mnt/lv0/ (挂载逻辑卷,六大步2)
注意;先要在创建挂载目录,用mkdir -p /mnt/lv0 ,(-p递归创建目录,妈的老跟我说基什么什么,记不住。)
到此基本算成功搭起了逻辑卷,往下就是一些简单修改测试了。不过您可以尝试reboot下看配置是否永久生效!
接下来第七步;在已挂载的逻辑卷内拷贝文件测试
拷贝文件测试的时候我老是cp不成功加-r也不成功,后来经过几次折腾忽然想起了别名alias。仿佛一语惊醒梦我中人,因为默认系统给cp命令做了一个别名,默认是cp -i选项。所以在复制文件不想提示就在cp别名前面加个注释就行。
拷贝文件测试与写入文件测试均不受影响,可正常执行
[[email protected] ~]# cd /mnt/lv0/ (在逻辑卷下测试文件,七大步)
[[email protected] lv0]# dd if=/dev/zero of=f1 bs=1M count=1024
接下来第八步;扩展逻辑卷(前提卷组有空间)
[[email protected] ~]# lvextend -L +10G /dev/vg0/lv0 (扩展逻辑卷,命令lvextend,八大步)
在lv0逻辑卷中原有的基础上增加了10G空间,原有10G+10G等于20G扩容成功
以上扩容逻辑卷可能存在磁盘数据不同步问题,实际已增加,但是不显示(我一次增加成功并显示)
如果新增空间没显示记得同步下;
resize2fs /dev/vg0/lv0 (只能同步ext系列文件系统)
接下来第九步;扩展卷组(前提卷物理卷有空间)
先把磁盘创建为物理卷
[[email protected]~]# pvcreate /dev/sdd (扩展卷组,命令vgextend,九大步)
我创建了一个20G的物理卷,原来逻辑卷是30G还剩10G
把物理卷加入卷组
[[email protected]~]# vgextend vg0 /dev/sdd
我对组加入了一个20G的物理卷,原来逻辑卷是30G还剩10G,增加后总共50G空间还剩30G空间
扩展卷组成功 (df命令是看当前系统已挂载文件系统信息)
注意:如果用df命令 查看文件系统大小,但实际扩容空间是不显示的。因为你增加的是空间容量并不是格式化后的文件系统容量,所以你需要执行第八步的同步命令来新增文件系统容量
[[email protected] ~]# resize2fs /dev/vg0/lv0
接下来第十步;缩减逻辑卷空间(前提必须离线操作) (缩减文件系统空间,命令resize2fs,十大步)
先卸载逻辑卷系统 umount /mnt/lv0
再缩减文件系统,先执行e2fsck -f命令检查文件系统信息
[[email protected] ~]# e2fsck -f /dev/vg0/lv0
[[email protected] ~]# resize2fs /dev/vg0/lv0 10G
[[email protected] ~]# lvreduce /dev/vg0/lv0 -L 10G
再挂载
到此逻辑卷卷缩减成功。
接下来第十一步;缩减卷组(前提必须离线操作) (缩减卷组空间,命令vgreduce,十一大步)
先卸载逻辑卷系统 umount /mnt/lv0,再查看pv信息
[[email protected] ~]# vgreduce vg0 /dev/sdd
将vg0组的sdd磁盘移除该组
查看vgs信息,空间少了
到此vg0组的空间缩减成功。
接下来第十二步最后一步;删除逻辑卷 (这个有意思,是把创建LVM的步骤反过来操作,十二大步)
正确执行以下四条命令,方可彻底删除逻辑卷,特别简单。
1,umount /mnt/lv0 (先把逻辑卷的lv0挂载取消)
2,lvremove /dev/vg0/lv0 (用lvremove 命令后面跟设备地址移除LV)
3,vgremove vg0 (用vgremove 加卷组名,移除vg0卷组)
4,pvremove /dev/sdb1 /dev/sdc /dev/sdd (移除所有PV物理卷)
到此结束整个测验。(有需要补充的可以留言,欢迎指正)
后面的关于逻辑卷快照的相关测验,后续奉上。学习太累了,睡觉困的一笔