应用于计算机系统的数据迁移方法和装置、计算机系统与流程

文档序号:11450148阅读:286来源:国知局
本发明涉及计算机
技术领域
:,尤其涉及一种应用于计算机系统的数据迁移方法和装置、计算机系统。
背景技术
::存储器大致可分为两类:易失存储器和非易失存储器(nonvolatilememory,nvm)。nvm包括多种模型,其中一种是永久性存储器(persistentmemory,缩写:pm)。永久性存储器具有直接随机访问与非易失性双重特性的编程模型,可以采用传统虚拟内存管理接口,为文件系统或者数据库提供新的存储行为。现有技术中,将作为内存设备的永久性存储器中的数据迁移到外存储设备中时,需要先将数据从永久性存储器中读取到随机存取存储器(random-accessmemory,ram)后,然后根据数据在ram中的物理地址构建散布表(scattergatherlist,sgl)。直接内存存取(directionalmemoryaccess,dma)引擎根据该散布表来从ram中读取数据并写入到硬盘中。在每一次对永久性存储器和随机存取存储器的操作时都需要访问内存控制器,因此上述数据传输流程中总共有3次对内存控制器的访问,大大影响了内存控制器的带宽。技术实现要素:本发明实施例提供了一种应用于计算机系统的数据迁移方法和装置、计算机系统,能够在将内存设备与外存设备的数据迁移过程中,减少对内存控制器的带宽的影响。本发明实施例第一方面提供了一种应用于计算机系统的数据迁移方法。该方法用于在永久性存储器作为内存设备,且计算机系统中的操作系统访问该内存设备的访问方式为卷访问方式或文件访问方式时,将存储在内存设备中的目标数据迁移到外存设备中。在迁移目标数据之前,获取该目标数据在内存设备中的逻辑地址,并根据该逻辑地址计算目标数据在内存设备中的物理地址,然后构建散布表,该散布表包括目标数据在内存设备中的物理地址;将包含有散布表的信息的迁移指令发送给dma引擎,该散布表的信息包括目标数据在内存设备中的物理地址,该迁移指令用于指示dma引擎根据该物理地址从内存设备中获取该目标数据,并将目标数据写到外存设备中。本方法中,通过根据目标数据在内存设备的逻辑地址计算目标数据在内存设备中的物理地址,这样,可直接根据该目标数据在内存设备中的物理地址生成sgl,而无需将目标数据从内存设备读取到ram后,再根据目标数据在ram中的物理地址构建sgl。由于在这个过程中减少了对ram的操作,因此减少了对内存控制器的访问次数,进而在数据迁移过程中减少了对内存控制器的带宽的影响。其中,当内存设备的访问方式为卷访问方式时,目标数据的逻辑地址包括卷标识、偏移地址及长度,该卷标识为该目标数据所属的逻辑卷的标识。其中,当内存设备的访问方式为文件访问方式时,目标数据的逻辑地址包括文件标识、偏移地址及长度,该文件标识为该目标数据所属的文件在文件系统中的标识。在第一方面的第一种可能的实现方式中,内存设备的访问方式为卷访问方式,根据目标数据在内存设备中的逻辑地址计算目标数据在内存设备中的物理地址包括:根据逻辑地址所包括的卷标识确定目标数据所属的逻辑卷在内存设备中的物理起始地址;根据该逻辑卷的物理起始地址和逻辑地址所包括的偏移地址计算目标数据在内存设备中的物理起始地址;根据目标数据在内存设备中的物理起始地址以及目标数据的长度确定目标数据的物理地址。本实现方式中能够简单快捷地计算出目标数据在内存设备中的物理地址。根据第一方面的第一种可能的实现方式,在第二种可能的实现方式中,计算机系统中存储有映射表,该映射表记录了每个卷标识对应的逻辑卷的物理起始地址和长度;通过在映射表中查询卷标识所对应的物理起始地址来确定目标数据所述的逻辑卷在内存设备中的物理起始地址。通过查询映射表的的方式能够快速准确获取到逻辑卷在内存设备中的物理起始地址。根据第一方面的第一种可能的实现方式,在第三种可能的实现方式中,计算目标数据所属的逻辑卷的物理起始地址和目标数据的逻辑地址中所包括的偏移地址的和,目标数据在内存设备中的物理起始地址为该和。在第一方面的第四种可能的实现方式中,内存设备的访问方式为文件访问方式,根据目标数据在内存设备中的逻辑地址计算目标数据在内存设备中的物理地址包括:根据逻辑地址所包括的文件标识获取目标数据所属的文件在内存设备中的物理起始地址;根据该文件的物理起始地址和逻辑地址所包括的偏移地址计算目标数据在内存设备中的物理起始地址;根据目标数据在内存设备中的物理起始地址以及目标数据的长度确定目标数据的物理地址。本实现方式中能够简单快捷地计算出目标数据在内存设备中的物理地址。根据第一方面的第四种可能的实现方式,在第五种可能的实现方式中,在内存设备中构建文件系统的过程中,计算机系统中存储有映射表,该映射表记录了每个文件标识对应的文件的全路径信息,该全路径信息包括该文件的物理起始地址;通过在映射表中查询文件标识所对应的物理起始地址来确定目标数据所属的文件在内存设备中的物理起始地址。通过查询映射表的方式能够快速准确获取到逻辑卷在内存设备中的物理起始地址。根据第一方面的第四种可能的实现方式,在第六种可能的实现方式中,当处理器中的进程根据目标数据的逻辑地址访问文件系统时,操作系统会先打开进程要访问的目标数据所在的目标文件,然后再对打开的目标文件进行读操作。在操作系统打开目标文件的过程中,操作系统会调用内核,内核会为该进程访问的目标文件分配一个文件标识。在对目标文件进行读操作的过程中,该进程可以根据该文件标识识别要访问的目标文件。当进程访问文件系统时,进程中维护有该进程访问的所有打开的文件的描述信息。以文件标识为索引可以找到目标数据所属的文件的描述信息,并在该文件的描述信息中找到该文件在所述内存设备中的物理起始地址。根据第一方面的第四种可能的实现方式,在第七种可能的实现方式中,计算目标数据所属的文件的物理起始地址和目标数据的逻辑地址中所包括的偏移地址的和,目标数据在内存设备中的物理起始地址为该和。本发明实施例第二方面提供了一种应用于计算机系统的数据迁移方法。该方法用于在永久性存储器作为内存设备,且计算机系统中的操作系统访问该内存设备的访问方式为卷访问方式或文件访问方式时,将存储在外存设备中的目标数据迁移到该内存设备中。在迁移目标数据之前,获取该目标数据待迁移到内存设备中的逻辑地址,并根据该逻辑地址计算目标数据待迁移到内存设备中的物理地址,然后构建散布表,该散布表包括目标数据待迁移到内存设备中的物理地址;将包含有散布表的信息的迁移指令发送给dma引擎,该散布表的信息包括目标数据待迁移到内存设备中的物理地址,该迁移指令用于指示dma引擎从外存设备中获取该目标数据,并根据该物理地址将目标数据写到内存设备中。本方法中,通过根据目标数据待迁移到所述内存设备中的逻辑地址计算对应的物理地址,这样可以直接根据该物理地址构建散布表,使得dma引擎可以根据该散布表将目标数据写入到内存设备中,无需像
背景技术
:中先将外存设备的数据迁移到ram中再根据数据在ram中的物理地址构建sgl,由于减少了对ram的操作,因此减少了对内存控制器的访问次数,进而减少了对内存控制器的带宽的影响。其中,当内存设备的访问方式为卷访问方式时,目标数据待迁移到内存设备中的逻辑地址包括卷标识、偏移地址及长度,该卷标识为该目标数据所属的逻辑卷的标识。其中,当内存设备的访问方式为文件访问方式时,目标数据待迁移到内存设备中的逻辑地址包括文件标识、偏移地址及长度,该文件标识为该目标数据所属的文件在文件系统中的标识。在第二方面的第一种可能的实现方式中,内存设备的访问方式为卷访问方式,根据目标数据待迁移到内存设备中的逻辑地址计算目标数据待迁移到内存设备中的物理地址包括:根据逻辑地址所包括的卷标识确定目标数据待迁移到的逻辑卷在内存设备中的物理起始地址;根据该逻辑卷的物理起始地址和逻辑地址所包括的偏移地址计算目标数据待迁移到内存设备中的物理起始地址;根据目标数据待迁移到内存设备中的物理起始地址以及目标数据的长度确定目标数据待迁移到内存设备中的物理地址。本实现方式中能够简单快捷地计算出目标数据在内存设备中的物理地址。根据第二方面的第一种可能的实现方式,在第二种可能的实现方式中,计算机系统中存储有映射表,该映射表记录了每个卷标识对应的逻辑卷的物理起始地址和长度;通过在映射表中查询卷标识所对应的物理起始地址来确定目标数据待迁移到的逻辑卷在内存设备中的物理起始地址。通过查询映射表的方式能够快速准确获取到逻辑卷在内存设备中的物理起始地址。根据第二方面的第一种可能的实现方式,在第三种可能的实现方式中,计算目标数据待迁移到的逻辑卷的物理起始地址和目标数据的逻辑地址中所包括的偏移地址的和,目标数据在内存设备中的物理起始地址为该和。在第二方面的第四种可能的实现方式中,内存设备的访问方式为文件访问方式,根据目标数据待迁移到内存设备中的逻辑地址计算目标数据待迁移到内存设备中的物理地址包括:根据该逻辑地址所包括的文件标识获取目标数据待迁移到的文件在内存设备中的物理起始地址;根据该文件的物理起始地址和逻辑地址所包括的偏移地址计算目标数据待迁移到内存设备中的物理起始地址;根据目标数据待迁移到内存设备中的物理起始地址以及目标数据的长度确定目标数据迁移到内存设备中的物理地址。本实现方式中能够简单快捷地计算出目标数据在内存设备中的物理地址。根据第二方面的第四种可能的实现方式,在第五种可能的实现方式中,在内存设备中构建文件系统的过程中,计算机系统中存储有映射表,该映射表记录了每个文件标识对应的文件的全路径信息,该全路径信息包括该文件的物理起始地址;通过在映射表中查询文件标识所对应的物理起始地址来确定目标数据迁移到的文件在内存设备中的物理起始地址。通过查询映射表的的方式能够快速准确获取到逻辑卷在内存设备中的物理起始地址。根据第二方面的第四种可能的实现方式,在第六种可能的实现方式中,当处理器中的进程根据目标数据的逻辑地址访问文件系统时,操作系统会先打开进程要访问的目标数据待迁移到的目标文件,然后再对打开的目标文件进行写操作。在操作系统打开目标文件的过程中,操作系统会调用内核,内核会为该进程访问的目标文件分配一个文件标识。在对目标文件进行写操作的过程中,该进程可以根据该文件标识识别要访问的目标文件。当进程访问文件系统时,进程中维护有该进程访问的所有打开的文件的描述信息。以文件标识为索引可以找到目标数据待迁移到的文件的描述信息,并在该文件的描述信息中找到该文件在内存设备中的物理起始地址。根据第二方面的第四种可能的实现方式,在第七种可能的实现方式中,计算目标数据待迁移到的文件的物理起始地址和目标数据的逻辑地址中所包括的偏移地址的和,目标数据待迁移到内存设备中的物理起始地址为该和。第三方面,本发明实施例还提供了用于实现上述第一方面的方法的应用于计算机系统的数据迁移装置。该应用于计算机系统的数据迁移装置包括:确定模块、计算模块、构建模块和发送模块,其中每个模块完成特定的功能,各个模块共同配合用于实现上述第一方面以及第一方面的第一种至第七种可能的实现方式中所提供的应用于计算机系统的数据迁移方法。第四方面,本发明实施例提供了一种计算机系统,该计算机系统包括处理器、内存设备和外存设备。该内存设备可以是永久性存储器,所述计算机系统中的操作系统访问所述内存设备的访问方式为卷volume访问方式或文件file访问方式。该内存设备中存储有目标数据,所述目标数据为需要从内存设备迁移到外存设备的数据。处理器可以为中央处理器。该处理器具体用于执行上述第一方面、第一方面的第一种至第七种可能的实现方式中所提供的应用于计算机系统的数据迁移方法。第五方面,本发明实施例还提供了一种计算机可读存储介质,该存储介质中存储有用于实现上述第一方面中所描述的应用于计算机系统的数据迁移方法的指令或软件模块。第六方面,本发明实施例还提供了用于实现上述第二方面的方法的应用于计算机系统的数据迁移装置。该应用于计算机系统的数据迁移装置包括:确定模块、计算模块、构建模块和发送模块,其中每个模块完成特定的功能,各个模块共同配合实现上述第二方面、第二方面的第一种至第七种可能的实现方式中所提供的应用于计算机系统的数据迁移方法。第七方面,本发明实施例提供了一种计算机系统,该计算机系统包括处理器、内存设备和外存设备。该内存设备永久性存储器,所述计算机系统中的操作系统访问所述内存设备的访问方式为卷volume访问方式或文件file访问方式。该外存设备用于存储目标数据,所述目标数据为需要从外存设备迁移到内存设备的数据。处理器可以为中央处理器。该处理器具体用于执行上述第二方面、第二方面的第一种可能的实现方式至第七种可能的实现方式中所提供的应用于计算机系统的数据迁移方法。第八方面,本发明实施例还提供一种计算机可读存储介质,该存储介质中存储有用于实现上述第二方面、第二方面的第一种可能的实现方式至第七种可能的实现方式中所描述的应用于计算机系统的数据迁移方法的指令或软件模块。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。图1为本发明的计算机系统的一个实施例的结构示意图;图2为本发明实施例的应用于计算机系统的数据迁移方法的一个实施例的结构示意图;图3为内存设备的访问方式为卷访问方式时的地址计算方法的一个实施例的流程示意图;图4为内存设备的访问方式为文件访问方式时的地址计算方法的一个实施例的流程示意图;图5为本发明实施例的应用于计算机系统的数据迁移方法的另一个实施例的结构示意图;图6为本发明的应用于计算机系统的数据迁移装置的一个实施例的结构示意图;图7为本发明的应用于计算机系统的数据迁移装置的另一个实施例的结构示意图。具体实施方式为了使本
技术领域
:的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。为便于理解,下面对本发明中的一些概念进行解释。dma是一种无需处理器的参与就可以让外在设备和系统内存之间进行双向数据传输的硬件机制。在dma传输数据的过程中,要求源物理地址和目标物理地址分别是连续的。但在某些计算机体系中,连续的存储器地址在物理上不一定是连续的,因此dma传输要分成多次完成。针对这个问题,一种解决方法是使用sgl描述物理上不连续的存储空间,然后把该sgl的信息发送至dam引擎。dma引擎在传输完一块物理连续的数据后,不用发起中断,而是根据sgl来传输下一块物理上连续的数据,直到传输完毕后再发起一次中断。如图1所示,图1为本发明的计算机系统的一个实施例的结构示意图。计算机系统包括处理器11、动态随机存储器(dynamicrandomaccessmemory,dram)12、非易失性存储器(non-volatilememory,nvm)13、主机总线适配器(hostbusadapter,hba)14和外存设备15。其中,处理器11可以是中央处理器(centralprocessingunit,cpu)。cpu11是计算机系统的核心,cpu11可以调用计算机系统中不同的软件程序实现不同的功能。例如,cpu11能够实现对内存设备12和外存设备15的访问。可以理解的是,在本发明实施例中,cpu仅仅是处理器11的一个示例。除了cpu外,处理器11还可以是其他特定集成电路(applicationspecificintegratedcircuit,asic),或者是被配置成实施本发明实施例的一个或多个集成电路。dram12通过双倍速率同步(doubledatarate,ddr)总线和处理器11进行通信。处理器11能够高速访问dram12,对dram12中的任一存储单元进行读或写操作。dram12具有访问速度快的优点,因此通常dram作为主内存使用。通常dram12用来存放操作系统中各种正在运行的软件、输入和输出数据以及与外存交换的信息等。然而,dram12是易失性的,当计算机关闭电源后,dram12中的信息将不再保存。本领域技术人员可以知道,dram是易失性内存的一种,实际应用中还可以采用其他的随机存储器(randomaccessmemory,ram)作为计算机系统的内存。例如,还可以采用静态随机存储器(staticrandomaccessmemory,sram)作为计算机系统的内存。nvm13通过ddr总线和处理器11进行通信,与dram12共同作为计算机系统100的内存。需注意的是,下文中所描述的内存设备指的是图1所示架构图中的nvm13。由于新型nvm都具有访问速度快且具有非易失性的特点,并且,这些新型nvm能够按字节(byte)寻址,将数据以位(bit)为单位写入非易失性存储器中,因而能够作为内存使用。与dram12相比,由于nvm13具有非易失性的特点,从而能够更好的保存数据。在本发明实施例中,nvm13被配置为永久性存储器,根据这种方式,即使在计算机系统掉电的情况下存储于nvm13中的数据也不会丢失。在本发明实施例中,计算机系统中的操作系统访问该永久性存储器的访问方式可以为卷(volume)访问方式或文件(file)访问方式。其中,在卷访问方式中,永久性存储器对外展现为多个逻辑卷。在文件访问方式中,永久性存储器对外展现为包括多个文件的文件系统。外存设备15的存储介质需要具有非易失性的特点,当计算机关闭电源后,存储于外存的数据仍然会被保存。并且,外存设备的存储容量较大。作为外存设备的存储器可以是磁盘、固态硬盘(solidstatedrives,ssd)、机械硬盘(harddiskdrive,hdd)、光盘、存储阵列等其他能够存储数据的非易失性的存储设备。外存设备15和hba13通过串行连接小型计算机系统接口(英文:smallcomputersysteminterface;缩写:scsi)接口(英文:serialattachedscsi,缩写:sas)链路连接,处理器和hba通过外设互联标准总线(peripheralcomponentinterconnectexpress,pci-e)连接。hba13包括dma引擎,该dma引擎用于实现数据在与该hba13连接的外存设备和内存设备之间的传输。实际应用中,当内存设备为永久性存储器时,在通过dma的方式将内存设备中的数据迁移到外存设备的情况下,由于cpu所看到存储在内存设备中的目标数据的地址为逻辑地址(也即虚拟地址),而不是实际的物理地址。那么cpu不能根据目标数据的逻辑地址生成sgl,而是先将目标数据从内存设备中迁移到ram中,再根据该目标数据在ram中的物理地址生成sgl,从而使dma引擎能够根据生成的sgl将数据从非易失的内存设备迁移到外存设备中。可以理解的是,图1提供的计算机系统架构图仅仅是nvm作为内存的一种应用场景。实际应用中,计算机系统的内存也可以只包括nvm而不包括dram。由于在本发明实施例中,主要涉及将作为永久性存储器的内存设备的数据迁移到外存设备的应用场景,因此,在本发明实施例中不对具体的计算机系统的结构进行限定,只要是包括内存设备为永久性存储器的计算机系统即可。请参阅图2,图2为本发明的应用于计算机系统的数据迁移方法的一个实施例的流程示意图。图2所示的数据迁移方法可以应用于图1所示的计算机系统中。如图2所示,本实施例中的应用于计算机系统的数据迁移方法包括:201、确定目标数据的第一地址。本实施例中,目标数据存储在图1所示计算机系统的内存设备中,并需要从内存设备迁移到外存设备中。第一地址为所述目标数据在内存设备中的逻辑地址。当所述内存设备的访问方式为卷访问方式时,内存设备呈现给处理器的是多个逻辑卷。第一地址包括卷标识、偏移地址及长度,所述卷标识为所述目标数据所属的逻辑卷的标识。计算机系统中存有映射表,该映射表记录了每个卷标识对应的逻辑卷的物理起始地址和长度。具体举例来说,一个128gb的内存设备包括两个逻辑卷,该两个逻辑卷的id分别为1和2,id为1的逻辑卷的物理地址为0~64gb,id为2的逻辑卷的物理地址为64gb~128gb。当目标数据存储在该内存设备中物理地址为66gb~72gb处时,该目标数据的第一地址包括逻辑卷的id2、偏移地址2gb和长度6gb。当所述内存设备的访问方式为文件访问方式时,内存设备呈现给处理器的是用于管理多个文件的文件系统。第一地址包括文件标识、偏移地址及长度,所述文件标识为所述目标数据所属的文件在文件系统中的标识,其中,文件标识可以是一些数字或其他文件描述符(或者文件句柄)。202、根据所述第一地址计算所述目标数据在所述内存设备中的物理地址。下面以所述内存设备的访问方式为卷访问方式为例对其中一种的计算方法进行举例说明。如图3所示,图3为内存设备的访问方式为卷访问方式时的地址计算方法的一个实施例的流程示意图。该地址计算方法包括:s31、根据所述卷标识确定所述目标数据所属的逻辑卷在所述内存设备中的物理起始地址。具体的,在步骤201中所描述的映射表中通过目标数据所在的逻辑卷的id查询该逻辑卷的物理起始地址。例如,paddr_start_vol=volume_table[v_id],其中,volume_table[]为查询映射表的函数,v_id为目标数据所属的逻辑卷的id,paddr_start_vol为目标数据所属的逻辑卷的物理起始地址。s32、根据所述逻辑卷的物理起始地址和所述偏移地址计算所述目标数据在所述内存设备中的物理起始地址。具体的,第一地址中包括的偏移地址为v_addr,m_addr为目标数据在所述内存设备中的物理起始地址,那么m_addr=paddr_start_vol+v_addr。s33、根据所述目标数据在所述内存设备中的物理起始地址以及所述目标数据的长度确定所述目标数据的物理地址。计算出目标数据在所述内存设备中的物理起始地址m_addr后,确定所述目标数据在内存设备中的物理地址包括m_addr和所述目标数据的长度。具体举例来说,目标数据的第一地址包括逻辑卷的id2、偏移地址2gb和长度6gb。那么可根据该逻辑卷的id2在步骤201中所举例的内存设备对应的映射表中查询到该id对应的逻辑卷的物理起始地址为64gb。由于第一地址中包括目标数据的偏移地址为2gb,那么可计算出目标数据在所述内存设备中的物理起始地址为64gb+2gb=66gb。目标数据的长度是已知的,因此目标数据在所述内存设备中的的物理地址包括物理起始地址66gb和数据长度2gb。下面以所述内存设备的访问方式为文件访问方式为例对其中一种的计算方法进行举例说明。如图4所示,图4为内存设备的访问方式为文件访问方式时的地址计算方法的一个实施例的流程示意图。该地址计算方法包括:s41、根据所述文件标识获取所述目标数据所属的文件在所述内存设备中的物理起始地址。实际应用中,在所述内存设备中构建文件系统的过程中,计算机系统中存有映射表,该映射表记录了每个文件标识对应的文件的全路径信息,该全路径信息包括该文件的物理起始地址。在本步骤中,可以根据所述文件标识以及文件系统中存储的映射表获得所述目标数据所属的文件在所述内存设备中的物理起始地址。或者,当处理器中的进程根据目标数据的逻辑地址访问文件系统时,操作系统会先打开进程要访问的目标数据所在的目标文件,然后再对打开的目标文件进行读操作。在操作系统打开目标文件的过程中,操作系统会调用内核,内核会为该进程访问的目标文件分配一个文件标识。文件标识是当前进程识别目标文件的唯一标识。在对目标文件进行读操作的过程中,该进程可以根据该文件标识识别要访问的目标文件。当进程访问文件系统时,进程中维护有该进程访问的所有打开的文件的描述信息,以文件标识为索引可以找到目标数据所属的文件的描述信息,并在该文件的描述信息中找到该文件在所述内存设备中的物理起始地址。s42、根据所述文件的物理起始地址和所述偏移地址计算所述目标数据在所述内存设备中的物理起始地址。具体的,所述目标数据在所述内存设备中的物理起始地址为所述文件的物理起始地址和所述偏移地址的和。s43、根据所述目标数据在所述内存设备中的物理起始地址以及所述目标数据的长度确定所述目标数据的物理地址。计算出目标数据在所述内存设备中的物理起始地址m_addr后,确定所述目标数据在内存设备中的物理地址包括m_addr和所述目标数据的长度。以上描述仅为对“根据所述第一地址计算所述目标数据在所述内存设备中的物理地址”的举例,并不作限制。203、构建散布表,所述散布表包括所述物理地址。将目标数据在所述内存设备中的物理地址填写到散布表中。具体的,获取sg_list指针,根据dma规范填写sgl信息,其中,将目标数据在内存设备中的物理地址填入sg_list指针中。举例来说,目标数据在内存设备中的物理地址包括22gb~34gb、39gb~44gb、56gb~78gb,那么依次将各物理地址填入sg_list指针中。204、向dma引擎发送迁移指令,所述迁移指令中包括所述散布表的信息。构建好sgl后,为将目标数据迁移到外存设备中,处理器需向外存设备所连接的hba中的dma引擎发送迁移指令,其中,该迁移指令中包括目标数要迁移到外存设备中的地址以及sgl的信息,该sgl的信息包括目标数据在内存设备中的物理地址,该迁移指令用于指示dma引擎根据sgl中的物理地址从内存设备中读取目标数据,并根据目标数要迁移到外存设备中的地址将目标数据写入外存设备中。本实施例中,处理器通过根据目标数据在内存设备的逻辑地址计算目标数据在内存设备中的物理地址,这样,可直接根据该目标数据在内存设备中的物理地址生成sgl,而无需将目标数据从内存设备读取到ram后,再根据目标数据在ram中的物理地址构建sgl,由于减少了对ram的操作,因此减少了对内存控制器的访问次数,进而减少了对内存控制器的带宽的影响。上面对将目标数据从操作系统中的内存设备迁移到外存设备的方法,下面对就将目标数据从操作系统中的外存设备传输到内存设备的方法进行描述。如图5所示,图5为本发明的应用于计算机系统的数据迁移方法的一个实施例的流程示意图。图5所示的数据迁移方法也可以应用于图1所示的计算机系统中。如图5所示,本实施例中的应用于计算机系统的数据迁移方法包括:501、确定目标数据的第一地址。本实施例中,目标数据存储在图1所示计算机系统的外存设备中,并需要从外存设备迁移到内存设备中。第一地址为所述目标数据待迁移到所述内存设备中的目的地址。由于内存设备为非易失性存储器,所述内存设备的访问方式为卷volume访问方式或文件file访问方式,因此第一地址为逻辑地址。具体解释可参考步骤201中的解释说明,在此不再赘述。502、根据所述第一地址计算所述目标数据待迁移到所述内存设备中的物理地址。本实施例中,计算物理地址的方法可参考步骤202的解释说明,在此不再赘述。503、构建散布表,所述散布表包括所述物理地址。将目标数据待迁移到所述内存设备中的物理地址填写到散布表中。具体的,获取sg_list指针,根据dma规范填写sgl信息,其中,将目标数据待迁移到所述内存设备中的物理地址填入sg_list指针中。举例来说,目标数据待迁移到所述内存设备中的物理地址包括22gb~34gb、39gb~44gb、56gb~78gb,那么依次将各物理地址填入sg_list指针中。504、向dma引擎发送迁移指令,所述迁移指令包括所述散布表的信息。构建好sgl后,为将目标数据从外存设备迁移到内存设备中,处理器需向该外存设备所连接的hba中的dma引擎发送指示,该指示包括sgl的信息,该迁移指令用于指示dma引擎从外存设备中读取目标数据,并根据sgl中的物理地址将目标数据写入内存设备中。现有技术中,由于构建sgl时需要根据物理地址来构建,因此将外存设备的数据迁移到内存设备中时需要先根据sgl将数据先传输到ram中,再从ram写到内存设备中;本实施例中,通过根据目标数据待迁移到所述内存设备中的逻辑地址计算对应的物理地址,这样可以根据该物理地址构建散布表,使得dma引擎可以根据该散布表直接将目标数据写入到内存设备中,由于减少了对ram的操作,因此减少了对内存控制器的访问次数,进而减少了对内存控制器的带宽的影响。进一步的,本实施例中,内存设备的访问模式为卷访问模式或者文件访问模式,在将目标数据迁移到内存设备后,目标数据在内存设备中的地址采用的是逻辑地址。因此,处理器在向dma引擎发送迁移指令之后,还需根据目标数据在目标内存设备中物理地址计算对应的逻辑地址,下面对处理器根据所述目标数据在内存设备中的物理地址计算对应的逻辑地址的方法进行说明。具体的,以内存设备的访问模式为卷访问模式为例。首先,根据所述目标数据待迁移到的逻辑卷在所述内存设备中的物理起始地址确定所述逻辑卷的卷标识。具体的,在步骤201中所描述的映射表中通过该目标数据待迁移到内存设备中的物理起始地址查询该目标数据待迁移到的逻辑卷的id。其次,根据所述逻辑卷的卷标识和所述目标数据在所述内存设备中的物理起始地址计算偏移地址。确定逻辑卷的卷标识后,可在映射表中查询到该逻辑卷的物理起始地址。由于所述目标数据在所述内存设备中的物理起始地址为该逻辑卷的物理起始地址和偏移地址的和,因此偏移地址为所述目标数据在所述内存设备中的物理起始地址减去该逻辑卷的物理起始地址得到的差。根据所述逻辑卷的卷标识、偏移地址和所述目标数据的长度确定所述目标数据待迁移到所述内存设备中的逻辑地址。当内存设备的访问方式为文件访问方式时,将所述目标数据在内存设备中的物理地址计算对应的逻辑地址的方法可以参考以上举例,只是在查询目标数据待迁移到的文件的文件标识时是在用于记录文件系统中的映射表中进行查询。上面对本发明实施例中的应用于计算机系统的数据迁移方法进行了描述,下面对本发明实施例中的应用于计算机系统的数据迁移装置进行描述,其中应用于计算机系统的数据迁移装置用于执行上述应用于计算机系统的数据迁移方法。请参阅图6,图6为本发明的应用于计算机系统的数据迁移装置的一个实施例的结构示意图。本实施例中,应用于计算机系统的数据迁移装置600包括:确定模块601,用于确定目标数据的第一地址,其中,所述目标数据为需要从内存设备迁移到外存设备的数据,所述第一地址为所述目标数据在内存设备中的逻辑地址,所述内存设备为永久性存储器pm,所述计算机系统中的操作系统访问所述内存设备的访问方式为卷volume访问方式或文件file访问方式;计算模块602,用于根据所述第一地址计算所述目标数据在所述内存设备中的物理地址;构建模块603,用于构建散布表,所述散布表包括所述目标数据在所述内存设备中的物理地址;发送模块604,用于向直接内存存取dma引擎发送迁移指令,所述迁移指令中包括所述散布表的信息,所述迁移指令用于指示所述dma引擎根据所述物理地址从所述内存设备中获取所述目标数据,并将所述目标数据写到外存设备中。可选的,当所述内存设备的访问方式为卷访问方式时,所述第一地址包括卷标识、偏移地址及长度,所述卷标识为所述目标数据所属的逻辑卷的标识,所述计算模块具体用于:根据所述卷标识确定所述目标数据所属的逻辑卷在所述内存设备中的物理起始地址;根据所述逻辑卷的物理起始地址和所述偏移地址计算所述目标数据在所述内存设备中的物理起始地址;根据所述目标数据在所述内存设备中的物理起始地址以及所述目标数据的长度确定所述目标数据的物理地址。可选的,当所述内存设备的访问方式为文件访问方式时,所述第一地址包括文件标识、偏移地址及长度,所述文件标识为所述目标数据所属的文件在文件系统中的标识;所述计算模块具体用于:根据所述文件标识获取所述目标数据所属的文件在所述内存设备中的物理起始地址;根据所述文件的物理起始地址和所述偏移地址计算所述目标数据在所述内存设备中的物理起始地址;根据所述目标数据在所述内存设备中的物理起始地址以及所述目标数据的长度确定所述目标数据的物理地址。对本实施例中的应用于计算机系统的数据迁移装置的具体说明可参考图2至图4所示实施例中的描述,在此不再赘述。请参阅图7,图7为本发明的数据传输装置的一个实施例的结构示意图。本实施例中,数据传输装置700包括:确定模块701,确定待迁移的目标数据的第一地址,其中,所述目标数据为需要从外存设备迁移到内存设备的数据,所述第一地址为所述内存设备中的地址,所述第一地址为逻辑地址,所述内存设备为为永久性存储器,所述计算机系统中的操作系统访问所述内存设备的访问方式为卷volume访问方式或文件file访问方式;计算模块702,根据所述第一地址计算所述目标数据待迁移到所述内存设备中的物理地址;构建模块703,构建散布表,所述散布表包括所述物理地址;发送模块704,向dma引擎发送迁移指令,所述迁移指令包括所述散布表的信息,所述迁移指令用于指示所述dma引擎根据所述物理地址将所述目标数据写到所述内存设备中。可选的,当所述内存设备的访问方式为卷访问方式时,所述第一地址包括卷标识、偏移地址及长度,所述卷标识为所述目标数据待迁移到的逻辑卷的标识,所述计算模块具体用于:根据所述卷标识确定所述目标数据待迁移到的逻辑卷在所述内存设备中的物理起始地址;根据所述逻辑卷的物理起始地址和所述偏移地址计算所述目标数据待迁移到所述内存设备中的物理起始地址;根据所述目标数据待迁移到所述内存设备中的物理起始地址以及所述目标数据的长度确定所述目标数据待迁移到所述内存设备中的物理地址。可选的,当所述内存设备的访问方式为文件访问方式时,所述第一地址包括文件标识、偏移地址及长度,所述文件标识为所述目标数据待迁移到的文件系统中的标识,所述计算模块具体用于:根据所述文件标识获取所述目标数据待迁移到的文件在所述内存设备中的物理起始地址;根据所述文件的物理起始地址和所述偏移地址计算所述目标数据待迁移到所述内存设备中的物理起始地址;根据所述目标数据待迁移到所述内存设备中的物理起始地址以及所述目标数据的长度确定所述目标数据待迁移到所述内存设备中的物理地址。对本实施例中的应用于计算机系统的数据迁移装置的具体说明可参考图5所示实施例中的描述,在此不再赘述。上面从单元化功能实体的角度对本发明实施例中的应用于计算机系统的数据迁移装置进行了描述,下面从硬件处理的角度对本发明实施例中的应用于计算机系统的数据迁移装置进行描述。本发明中的应用于计算机系统的数据迁移装置的一个具体实施例为图2所示计算机系统中的处理器,该处理器用于采用图2至图5所示实施例中的方法来构建散布表并向dma引擎发送迁移指令,以指示dma引擎根据该迁移指令将计算机系统中的外存设备中的数据迁移到内存设备中,或者指示dma引擎根据该迁移指令将计算机系统中的内存设备的数据迁移到外存设备中。在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1