LVM的概念很简单,先要将物理卷加入LVM,并创建一个vg来管理物理卷,然后在vg上分逻辑分区叫lv,然后在逻辑分区上创建文件系统。
现状
一般是先将创建,再讲缩减,由于实际项目原因,我反过来了,先将缩减,再讲创建,接上篇,我们的磁盘信息如下:
sda是系统盘,sdb sdc sde三块磁盘空着,没有使用,而sdd是做成了一个LVM分区。
现在,我们准备将sdb, sdc, sde三块盘做成一个新的LVM分区,并做成条带化(striped)。
创建
pvcreate创建物理卷
|
|
创建完后,用pvdisplay就可以看到这几块盘的信息。
vgcreate创建卷组
现在将几个PV一起组建一个新的VG,VG名字叫做data2:
lvcreate创建逻辑分区
接下来,创建逻辑分区,逻辑分区采用条带,底层使用3个PV,创建3T的卷。
type参数,目前支持很多种类型,包括raid,thin等,我们测试条带使用striped参数,参数解释:
因为sdb的大小只有931.5G,不到1T,平均分布不下3个1T,所以创建失败:
缩小一下,创建2.7T的卷:
查看一下创建好的lv,这里显示了两个,第一个是之前创建的,非条带类型,我们只需要看 /dev/data2/lvol0 接口,第一个/dev/myvg/data可以用来对比看下有什么不同:
mke2fs创建文件系统
创建文件系统,关闭惰性初始化:
挂载分区
|
|
LVM条带测试
上面我们创建的LVM,为3块磁盘组成条带,简单对比下(dd测试是不专业的,但是大致能看出问题)和非条带的方式,其性能有和差异:
上图为bs=8k的情况。
- 1,2对比,3,4对比,发现不管几个并发进程,读IO在条带方式下,都比非条带快。同理,5,6对比,7,8对比,写IO也类似。
- 1,3对比,2,4对比,发现并发读,性能下降非常明显,5,7对比,6,8对比,写IO也类似。
上图为bs=1M的情况。
- 和8k的情况对比,IO利用充分,吞吐量随着bs增大而增大,例如8k read为110MB/s, 1M read为187MB/s。
- 和8k的情况对比,并发导致的性能下降没有8k时那么明显。
- bs足够大,磁盘的读写性能和条带底层磁盘个数成正比,但非线性叠加。
测试方法:
|
|
LVM条带优劣势分析
LVM条带的优势:
- 可以极大提高磁盘的IO性能。
- 磁盘空间相比liner方式无减少。
LVM条带劣势:
- 一块磁盘坏,所有数据全坏。
为什么不做RAID5 OR RAID10?
由于没有RAID卡,软RAID方案或者LVM目前已经支持的RAID方案,软RAID5的计算放到了CPU上,会加大CPU负担,而RAID10的方案太浪费空间,都不是很好的方案,加之同等磁盘数量下冗余RAID的性能根本就不如条带。 - 扩容难度加大(需要一次加入之前PV数量的磁盘或分区)。
- 依靠软件做负载,性能不如RAID卡,性能非线性增长。
- 一块磁盘坏,所有数据全坏。
磁盘IO分布相对均匀,如果某块磁盘性能差一些,那IO UTIL会高,但速度维持一致。