it-swarm.cn

LVM是否会影响性能?

我必须将一些服务器迁移到Linux,我需要评估的一个重要方面是我的新主机系统必须具有弹性存储容量。自然,做一些基础研究后,我遇到了LVM。

使用lvm是否会有性能损失?如果是这样,我该如何衡量?

我现在正在考虑的是将Linux作为具有LVM的主机操作系统,并在其之上运行虚拟化Linux盒(我也应该在来宾OS上添加LVM吗?)。

90
Pablo

LVM的设计可以使它避免真正陷入困境。从用户空间的角度来看,它看起来像磁盘顶部的另一层“虚拟内容”,并且可以自然地想象所有I/O现在都必须经过此过程,然后才能到达或离开真实区域。硬件。

但这不是那样。内核已经需要具有一个映射(或实际上是多层映射),该映射将高级操作(如“将其写入文件”)连接到设备驱动程序,该设备驱动程序又连接到磁盘上的实际块。

使用LVM时,该查找已更改,仅此而已。 (由于它仍然必须发生,因此对性能的影响可以忽略不计。)实际写入文件时,这些位将直接作为物理介质的路径,例如他们会否则。

在某些情况下,LVM可能会导致性能问题。您要确保LVM块与基础系统正确对齐,这在现代发行版中会自动发生。并确保您没有使用受过 this one 之类错误的旧内核。哦,使用LVM快照会降低性能(并且随着每个活动快照的增加,性能也会越来越差)。但大多数情况下,影响应该很小。

至于最后一个:如何测试?标准的磁盘基准测试工具是 bonnie ++ 。使用LVM进行分区,对其进行测试,将其擦除,然后(在同一位置,以保持其他因素相同)再次创建一个普通的文件系统并进行基准测试。它们应该接近相同。

109
mattdm

LVM和其他所有事物一样,是好运。

在性能方面,LVM会稍有碍事,因为这是在位撞击磁盘(或可以从磁盘读取)之前必须进行的另一层抽象。在大多数情况下,这种性能下降几乎是无法衡量的。

LVM的优点包括以下事实:您可以向现有文件系统添加更多存储,而不必四处移动数据。大多数人都喜欢这样做。

以这种方式使用LVM的一个缺点是,如果您的额外存储跨磁盘(即涉及多个磁盘),则会增加磁盘故障将使您的数据消耗的可能性。如果您的文件系统跨越两个磁盘,但其中两个出现故障,则您很可能会丢失。对于大多数人来说,由于空间与成本的关系,这是可以接受的风险(即,如果这真的很重要,那么将有预算正确地做到这一点)-并且因为正如他们所说,备份对吧?

对我来说,不使用LVM的唯一原因是灾难恢复的定义不明确(至少是这样)。无法将具有LVM卷且其上具有加扰的OS的磁盘简单地连接到另一台计算机,并从该计算机恢复数据。恢复LVM卷的许多说明似乎都包含诸如之类的步骤,请及时返回并运行vgcfgbackup,然后将生成的/ etc/lvmconf文件复制到托管软管卷的系统中。希望自从我上次不得不看这三到四年后,情况发生了变化,但是出于这个原因,我个人从不使用LVM。

那就是。

在您的情况下,我认为与主机系统相比,虚拟机将相对较小。对我来说,这意味着您以后更可能要在VM中扩展存储;这最好通过在VM扩大受影响的VM文件系统。您没有跨多个磁盘的漏洞,因为虚拟磁盘很可能位于主机系统上的同一物理设备上。

如果虚拟机对您完全不重要,那么您将以某种方式对主机系统进行RAID,这将降低以后扩展存储的灵活性。因此,可能不需要LVM的灵活性。

因此,我假定您不会在主机系统上使用LVM,但会安装VM以使用LVM。

17
David Mackintosh

一般而言:如果添加新的复杂性层(又称“要做的事”),没有什么会更快。注意:您只能添加工作,而不能“更改”完成工作的方式。

