没有合适的资源?快使用搜索试试~ 我知道了~
ACM Transactions on Storage,Vol.号182、第十八条。出版日期:2022年3月异构存储I/O提示的研究框架XIONGZI GE,广州,美国曹志超和David H.C. 美国明尼苏达大学双城分校PRADEEP GANESAN和DENNIS HAHN,美国为了弥合应用程序和现代存储系统之间的巨大语义鸿沟,将一段微小而有用的信息(称为I/O访问提示)从上层传递到存储层可以大大提高应用程序性能并简化存储系统中的数据管理。这对于由多种类型的存储设备组成的异构存储系统尤其如此。由于简单的外部访问提示可能涉及对遗留I/O堆栈的费力修改,因此很难评估访问提示的效果并利用访问提示。在本文中,我们设计了一个通用而灵活的框架,称为Hintendance,可以快速使用一组I/O访问提示,并评估它们对异构存储系统的影响Hinteger提供了一个新的应用程序/用户级接口、一个文件系统插件,并使用通用块存储数据管理器执行数据管理我们通过评估四种类型的访问提示:文件系统数据分类,流ID,云预取和Linux平台上的I/O任务调度,展示了Hintendum的灵活性实验结果表明,Hinteger只需对内核和应用程序进行少量修改,就可以在不同的场景下执行和评估各种I/O访问提示。CCS概念:·信息系统→分级存储管理其他关键词和短语:I/O访问提示,异构存储系统,块存储,数据管理ACM参考格式:葛雄子,曹志超,David H.C. Du,Pradeep Ganesan,and Dennis Hahn.2022年。Hintestinal:一个研究异构存储中I/O提示的框架 ACM Trans. 存储18,2,第18条(2022年3月),24页。https://doi.org/10.1145/34891431介绍传统的硬盘驱动器(HDD)在存储领域占据主导地位已经超过半个世纪。机械部分,特别是与旋转盘片一起工作的读写磁头,通常会导致缓慢的随机I/O性能。 近年来,已经出现了HDD的一些变体,例如永久磁记录(PMR)[58 ]、叠瓦磁记录(Shingle Magnetic Recording)[59]。这项工作得到了NSF I/UCRC智能存储研究中心的部分支持,并获得了以下NSF奖项1439662和1812537。作者Ge,Zhao,7301 Kit Creek Road,Research Triangle Park,NC,27709,USA; email:netapp.com; Z.Cao,明尼苏达大学双城分校,4-192 Keller Hall,200 Union Street SE,Minneapolis,MN,55455,USA;电子邮件:caoxx380@umn.edu;H. C. 杜,明尼苏达大学,双子城,4-192凯勒大厅,200联合街东南,明尼阿波利斯,明尼苏达州,55455,美国;电子邮件:du@umn.edu; P。甘尼桑,7886 169街,萨里,公元前,V4 N 0 J 4,加拿大丹尼斯哈恩,13111卡斯尔伍德西尔,威奇托,堪萨斯州67230美国;电子邮件:gp.esgan@ gmail.com。允许免费制作本作品的全部或部分的数字或硬拷贝,以供个人或课堂使用,前提是制作或分发副本的目的不是为了盈利或商业利益,并且副本的第一页上有本声明和完整的引用本作品的版权归ACM以外的其他人所有,必须予以尊重。允许使用学分进行摘要以其他方式复制、重新发布、在服务器上发布或重新分发到列表中,需要事先获得特定许可和/或付费。从permissions@acm.org请求权限。© 2022计算机协会1553-3077/2022/03-ART18 $15.00https://doi.org/10.1145/348914318ACM Transactions on Storage,Vol.号182、第十八条。出版日期:2022年3月十八日:2X. Ge等人(SMR)[46,47,70,73]和交错磁记录(IMR)[24,72,74]驱动器,其单个磁盘的容量超过10 TB。然而,这些HDD变体仍然依赖于在磁性介质上记录数据。因此,磁盘寻道开销仍然很高。在过去的二十年中,除了新的HDD技术之外,还出现了几种新的存储技术/设备高性能存储设备,如基于闪存的固态驱动器(SSD)[21]和闪存级存储器(SCM)[52]使存储速度更快。SSD和SCM从根本上不同于传统的HDD。它们可以在不移动任何机械臂或头的情况下随机读取/写入此外,基于闪存的SSD必须在向数据块提供新的传入写入请求之前擦除该数据块因此,SSD具有不对称的读/写速度。单片机如相变存储器(PCM)和STT-RAM是指高速和非易失性存储介质。尽管SCM具有令人印象深刻的性能(每秒数十万IO),但其成本仍然昂贵[52]。最近,一种名为云存储的新服务模式开始流行,它将数据存储在远程系统这通常涉及更多的网络延迟,当访问云外部的数据 考虑到每兆比特、容量和成本,存储系统以更复合的方式构建,结合新兴的存储技术/设备,包括SCM、SSD、HDD,甚至远程云存储。我们认为这种类型的存储系统是异构的。现代存储系统主要是从旧的硬盘驱动器发展而来的,例如小型硬盘驱动器。计算机系统接口(SCSI)体系结构[63],它定义了通过几条并行I/O总线访问一组外围设备的数据协议。这样的SCSI命令集仍然被广泛地用于连接各种总线(例如,SATA、iSCSI)在Linux操作系统中的应用[31]。从最近的Linux存储堆栈图[64]中,开发了多个独立的层,并以分层的方式存在于存储基于设备映射器(DM)的LVM [54]可以管理多个存储设备,并向上层(如文件系统)提供一系列同构这样一个简单而稳定的接口使上层(如文件系统和应用程序)以独立的方式发展[49]。例如,文件系统总是构建在虚拟化的逻辑设备上,可以将其视为块地址列表。然而,这样的逻辑设备可以由几种不同类型的存储设备组成为了平衡存储容量和性能,在分层存储系统中,存储管理器在数据块变得不那么频繁访问之后尝试将冷数据从快速层移动到慢速层。该决定通常基于数据访问频率的统计如果存储管理器过于保守地移动冷数据,则当没有足够的空间用于将热数据迁移/存储到快速层时,I/O延迟可能会受到影响然而,激进的数据迁移策略可能会导致层之间不必要的数据传输,并最终降低整体性能。请注意,我们使用快速层和慢速层来简化我们的讨论。异构存储系统可以由具有不同性能和访问属性的几种类型的存储设备组成[16]。此外,I/O延迟可能会在I/O路径期间受到影响,因为存在多个组件[67]。此外,虚拟化层可能会使有效分配存储资源更具挑战性[68]。虽然提取文件系统语义[23]可以帮助将相关文件聚合到组中,但应用程序和块存储之间的差距仍然阻碍了存储设备之间的有效存储管理。管理存储空间的块层缺乏关于文件数据的必要信息,例如文件元数据和属于文件的数据块这使得数据块层很难根据不同存储层的访问模式适当地分配资源和编排数据块此外,来自用户级或系统级的应用可以具有不同的优先级。例如,一些维护任务(例如,rsync),旨在提高数据可用性或系统性能[3],可能需要遍历整个目录层次结构,因此应该被视为后台任务。然而,这些I/O请求可能是异构存储I/O提示的研究框架十八日:3ACM Transactions on Storage,Vol.号182、第十八条。出版日期:2022年3月图1.一、向当前I/O堆栈添加访问提示时会发生多层更改与一些关键的前台I/O请求混合如果可以的话,存储系统应该优先考虑后者预计备份数据块将保留在低速高容量存储设备上。然而,较低层存储管理器通常不能完全区分较低优先级I/O请求和较高优先级I/O请求,以及数据应该停留在哪个层。为了缩小存储系统及其上层之间的语义差距,其中一种有前途的方法是使用I/O访问提示[48,49]。 当应用程序读取文件时,它可能不知道文件的物理位置。此文件可能分散在多个设备上,即使部分数据块位于低性能设备中。 如果上层可以向存储系统发送提示,则存储管理器可以主动地将所请求的文件的相关联的块从低性能设备加载到高性能层。参考文献[49]中提出了一种分类器,它允许后端存储系统中的控制器对每个存储I/O命令采用不同的I/O策略例如,SSD设备可以优先考虑元数据和小文件,以便在文件系统中进行缓存Sonam Mandal et al.[48]研究了通过使用来自上层的提示来引导DMDedup引擎绕过某些类型的数据(例如,元数据)并预取数据块的关联索引数据然而,这些调查没有研究存储层数据管理,如跨不同设备的数据迁移。研究异构存储系统中的访问提示的主要挑战之一是缺乏-一个共同的评价平台为了向存储层发送提示,需要不同的应用具有与存储层通信的有效方式(例如,sysfs、SCSI命令)。图1显示了可能需要修改当前I/O堆栈中的多个层以实现和评估I/O提示。开发提示并评估其有效性涉及更改应用程序、文件系统、块驱动程序、传输协议和底层存储子系统。例如,在SCSI子系统中,来自上层的提示信息可以在SCSI命令中写入CDB的一部分不仅块层中的驱动程序,而且传输层中的这导致在可以评估特定访问提示的有效性之前的繁琐工作。工业界的一项努力是对基于T10或T13 SCSI的 I/O提示进行标准化[61]。这项标准化工作引起了SNIA不同供应商的极大兴趣;十八日:4X. Ge等人ACM Transactions on Storage,Vol.号182、第十八条。出版日期:2022年3月然而,据我们所知,所提出的SCSI命令还没有被任何磁盘供应商或存储公司完全实现可能有两个主要原因:一个是实现新命令需要跨不同层的协议(例如,磁盘驱动程序、传输协议),因此整个系统都可以从更改中受益另一个原因可能是NVMe驱动器的快速发展[69],它可以通过使用更多的并行数据路径来利用闪存的快速速度。在这篇文章中,我们设计了一个通用的和灵活的框架,称为Hintendance,研究异构存储系统中的访问提示 主要目标是设计一个有效的框架,快速评估各种访问提示,并证明一个概念,提示可以在生产系统中以简单的方式实现。为了实现这一目标,我们设计并实现了一个新的应用程序/用户级接口,一个文件系统插件,和一个块存储数据管理器在Hintelet。提示的目的不是为每个访问提示研究有效的传递机制,因为这样的机制仍然需要由相关的标准组织(如SCSI T10和T13)定义和同意我们在Linux上实现了一个Hinteger的原型所有实现的接口只需要对文件系统和应用程序进行少量修改对于基线存储管理,Hinteger通过块级统计(例如,heatmap)并以FIFO方式处理I/O 使用Hinteger,用户可以快速使用访问提示并评估其在存储级数据管理上的效率和有效性。具体来说,Hintelements有以下关键设计来简化访问提示的实现和评估:新的应用程序/用户级界面,允许用户定义和配置新的访问提示。一个VFS级别的文件系统插件,提取文件布局信息,并为常见文件系统定义文件级数据分类库。基于DM的Linux块存储数据管理器实现了四种原子访问提示操作,并触发了数据移动和I/O调度因此,可以执行和评估与上层提示相关联的不同策略。为了显示所提出的框架的灵活性,我们评估了具有各种类型的存储设备的不同配置(例如,SSD、HDD、SCM和基于云的存储)。具体来说,我们实现并评估以下访问提示,以展示Hinteger的灵活性、简单性和有效性:文件系统内部数据分类。 我们使用内部文件系统信息通过不同的维度(如元数据/数据、文件大小等)对数据进行分类。流ID。流ID用于对不同的数据进行分类,并将相关的数据存储在一起或紧密地存储在一个设备上。云预取。在这种情况下,我们研究访问提示如何帮助有效地集成内部部署存储和云存储。I/O任务调度。 用户可以从应用程序向块存储发送提示,以区分前台任务和后台任务。本文的其余部分组织如下:在第2节中,我们介绍了我们工作的背景第3节描述了Hintelet的设计在第4节中,我们演示了四种不同的访问提示与几种存储配置,并显示评估结果。第五部分总结了相关工作。我们在第6节结束这篇文章。2背景I/O访问提示似乎是提高性能和简化未来异构存储系统管理的一种很有前途的方法在以前的访问提示研究中[8,48],缓存·······异构存储I/O提示的研究框架十八日:5ACM Transactions on Storage,Vol.号182、第十八条。出版日期:2022年3月和主机中的预取。Linux中的一些现成的系统调用,如posix_f advise()[40]和ionice()[41],可以用于访问提示。例如,sys_f advise64_64() [40]可以为内核指定随机访问标志,这样内核就可以选择适当的预读和缓存技术来提高对相应文件的访问速度然而,sys_fadvise64_64() [40]中的这个标志在Linux内核中使用,并在页面缓存级别执行页面缓存通常是指将数据存储在主存中。而在企业存储系统中,存储本身可能包含不同类型的存储设备,如闪存和SCM,它们可以作为存储卷的一部分与操作系统级存储虚拟化不同,为了在混合或异构存储环境中为不同应用程序实现更好的QoS,智能数据移动在利用不同类型的存储设备方面发挥着重要作用然而,Linux中现有的预取引擎不支持在这样的存储配置中动态数据因此,f advise()和ionice()可以帮助提高I/O性能通过预读机制,但不足以触发块级的有效数据移动MPI-IO提示用于优化高性能计算(HPC)环境中的文件系统,例如Lustre [53]和GPFS[44]。虽然一些提示(例如, access_style指示文件的访问模式[51])与Hinteger中测试的提示类似,它们需要底层存储的支持来触发HPC应用程序的数据移动。GPFS还支持一些通用的I/O提示[44],比如不要过于频繁地关闭文件XFS支持直接I/O优化的提示[4]。与预读机制类似,这些工作也主要集中在改进存储系统中的缓冲区/高速缓存层红帽已启用用户空间中的I/O限制,以帮助进行大型数据块对齐(例如,4 KB)用于不同供应商的设备[56]。然而,它缺乏跨多个层的数据移动的支持。某些现有的文件系统支持自定义分类。例如,btrfs可以支持同一文件系统中的不同卷[26]。但是,btrfs要求用户为存储静态配置卷主机可能有多个应用程序。不同的文件系统有不同的存储需求。用户可以使用一个逻辑卷来支持多个appli-阳离子。因此,为了实现高效的数据管理,我们需要考虑动态访问提示,而不是在卷级别预先配置的静态信息。要实现I/O提示,如果没有标准的API,我们可能需要修改每个应用程序甚至每个层。当前的SCSI T-10和T13组织已经提出了一些用于访问提示的初始标准化接口[62]。然而,由于I/O堆栈和应用程序的大部分修改,这些新标准仍然没有公开实现此外,广泛使用的NVMe协议降低了基于SCSI实现的兴趣我们的工作是试图建立一个灵活的框架,为传统和现代计算系统的设计和评估访问提示从不同的层。 通过对每一层的细微修改,我们构建了Hinteger,在标准组织同意一套访问提示的传递机制之前,有效地提供访问提示。3欣士多3.1Hintestival框架在传统的Linux操作系统中,每个块驱动程序在内核中将自己注册为设备文件。每个请求结构都由一个链表结构管理,称为bio[10]。bio的核心bi_io_vec链接多个固定大小的页面(4KB)。为了管理和实现I/O访问提示,我们需要操作块存储层中的数据模块化的内核允许插入新的设备驱动程序。Device Mapper(DM)[54]是几乎所有Linux系统中的开源框架,用于使用各种映射策略(例如,线性或镜像)。开发人员可以使用各种映射构建逻辑设备驱动程序十八日:6X. Ge等人ACM Transactions on Storage,Vol.号182、第十八条。出版日期:2022年3月∼•→图二. 提示框架。DM中的政策 图2描述了Hintelements的层次结构,主要由三个级别组成,包括应用程序级别、文件系统级别和块存储级别的新接口和插件(所有阴影部分):为了连接应用程序和块存储管理器,在用户空间中暴露了一个接口,供用户和应用程序利用和接收来自文件系统和块存储管理器的信息此外,该接口允许用户/应用程序向存储层发送访问提示。为了提取一个块的文件系统语义,Hinteger在文件系统级别挂接一个插件,以利用内部文件数据结构和文件数据位置。为了控制大尺寸块的数据管理,Hintecom在内核中实现了一个新的块存储管理器。它可以实现与外部访问提示相关联的策略在接下来的部分中,我们将详细介绍设计和实现。3.2先决条件我们实现了两个通用的块级映射机制作为两个新的目标驱动程序在DM。这两个目标是可以在Hintellectual中使用的两个基本功能。它们在内核中总共包含600行C代码它们被命名为重定向器和迁移器,描述如下:重定向器:使用重定向器,目标设备(bio bdev)可以重置为所需的设备(例如,/dev/sdd)。重定向器目标的控制上下文包括:struct dm_dev * srcDev; /* 源设备 */ structdm_dev *dstDev; /* 目标设备 */ struct元数据 *mList; /* 映射表 */无符号长读取; /* 读取次数*/无符号长写入; /* 写入次数 */映射表(mList)用于记录原始地址已更改的每个请求的设备条目。结果,与生物数据结构相关联的I/O请求的目的地可以被重新分配给属于合成卷的指定设备最初在源设备中发出的I/O请求,从LBAstart with offset开始,被抽象为,(srcDev,start,of f set)。Hintendency可以将其重定向到···异构存储I/O提示的研究框架十八日:7ACM Transactions on Storage,Vol.号182、第十八条。出版日期:2022年3月目标设备,具有新的start LBA,start1,as(dstDev,start1,of f set)。周期性地记录读计数和写计数(例如,每五分钟一次)。Migrator:我们使用内核中的“kcopyd”策略在DM中实现Migrator目标驱动程序,该策略提供了将一组连续扇区从一个块设备复制到其他块设备的异步功能[ 28 ]。迁移器中的数据块被分组并划分为固定大小的块(一块包含一定数量的块)。每次与I/O请求相关联的块中的数据块可以从一个设备移动到另一个设备。 除了Redirector中的上述元素外,还在Migrator目标的控制上下文中添加了另外两个元素:struct dm_kcopydclient *copyClient;/* 用于执行迁移的复制客户端 */ bool为空;/* 复制标志 */由于复制大量块会占用带宽,因此在copyClient中设置了一个节流阀来限制复制流量。此外,可以将迁移器设置为后台进程。Hinteclipse还使用Migrator来执行数据复制功能。在目标驱动程序接口中,使用标记Islogn来标记在迁移后是保留还是删除原始映射表记录重定向器和Migrator的每个操作的条目更改 Hintendency在块中操纵迁移和重定向,块的大小远大于DM中的512 B扇区。对于块大小为1 MB的100 GB卷,映射表的总大小约为3 MB。 映射表驻留在存储器中并且被周期性地写入最快层(例如,SSD或SCM)。在两个目标驱动程序中,当复合卷具有多个组件时,读取计数和写入计数可以帮助确定目标 一旦上层提示下降到DM级别,Hintego将根据提示的指导做出决定,复制数据或重定向请求。由于本研究的目标不是旨在设计特定的存储策略,相反,我们采用启发式策略,看看Hintestrian是如何工作的。我们还修改了LVM2 [55]中的dmsetup工具,以调用上述两个新驱动程序。一旦传入的数据块到达块级别,卷管理器可以选择将它们放置在原始位置或重定向到新位置。 即使在数据块被放置之后,它们也可以被迁移到新的位置(在不同或相同的设备上)或使用副本进行复制。 有了DM中的新功能,我们将展示如何设计Hinteger来执行I/O访问提示。3.3应用程序/用户级接口在过去的几十年里,应用程序和用户通过文件或对象等接口访问数据 当应用程序打开一个文件时,操作系统将开始提取文件相关信息。例如,尽管用户或应用通常知道文件的未来访问(例如,访问模式),但在传统的Linux操作系统中,它们通常不会直接将这些额外的信息发送到后端存储系统。要接受和解析用户定义的访问提示,我们只需要使用一些脚本来设置从用户空间到内核驱动程序的属性 Hinteger使用sys f s接口[29]为应用程序构建属性库,以便与块存储和文件系统进行通信。sys fs作为Linux内核中的伪文件系统,从不同的内核子系统导出简短的消息 我们选择参考文献[29],因为它简单且广泛用于Linux中的设备驱动程序来动态配置参数。·十八日:8X. Ge等人ACM Transactions on Storage,Vol.号182、第十八条。出版日期:2022年3月为了使这个接口工作,我们需要在内核中添加相关的sys f s函数,以便与块级别的几个新特性进行通信,如图2所示。然后,可以在内核中触发和执行来自用户空间的预定义命令例如,如果用户发出迁移请求,则命令将从用户空间传递到内核。在内核中,migrator守护进程将触发块映射检索过程,最后块存储将被告知哪些数据块以及它们将被迁移到哪里。虽然有不同种类的I/O提示,但Hinteger解析JSON文件以从用户和应用程序获取I/O访问一旦方案验证通过,提取的用户级访问提示就可以传递给系统。对于某些应用(例如,cp,dd,rsync),Hinteger可以简单地配置JSON接口文件。例如,用户可以指定rsync的任务优先级,然后使用预定义的脚本启动应用程序不过,某些应用程序(如filebench)的代码会有一些微小的更改 在当前版本中,Hinteger支持基本的Linux操作,如cp,dd,fsck,redis,rsync键值数据库,基准测试工具(例如, [18]和filebench [17])。此外,Hinteger支持流ID和云预取等用户自定义API 为了演示由上层提示辅助的调度,可以向下传递与文件关联的I/O优先级编号。3.4文件系统插件在Hinteger获得上层I/O提示后,它需要在多层存储系统上找到文件数据的位置,因为放置位置会影响文件访问延迟。一旦块级别知道与上层请求相关联的数据块,就可以触发数据迁移以加速未来的访问。在前台和后台访问的情况下,块级可以优先考虑前一个,然后做后台I/O。对于这两种情况,从逻辑设备上的文件位置的映射可以帮助块级存储理解来自每个文件的数据此外,文件系统通常由元数据块和数据块组成元数据信息包括块位图、索引节点、超级块等。为了提高文件系统的性能,元数据位置应该放在更快的存储设备上,因为访问这些信息的频率更高。文件系统通常封装文件的内部数据管理,以提供一些POSIXAPI,如read(),stat()[11]。每个文件系统都以自己的方式实现[11]。为了对文件系统内部的数据块进行分类并提取文件位置信息,Hint提供了一个VFS级别的插件,称为FS_HINT。FS_HINT尝试提取文件系统元数据及其位置。这包括文件大小、元数据/数据位置。到目前为止,FS_HINT支持当前Linux中的主流文件系统,如ext2、ext4和btrfs。例如,ext4根据多块分配机制通过ext 4_new_meta_blocks()为元数据分配块,FS_HINT捕获返回的块组号(ext 4_f sblk_t)。所收集的信息将同时暴露给用户空间和应用程序。这一部分专门介绍每个文件系统。继续,文件系统通常不具有底层块存储组件的知识(例如,具有SSD和HDD的混合存储逻辑卷因此,文件系统通常不通过自身跨不同存储设备管理数据BTRFS允许用户为特殊使用情况配置具有特定块设备或逻辑设备的子卷但是,btrfs不处理跨不同卷的数据块放置为了控制块的分配,ext2使用ext2_new_blocks()(balloc.c)从块组中分配新块然而,对于ext4和btrfs,当插件涉及内核代码修改时,实现要复杂得多。在Linux中,文件ioctl()接口根据文件描述符操作特殊文件的块设备参数用户和应用程序可以在异构存储I/O提示的研究框架十八日:9ACM Transactions on Storage,Vol.号182、第十八条。出版日期:2022年3月∼逻辑卷通过ioctl()接口。对于Hinertip中对文件系统的早期支持,为了简化实现并同时提取执行访问提示所需的信息,我们只考虑在其inode_operations数据结构上实现fiemap大多数文件系统如ext4和btrfs都支持扩展。我们使用用户空间的fiemapioctl()方法来检索文件扩展映射[27]。如果没有扇区到扇区的映射,fiemap会将关联的区段返回到文件。提取完成后,当某些策略可以触发数据移动或I/O重新调度时,映射信息将被发送到块级别这个过程对文件系统是透明的块到块映射表在块级别维护,如3.2节所述。由于Hinteger在块级别中管理块级别数据,因此块到扩展映射可能未对齐。根据文件的大小,Hintecom将优先考虑小文件中的区段以表征块。 Hinteger主要用于研究多个存储设备的存储级数据管理,与操作系统缓存研究相比,每个存储设备都有很大的容量。因此,即使我们牺牲一小部分数据块的一点精度,结果也不会受到太大影响因此,FS_HINT可能不包含每个文件的所有准确映射,但这不会影响I/O访问提示评估。 这种方法可以帮助我们快速构建Hintendency的原型。此外,FS_HINT与大多数Linux平台兼容我们在文件中将LBA到PBA的映射作为FS_HINT中的函数。该部分的主要功能仅包含约50个LoC。此外,FS_HINT支持查询多个文件的映射,而无需复杂的内核代码修改。3.5块存储数据管理器根据以上讨论,为了基于来自上层的访问提示触发策略,提示需要块级存储操作。为了使底层块层执行访问提示,我们设计并实现了一个块存储数据管理器,该管理器使用第3.2节中描述的两个基本目标驱动程序从DM扩展。 它主要包括块映射表、块级I/O分析器、块调度器和访问提示原子操作模型。块映射表维护逻辑块地址(LBA)到物理块地址(PBA)的映射。Hinteger以固定大小的块的粒度实现块级数据管理这模拟了企业存储管理的场景[22],其中块大小可以是GB级别。此外,Hinteger可以配置不同大小的块大小。如3.2节所述,映射表的大小很小。块级I/O分析器用于监视基于每个块的I/O访问统计信息为了测量每个块的访问频率,使用热图来表示一个周期内的数据访问信息。在用户级,开发了一个用Perl语言编写的可视化工具来实现实时访问统计数据的Hinteger内部有一个周期性的数据迁移策略,它依赖于块访问频率来进行数据迁移。在某些情况下,这些信息可能不准确或不适合进行访问预测;我们仍然可以将其用作评估数据移动正确性的指标。例如,在将数据块迁移到较慢的层之后,访问频率会不断增加。 这可能会触发系统将数据移动或复制到更快的层中。块调度器的设计是根据不同任务的优先级来评估I/O调度块级数据管理器实现了一个简单的块级I/O调度器,通过将请求划分到不同的队列来重新排序访问在当前的原型中,Hinteger支持一个工作队列和一个等待队列。 在默认情况下,Hinteger使用FIFO来维护原始的访问顺序,因此每个请求都进入工作队列的头部。当任务优先级提示到达时,与较低优先级相关联的请求将被添加到等待队列的末尾。的十八日:X. Ge等人ACM Transactions on Storage,Vol.号182、第十八条。出版日期:2022年3月应用程序可以设置一个定时器来调用任务,然后在截止日期之前将请求从等待队列移动到工作队列Hinteger将数据放置和数据移动视为提高异构存储系统性能的基本功能 每个访问提示命令都是一个四项元组:(op,chunk_id,src_addr,dest_addr),其中包含操作类型、块ID号、源地址和逻辑卷中的目标地址。块级数据管理主要包括四种基本的原子操作:REDIRECT、MIGRATE、REPLICATE和PREFETCH。REDIRECT:REDIRECT操作发生在原始请求的I/O位置被重定向到另一个位置时。例如,在具有SSD和HDD的复合逻辑卷中,数据管理器可以发出多个REDIRECT操作以将小文件发送到SSD而不是HDD。 当bio请求进入DM时,REDIRECT将重新分配数据块到目标位置。 重定向函数调用DM中的重定向器驱动程序并管理重定向的I/O请求。迁移:数据迁移在Hinteger中起着至关重要的作用。要启用数据迁移,请在后台运行DataMigrator守护程序 当数据块最初被放置在具有差异化存储设备的存储装置中时,数据访问频率可能会不时地改变。 MIGRATE操作通过调用DM中的migrator目标驱动程序将数据块从原始位置移动到目的位置。为了保证一致性,在迁移过程中,块将被锁定,而不管对该块的传入请求Hinteger提供了两种不同类型的数据迁移。一种是由用户或应用程序触发另一种是基于时间的启发式迁移策略。例如,用户可以配置每两小时的数据迁移,以将热图中的前k个频繁访问的块迁移到最快的设备。REPLICATE:复制功能用于保存应用程序签名的数据块的副本。通过稍微修改返回过程,Hinteger使用了DM中的migrator目标驱动程序这使得映射表保持原始复制指针。跨多个设备添加更多的热块副本将提高数据可用性并减少平均响应时间。我们可以使用REPLICATE创建多个副本来模拟这种情况。与MIGRATE类似,REPLICATE操作在执行过程中锁定块。PREFETCH:PREFETCH操作类似于缓冲。在初始配置中,Hinteger支持为预取缓冲区保留一部分空间PREFETCH操作将数据块从原始空间加载到缓冲区空间。PREFETCH的实现类似于REPLICATE和MIGRATE。主要的区别是PREFETCH不需要在将新的传入I/O提供给该块之前完成块的复制。3.6I/O访问提示分类基本上,I/O访问提示可以从现有系统中静态提取,也可以在系统中动态捕获,甚至可以由用户/应用程序添加 表1显示了两类访问提示,并提供了一些示例。文件系统插件允许系统设计人员将文件系统信息发送到块存储和应用程序。这些信息包括元数据/数据、文件大小等。提示器可以根据静态访问提示决定不同类型数据的初始位置。 为了为应用程序实现更好的QoS,智能数据移动在利用大容量低成本存储空间(例如, 云存储或HDD),并避免更长的网络延迟。····异构存储I/O提示的研究框架十八日:ACM Transactions on Storage,Vol.号182、第十八条。出版日期:2022年3月表1.I/O访问提示类别和一些示例I/O访问提示分类示例静态I/O访问提示元数据/数据文件大小文件类型偏移间隔块大小动态I/O访问提示打开文件读写文件流ID云预取任务优先级Hinteger旨在进一步研究由I/O访问提示控制的动态访问提示旨在帮助块存储管理运行时的数据放置 对于再次打开的冷文件,将捕获此类系统调用以帮助块存储做出预取决策。 动态I/O访问提示可以通过分析工作负载来获得,也可以在运行期间由应用程序和用户辅助获得。这样的访问提示使用用户定义的API跨越主机OS中从用户空间到内核空间的不同层。Hintendum保留了这种设计的开放性,并使其对开发人员具有灵活性访问提示可以基于系统级、进程级、文件级和块级来应用提示提供了执行不同类型提示以评估影响的灵活性数据管理是基于固定大小的块,其大小通常比内存管理中的典型页的大小大得多以前的一些工作(例如,参考文献[49])基于每个I/O实现I/O提示Hinteger在块级别处理I/O,并结合其他信息,如文件结构和用户在Hintendum中任务调度是由进程级管理的。在第4节中,我们将展示如何使用Hinteger来执行一些访问提示。3.7基线系统与欣托没有访问提示的基线系统存储系统内部通常有自己的数据管理来不时地移动数据。Hinteger提供了执行常规I/O请求的基准框架我们使用DM的框架构建了一个基于分层的存储系统在块存储管理器中实现了一种启发式的轻量级分层机制使用不影响请求顺序的FIFO策略来配置块调度I/O分析器根据固定大小的数据块收集访问统计信息内部维护了一个热图,用于可视化和查询。实现了固定大小的块数据迁移策略,以便定期在快速层和慢速层之间移动数据。因此,基线系统中已经能够进行基本数据 根据迁移间隔的不同,访问频率最高的区块通常放置在最快的层上。为了达到灵活性,Hintelet支持在不同配置下播放提示的模式这种方法的主要目的是评估广泛的用例。 对于基线设置,仅启用块级启发式定期数据迁移。 用户可以在运行评估之前配置系统参数。这包括:基线系统迁移间隔。迁移间隔可用于评估当基线系统频繁移动数据时访问提示的工作·十八日:X. Ge等人ACM Transactions on Storage,Vol.号182、第十八条。出版日期:2022年3月大块大小。 当块大小被设置为较小时,提示可以实现更好的准确性,但涉及更多的管理成本。3.8讨论API支持在不同的层中进行更改。 如参考文献[60]中所讨论的,更改任何文件系统以让它们显式地向底层块存储系统发送提示具有明显的好处,但也有缺点。不过,在简单性和标准更改的共识之间存在权衡例如,基于SCSI的I/O提示已经提出多年,而广泛的行业要达成协议还有很长的路要走,行业正在向NVMe发展。Hinteger不实现SCSI级别的提示,而是通过将FS_HINT模块插入VFS级别来对文件系统进行轻微更改对于某些文件系统,如果不支持fiemap,那么我们仍然可以使用来自应用程序的块级统计数据(如热图和提示)来帮助数据管理。然而,移动数据块的准确性可能会降低。生产虽然Hintelements的最初目标是提供一种简单快速的方法来实现和评估访问提示,但Hintelements有潜力通过进一步的努力开发为产品例如,访问提示的标准化应该由行业制定,就像对基于SCSI的I/O子系统的基于T10的I/O提示所做的那样。因此,某些应用程序可能会参与到可以提高性能的微小更改4评价本节将展示我们如何执行和评估四种类型的I/O访问提示:文件系统内部数据分类。通过提取文件系统此外,Hintlets使用一种简单的方法来近似查找每个文件位置的映射在我们的实验中,我们修改了Linux中的两个现代文件系统,ext4和btrfs,以采用这种访问提示。结果表明,通过多个文件系统级的静态提示,实现了高效的智能数据放置。流ID。流ID帮助存储系统提高缓存效率、空间分配和系统可靠性(在基于闪存的存储设备中)等。Hinteger在用户空间中公开了一个接口,因此应用程序可以为每个应用程序以及跨应用程序的写入分配流ID。云预取。我们主要研究访问提示如何有效地集成本地存储和云存储。 数据块预计将自动从本地服务器传输到远程云存储。I/O任务调度。某些任务(如维护任务)被视为后台任务。Hinteger设计了一个块调度器,可以解析来自用户的I/O优先级提示 我们将在实验中使用rsync作为示例。我们实验中使用的Dell Power Server配置有希捷8 TB硬盘驱动器、三星850 pro 512 GBSSD、48 GB DDR3内存和英特尔至强E5-2407 2.20 Ghz CPU。4.1文件系统数据分类在这个评估中,我们将展示Hinteger如何使用文件级静态提示。我们假设一个混合存储系统具有更快的设备和更慢的设备。为了研究文件系统访问提示,我们定义了一个两级文件数据分类模型,如表2所示。块存储层管理器可以基于每个块的数据分类来做出数据放置决策。基于
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功