Flash虚拟化平台(FVP)的基本元素,第2部分。使用您自己的平台或文件系统

我与Satyam和Murali Vilayannur讨论的主题之一是用于在闪存设备上存储数据的文件系统。 应记住以下值得注意的事实:Satyam创建了VMFS3,Murali是VMFS5的领先开发者。 从这个角度来看,VMFS的使用似乎是显而易见的。 然而,对我来说最大的惊喜是,对于我们不使用VMFS的闪存设备,更令人惊讶的是我们根本不使用文件系统。

为什么不VMFS?
文件系统提供不需要的功能,有时甚至与处理闪存设备上的活动I / O的平台的要求相冲突。 在闪存设备上使用类似于VMFS的文件系统的最大问题之一是它针对SAN存储系统及其数据管理模型进行了优化; Satyam在VMware工作期间为ACM撰写了一篇关于此内容的文章。 不幸的是,这使得文件系统成为FVP任务的不适当工具。

直接地址文件系统使闪存设备过载,缩短其使用寿命,不优化处理任意I / O操作,测试其(通常非常脆弱的)垃圾收集算法的强度,并且它们的对象(文件和目录)不太适合虚拟机级别和服务质量管理,这对FVP任务非常重要。 下一节将详细介绍在闪存设备上管理数据的问题,但现在得出一个简短的结论:如果您的闪存设备对您来说很昂贵,请不要在其上放置直接寻址文件系统。

文件系统还提供远远超出FVP需求的功能。 例如,磁盘锁。 VMFS具有高级分布式锁定管理器,可控制不同ESXi主机对磁盘的访问。 FVP管理主机的本地磁盘,不需要在其他主机上进行锁定,因此,分布式锁管理器变得完全多余。 关于POSIX兼容性和分布式事务也是如此。 等等。

低级闪存操作
下面是一个示例,说明写入闪存设备与硬盘驱动器上的记录有着根本的不同。 Flash无法覆盖现有数据。 闪存中的数据只能写在空白页上。 闪存的一个特征是可以通过页面进行记录,并且可以仅以块的形式进行擦除。 什么是页面,什么是块? Flash将数据存储在单元格中; 将单元格组合成页面(4 KB); 页面被分组为块。 大多数制造商将128页合并为一个块。 如果要删除页面,则需要擦除整个块。 其他页面中的所有必要数据应保存在其他位置。 众所周知,闪存器件具有有限数量的写入和擦除周期。

因此,随机I / O写入可能会产生比您想象的更大的影响。 问题是大多数文件系统是在80年代和90年代开发的,并且从那时起就没有进展。 文件系统没有考虑它们使用为硬盘驱动器设计的低级操作对闪存设备造成的性能下降; 大多数闪存设备制造商实施各种机制以解决渐进性能降级。 在几种方案的帮助下,我们考虑这些机制并找出碎片对闪存设备产生如此影响的原因。

磨损管理
请注意,为简单起见,我决定在一个块中显示9个页面,而不是每个块显示128个页面。

让我们从磨损管理过程开始。 在此示例中,应用程序已创建数据并将其记录在块1中的页面A,B和C中(步骤1)。 新数据到达(步骤2),写入页面D,E和F.应用程序更新先前数据(AC),而不是使用先前页面,闪存设备继续使用新页面。 该新数据标记为A-1,B-1和C-1。 尽可能均匀地分配记录称为“磨损管理”。 旧页面现在标记为已过期。

垃圾收集和多次进入
在此示例中,块A已满,如果用户可用于记录的空间已用完且新数据到达,会发生什么?

Flash会将当前数据复制到空单元格。 读取块中的实际数据并将其写入另一个块。 逾期数据将保留在其页面中,并将与其余的块页面一起删除。 此过程称为“垃圾回收”。

垃圾收集很好,但在其运行期间发生的多次输入会对闪存设备造成严重损坏。 为了记录3页,闪存设备必须读6页并将6页写入另一个地方才能写入新数据。 不要忘记擦除周期。 假设磁盘已满的情况,我们会在记录新数据之前(暂时)移动数据? 在我的图表中,我为此选项添加了块B. 为了在实际情况下(使用文件系统时)执行此操作,您需要分配控制器闪存保留的多余空间。

为了在实际情况下(使用文件系统时)执行此操作,您需要分配控制器闪存保留的多余空间。

空间过剩
可以为闪存控制器管理的进程保留闪存容量。 这可以由闪存设备的制造商和用户完成。 例如,当您购买160 GB闪存PCIe加速器时,实际上您获得了192 GB的卡。 用户可以使用160 GB,另外还可以为闪存级控制器级操作预留32 GB,例如垃圾收集,错误纠正和控制器固件。 当您购买非工业SSD驱动器时,通常会获得一些预留的多余空间。 在任何文件系统中格式化此闪存设备时,您应该了解这些功能,并可能在可用容量之外保留额外空间。 目前没有标准化的扩展建议,因此您必须根据自己的经验做出选择。 在最糟糕的情况下,你会发现自己有一个碎片磁盘,SSD必须不断传输数据以编写新的数据。 想象一下,孩子们玩标签,只有运动模式稍微复杂一点。

重新考虑闪存设备上的数据管理
PernixData工程师开发了一种新格式,用于管理FVP闪存设备上的数据。 细节将在以下文章中公开,现在有几个基本要点。

针对闪光灯进行了优化
该格式旨在以尽可能少的元数据集存储临时I / O数据,并使用具有最大可用性能的闪存设备。 它将随机条目转换为连续条目,以便在顺序写入模式下利用更高的闪存性能。 这减少了冗余数据覆盖和擦除周期的数量。 并且该算法不包含文件系统的继承限制,例如大块大小,目录,文件,长事务,锁管理器等。

虚拟机之间的动态共享容量
谢谢 深度整合 使用VMkernel,FVP可以跟踪数据块并确定其虚拟机是在读取还是写入。 独立跟踪此类操作,平台可以在为虚拟机分配的空间中扩展读取和写入缓冲区。 FVP可以从缓存中缓存或删除任意一组虚拟机数据。 相比之下,闪存设备的传统文件系统上的数据疏散策略将是次优的并且将导致多次重写,因为 文件系统只能将数据写入文件末尾或从末尾删除块。

这也意味着您不需要为每个虚拟机分配静态缓存空间配置,就像使用具有直接寻址的文件系统一样。 这对我们来说是一个伟大的决定; 产品的用户体验应尽可能直观。

我引用我们的产品经理Bala的话说:“在我看来,产品的优雅在于它执行基本任务,不需要用户做任何新的或不寻常的动作。”

在日常工作方面,这非常出色:您无需为每个虚拟机预先调整缓存。 这意味着您无需了解和预测未来闪存的使用--FVP将为您做好一切。 缺乏硬资源分配意味着卸载的虚拟机缺乏闪存未充分利用,并且闪存缓存大小不足的活动虚拟机出现冗余块清理周期。 这最大限度地减少了多次录制的问题,并确保了闪存设备的最高性能和可靠性。

原创文章

自2016年起,FVP退出销售。