您如何测量?好吧,您创建一个带有LVM的分区,一个没有LVM的分区,然后使用正常的基准测试并运行它。就像在

http://www.umiacs.umd.edu/~toaster/lvm-testing/

看起来,对速度的影响很小。这似乎与运行基准测试的其他人的发现同步:

“与LVM相比,使用LVM的ext4速度要快,而与其他文件系统基准测试相比,则更快” Linux内核邮件列表线程

但是,仅靠自己进行基准测试,看看您要使用的硬件和操作系统是否表现相同,以及是否可以忽略额外一层复杂性(为您提供弹性存储)的影响(可能会略有影响)。

您是否应该将LVM添加到客户OS:这取决于您是否还需要客户OS具有弹性存储,不是吗?您的需求决定了您必须部署什么。

4
akira

lvm的速度比常规分区慢,尤其是对于小文件。不错的研究: https://www.researchgate.net/publication/284897601_LVM_in_the_Linux_environment_Performance_examination

1
Kha Vu

仅lvm不会对性能造成太大影响,但是如果您愿意接受它,请改用zfs。您将获得卷管理和可恢复性以及其他各种出色的功能。

0
stu

没有人提及lvm2可以使读写速度成倍增加(类似于raid0)。我个人使用了3个相同的磁盘,在剥离模式下对它们使用了lvm2,读写操作花费了1/3的时间,这是一个很大的影响,文件系统的处理速度要快3倍。我知道:任何磁盘发生故障,并且磁盘上的所有数据均无法访问;但是这并不意味着有任何损失,因为必须要有备份,所以Raid,LVM2,ZFS之类的东西都不会避免拥有备份。所以我从不使用镜像,raid5之类的方法,而是一直使用剥离(以获得最高性能)并同步了BackUP。 ZFS非常适合进行即时压缩,并且复制参数大于一个时就像镜像,但是ZFS拥有而没有其他人拥有的一件事就是自动恢复动态的位腐烂(磁盘电源已关闭),但ZFS i造成了很大的影响(计算校验和,进行验证)和市长问题(添加了更多物理磁盘)。

恢复:我仅将ZFS用于外部磁盘上的BackUp,将多个(两个或三个)ssd和lvm2带区分开用于OS(Aftwr升级,重做OS的克隆),我倾向于使用不可变的OS;我使用了多个(六个)spinnin磁盘,其中已剥离了lvm2来存储数据(例如虚拟机),以便再次进行任何更改后重做BackUPs;因此,在任何磁盘出现故障后,我只需要更换它并恢复上一次备份即可;现在,我的写入速度已经接近1.8GiB/s,因此从BackUP还原一个虚拟机仅需不到30秒(每个虚拟机磁盘32GiB)。

因此,我的答案是:不要只使用一件事,要聪明,要充分利用每个部分,剥离的lvm2比mdraid级别0快,在使用六个旋转磁盘时,速度更快。一条警告ssd剥离,两个和三个好,四个ssd会降低性能(我在剥离模式下使用四个相同的ssd时,无论lvm,mdraid0等,我的测试都降低了写入速度),似乎SSD TRIM等写入放大可能是向剥离后的卷添加更多ssd导致写入速度降低的主要原因。

使用ssd和任何raid0(剥离的卷)进行警告,可以完美地对齐事物,在文件系统上正确分配群集大小,提示大小等,因此没有人会导致性能下降;作为示例:磁盘扇区为2048,因此任何读/写操作的最小卷数为2K,请不要使用使用512字节clusyer的文件系统,最好使用2K或4K群集大小;现在,假设您使用3xHDD(每个2K扇区),那么在任何读/写最佳文件系统群集上,其大小将为3x2K = 6K,但是在许多文件系统上是不可能的,那么请考虑如果使用64K群集大小(64K/6K = 32)怎么办/ 3,这会导致不平衡,因此不是最佳选择,依此类推。进行数学运算以获得最佳群集大小。

