该文内容主要来自《鸟叔的Linux私房菜》
前言:当我们规划主机的时候,给了/home 50GB,当不够用时,可能会想到加一块硬盘,然后进行分区并格式化,将/home的数据完整的复制过来,然后卸载原本的分区,挂载新的分区。但是这种方法非常麻烦,并且如果又分大了,想缩小也很麻烦。LVM可以帮助解决这种问题。LVM的可以整合多个物理分区,让这些分区看起来就像是一个磁盘一样。而且,未来还可以在这个LVM管理的磁盘中新增或删除其他的物理分区。这就使得磁盘空间的使用非常具有弹性。
1、什么是LVM
LVM即逻辑卷管理器,LVM将几个物理的分区或磁盘通过软件组合成为一块看起来是独立的大磁盘(VG),然后将这块大磁盘经过划分为可使用的分区(LV),最终就可以挂载使用。那么为什么这样的系统可以进行文件系统的扩充或缩小呢?,其和一个叫物理扩展块(PE)的东西有关。
1.1、物理卷(Physical Volume,PV)
实际的分区(或Disk)需要调整系统标识符(system ID)成为8e(LVM的标识符),然后再通过pvcreate命令将它转成LVM最底层的物理卷(PV),之后才能将这些PV加以利用。调整system ID的方式就是通过gdisk。
1.2、卷组(Volume Group,VG)
所谓的LVM大磁盘就是将许多的PV整合成这个VG,所以VG就是LVM整合起来的大磁盘,在默认情况下,32位的linux系统,基本上LV最大仅能支持65534个PE;若使用默认的PE位4M的情况下,最大容量仅有256GB左右。当然,如果是64位的Linux系统,LV几乎就没有容量限制了。
1.3、物理扩展块(Physical Extent,PE)
LVM默认使用4MB的PE数据块,它是整个LVM最小的存储数据单位。也就是说,我们的文件数据都是借由写入PE来完成的。PE有点像文件系统里面的block大小。所以调整PE会影响LVM的最大容量。不过,在CentOS 6.x以后,由于直接使用lvm2的各项格式功能,以及系统转为64位,因此这个限制已经不存在了。
1.4、逻辑卷(Logical Volume,LV)
最终的VG会被切成LV,LV就是最后可以被格式化使用的类似分区的东西了,LV不可以随意指定大小,LV的大小与LV内的PE总数有关。为了方便用户使用LVM管理其系统,LV的设备文件名通常为【/dev/vgname/lvname】的样式。LVM弹性的修改文件系统的容量,就是通过交换PE进行数据转换,将原本LV内的PE转移到其他设备降低LV容量,或将其他设备的PE加到此LV中增到容量。
1.5、数据如何写入硬盘
数据写入LV后,如何写入硬盘,有两种方式:
1)线性模式:如果将/dev/vda1、/dev/vdb1这两个分区加入到VG当中,并且整个VG只有一个LV时,那么所谓的线性模式就是当/dev/vda1的容量用完之后,/deb/vdb1的硬盘才会被使用到。
2)交错模式:将一根数据拆分成两部分,分别写入/dev/vda1,/dev/vdb1的意思,感觉上有点像RAID 0,如此一来,一份数据用两块硬盘来写入,理论上,读写的性能会更好。
1.6、总结
LVM的最主要的用处是在实现一个可以弹性调整容量的文件系统上,而不是在建立一个性能为主的磁盘上。所以,我们应该利用的是LVM可以弹性管理整个分区大小的功能,而不是着眼于性能。
名词解释:
物理卷(PV):一个物理卷指一块硬盘
卷组(VG):卷组是可用物理硬盘的集合,可以逻辑地看成一块大硬盘。一个卷组由一个或多个物理卷组成。
物理分区:卷组中的物理卷划分成固定大小的块,这样的块称为物理分区。
逻辑卷(LV):每个卷组可以定义一个或多个逻辑卷,逻辑卷是位于物理分区上的信息集合。