一、前言:
对Linux运维而言,在安装系统的时候,遇到的问题之一就是如何分区以及如何给分区划分合理的空间。如果不慎空间划分的少了,到时可能就会遇到分区空间不足,需要通过符号链接或者调整分区大小的工具来处理,但是这终究不是办法,不久后,你还会遇到同样的问题。
而LVM(逻辑卷管理程序)可以很好的帮助我们解决这些问题。
二、LVM简介:
欢迎LVM隆重登场,LVM是Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,目前稳定版为1.0.5,开发版LVM2,现在使用的基本都是LVM2
三、LVM原理:
LVM是建立在硬盘和分区之上的一个逻辑层,它会为文件系统屏蔽下层磁盘布局,提供一个抽象的盘卷,在该盘卷上建立文件系统。由此,LVM可以将多个物理磁盘组合成一个非常大的抽象的盘卷,然后再该盘卷上建立文件系统,并且当硬盘空间不够使用的时候,可以继续将其他的硬盘的分区加入其中,这样就可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。当然,它的好处不止如此!
四、LVM相关术语:
物理存储介质(Physical Media):系统的存储设备;比如:硬盘。是存储系统最底层的存储单元
物理卷(Physical Volume):硬盘分区或者从逻辑上与磁盘分区具有相同功能的设备;比如:RAID,是LVM的基本存储逻辑块。
卷组(Volume Group):一个或者多个物理卷组成一个卷组,对LVM而言,卷组类似于非LVM系统中的物理硬盘。可以在卷组上创建一个或多个逻辑卷
逻辑卷(Logical Volume):LVM的逻辑卷相当于非LVM系统中的分区,可以在LVM的逻辑卷上创建文件系统
PE (Physical Extent):每一个物理卷被划分为称为PE(physical extent)的基本单位,具有唯一编号的PE是可以被LVM寻址的最小单位。PE的大小是可以设置的,默认为4MB
LE(Logical Extent):逻辑卷也被划分为被称为LE(Logical Extent)的可被寻址的基本单位。在同一个卷组中,LE和PE的大小是相同的,并且一一对应。
五、LVM模型:
六、前期准备工作
1、系统环境:
宿主主机:Windows 7 X64 8G内存
虚拟机:Vmware 10
Linux系统:Centos 6.4 X86_64 2G内存 双核CPU
SSh工具:xshell
2、添加硬盘
我是在虚拟机上操作的,所有首先添加3块硬盘到我的虚拟机中。
3、查看添加的硬盘信息
fdisk –l,硬盘添加成功
4、有了硬盘,那就需要规划LVM了,可以将三个硬盘全部做成LVM,也可以将三个硬盘中的某些空间做成LVM,这里,我使用每个硬盘的某些空间做成LVM,以便后边的实验能顺利进行。
规划:sdb1 5G sdc1 5G sdd1 5G
使用fdisk /dev/sdb 、fdisk /dev/sdc 、fdisk /dev/sdd来进行硬盘分区
全部分区完成之后,使用fdisk –l /dev/sd[bcd]查看着三个分区的信息是否正确
查看内核是否已经识别该分区,如果已经识别则无需重启虚拟机,如果无法识别则要重启虚拟机
七、创建LVM
1、创建物理卷—>命令pvcreat
使用格式pvcreate DEVICE,将sdb1、sdc1和sdd1都创建为物理卷
pvcreate /dev/sdb1
pvcreate /dev/sdc1
pvcreate /dev/sdd1
2、使用pvdisplay可以查看我们的物理卷
3、创建卷组(VG)—>命令vgcreate
使用格式 vgcreate 卷组名 DEVICE1 DEVICE2 DEVICE3
vgcreate Datalvm /dev/sdb1 /dev/sdc1 /dev/sdd1
4、使用vgdisplay查看刚才创建的卷组
Note1:
1、当多个物理卷组合成一个卷组后,LVM会在所有的物理卷上做类似格式化的工作,将每个物理卷切成一块一块的空间,这一块一块的空间就成为PE,默认大小为4M。
2、由于受内核限制,一个逻辑卷最多只能包含65536个PE,所以一个PE的大小就决定了逻辑卷的最大容量。4MB的PE决定了单个逻辑卷最大容量为256G
3、创建逻辑卷时,使用vgcreate – 64MB Datalvm /dev/sdb1 /dev/sdc1 /dev/sdd1来指定PE大小
5、创建逻辑卷LV—>命令lvcreate
使用格式:lvcreate –L SIZE –n LV_NAME VG_NAME ,也可以使用lvcreate –l # 指定PE的个数
lvcreate –L 8G –n Mydata Datalvm
6、使用lvdisplay查看创建的逻辑卷
Note2:
1、这里看到LV_Path的路径为/dev/Datalvm/Mydata,我们ls -l一下这个设备文件,发现这是一个链接文件,其路径为/dev/dm-2,所以我们通过这两种方式可以找到这个逻辑卷,其实还有一个路径可以帮助我们找到这个设备文件,路径为/dev/mapper/Datalvm-Mydata
7、创建文件系统
在逻辑卷上创建ext4文件系统
[root@myb362 mapper]# mkfs -t ext4 /dev/Datalvm/Mydata [root@myb362 mapper]# mkdir /data #创建挂载点 [root@myb362 mapper]# mount /dev/mapper/Datalvm-Mydata /data #挂载 [root@myb362 mapper]# ls /data #查看挂载点内容,挂载成功,逻辑卷创建成功 lost+found [root@myb362 mapper]# touch /data/test #创建一个文件 [root@myb362 mapper]# ls /data #再次查看 lost+found test [root@myb362 mapper]# umount /dev/dm-2 #卸载逻辑卷 [root@myb362 mapper]# ls /data #再次查看 [root@myb362 mapper]#上边我使用了LV的三种设备文件表示方法,希望你没有搞晕。
八、管理LVM
1、逻辑卷和卷组扩容
前面已经说过,LVM可以实现动态调整分区空间大小,而无需重启机器,那假如我们刚才创建的逻辑卷/dev/Datalvm/Mydata空间不足,需要增加空间。那我们需要分卷组中有剩余空间和卷组中没有剩余空间两种情况来考虑。
①卷组中有剩余空间
使用vgdisplay查看卷组信息
卷组剩余空间7.02GB,剩余PE数量1798个。我们把所有的剩余空间全部增加给逻辑卷/dev/Datalvm/Mydata
再进行这步操作之前,为了完全模拟真实环境,我们最好先将/dev/Datalvm/Mydata挂载到/data目录下,说明此逻辑卷正在被使用
mount /dev/Datalvm/Mydata /data
接着扩展逻辑卷
lvextend -l +1798 /dev/Datalvm/Mydata
前面说过增加PE的个数可以使用-l,当然也可以使用 –L 7.02G ,你喜欢就好。
好了,扩展完成,让我们查看一下文件系统的当前状态
很遗憾,还是8G,没有扩展成功。这是为什么呢?还少一步,使用resize2fs命令来调整分区的大小
resize2fs /dev/Datalvm/Mydata
再次使用df -h查看
扩容已经成功。
②卷组中没有剩余空间
当卷组中没有剩余空间或者剩余空间不足够用于扩展逻辑卷的大小时,就需要增加卷组的容量,增加卷组容量的唯一方法当然就是向卷组中添加新的物理卷。
还记得刚才我们并没有划分完的硬盘吗?是时候让他们上场了。
首先创建一个分区/dev/sdb2,大小为10G,然后创建成物理卷。接下来就要把这个物理卷加入到我们那的卷组了。
在创建/dev/sdb2分区的时候,我的系统内核无论如何都无法识别他,只有重启系统才解决问题。不知道你是否也遇到这个问题了,如果遇到了,那就重启系统吧
扩展卷组—>命令vgextend
使用格式:vgextend VG_NAME DEVICE
完成卷组的扩容之后,那么扩展逻辑卷的操作就和第一种情况是一样一样的了。
总结:LVM是linux系统中非常好用的磁盘分区管理机制,配合RAID能让我们的系统更加的安全和稳定,并且有很强的扩展性。接下来会就LVM的卷组、逻辑卷缩减以及如何制作快照卷写一篇博文,欢迎各位关注,如博客中有错误之处,还望大家指出。