我最好的结果是:群集大小= stripsize *条带上的磁盘数;这样,每次读/写操作的大小都会精确到可以使所有磁盘正常工作的程度,因此速度的提高非常明显。例如,三个带64K条带大小的磁盘的192K群集大小示例;另一个示例是6个磁盘的192K群集大小和32K条带大小。

而且始终记住要以4K,8K,16K,32K,64K块测试单个磁盘。许多磁盘使用较低的数字(例如4K)时速度确实很差,但是使用64K,128K或更高速度时,速度会提高十倍以上。

是的,使用较大的群集大小会浪费每个文件的las群集的空间(如果您使用数百万个每个文件只有1个字节的文件),则最好在文件系统上使用压缩/打包即时系统,作为示例,具有4K群集大小的4TiB磁盘只能包含少于4TiB/4K = 1073741824个文件,每个文件的大小为1Byte,如果所有文件均为1Byte(群集大小为4K),则群集大小最差的比率就是1GiB,但是如果文件很大,就像虚拟机(作为示例,接近32GiB或只有几兆字节),丢失的只是在最后一个群集上;如此之大的文件,较大的群集大小对于性能而言要好得多,但请注意虚拟机如何使用它。

没有人会告诉您这个秘密:来宾内部不使用4K群集大小,请使用与虚拟磁盘所驻留的群集大小相同的群集大小,或者使用倍数。

是的,我非常想在来宾磁盘中获得最高速度,正如我说的那样,使用6个旋转磁盘时,我的速度接近1.7GiB/s,SATA III总线速度是瓶颈,而不是磁盘本身。我使用高端(不便宜)的磁盘,128MiB高速缓存,每个磁盘的写入速度为283MiB/s。

对于您和所有人:最好在进行任何速度测试之前了解集群大小,条带大小和块大小之间的关系,否则测试LVM2或任何其他RAID(也包括ZFS)可以得出FALSE结论。

只是这样的一个示例:我在Sata II端口主板上用2x60MiB/s 2.5英寸5400rpm Sata磁盘测试我的linux启动时间,然后用2xSSD Sata III测试(如果连接到Sata III,它们每个可以写超过250MiB/s的速度)端口),启动时间只需少两秒钟,而在五分钟的启动中只需两秒钟,为什么?因为大多数引导时间磁盘都没有使用,所以它是在ram和cpu上运行,而不是在I/o上运行。

始终测试您将要执行的实时操作,而不仅仅是粗略的速度(换句话说,最大速度)。

最好知道最大速度,这是无法代表的,您可能无法在100%的时间中以最大速度使用磁盘,OS和APP必须在ram和cpu上执行某些操作而没有I/O,因此这时磁盘速度不会根本不重要。

所有人都说SSD提高了Windows的启动速度,在我的测试中也是FALSE,只有我证明了在接近8分钟的启动时间上只有28秒。

因此,如果您喜欢我:引导时使用Linux复制到RAM,SSD不会比旋转的HDD更好,我还测试了USB 3.1 Gen2记忆棒(读取速度为139MiB/s),引导时间只有几秒钟。五分钟启动,为什么?很容易,在复制到ram时完成读取,而不是在其余的螺栓上再次使用disk/ssd/usb-stick,数据在ram上,就像ram驱动器一样。

现在我要卖掉我拥有的所有SSD,它们无法在启动时改进Linux-on-ram的复制,但是对它们进行基准测试则表明它们的运行速度提高了5倍...看,基准测试得出的结论是错误的...是的,测试并测试真实日工。

希望这可以解决男性问题……群集和条带大小不佳的LVM的影响远不止层的开销。

0
Anonymous

是否也应该在来宾操作系统上添加LVM?

您不应该这样做,因为在主机逻辑卷中拥有ext3或ext 4文件系统就足够了。无需在其中添加另一个卷组以及物理卷和逻辑卷。

0
Marc