CN116821075A - 数据去重的方法和电子设备 - Google Patents
数据去重的方法和电子设备 Download PDFInfo
- Publication number
- CN116821075A CN116821075A CN202210280417.2A CN202210280417A CN116821075A CN 116821075 A CN116821075 A CN 116821075A CN 202210280417 A CN202210280417 A CN 202210280417A CN 116821075 A CN116821075 A CN 116821075A
- Authority
- CN
- China
- Prior art keywords
- data
- data block
- physical address
- electronic device
- memory data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 75
- 230000015654 memory Effects 0.000 claims abstract description 210
- 238000013507 mapping Methods 0.000 claims abstract description 152
- 238000004364 calculation method Methods 0.000 claims description 11
- 238000004891 communication Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 5
- 238000012545 processing Methods 0.000 claims description 4
- 230000006870 function Effects 0.000 description 14
- 238000004422 calculation algorithm Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 8
- 238000000638 solvent extraction Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种数据去重的方法,该方法应用于电子设备,该方法包括:电子设备获取应用程序的第一信息;第一信息包括写I/O大小和写入的页偏移;电子设备根据所述第一信息获取第一内存数据块;电子设备计算所述第一内存数据块的第一数据指纹;电子设备确定是否存在与所述第一数据指纹的对应的第一物理地址;当确定存在所述第一数据指纹的对应的第一物理地址时,电子设备更新所述第一内存数据块和所述第一物理地址的映射关系。该技术方案可以在电子设备使用文件系统进行数据去重时,实现重复数据的零拷贝开销或接近零拷贝开销。
Description
技术领域
本申请实施例涉及数据去重技术领域,并且更具体地,涉及一种数据去重的方法和电子设备。
背景技术
在数据去重领域,用户可以使用闪存控制器去重和文件系统去重。使用闪存控制器去重时,重复块查找流程可以直接控制地址映射表查看具有相同数据指纹的块,去重效果较好,方案易于实现,但该方案依赖特定的硬件,不够灵活。而使用文件系统进行去重时,文件系统的写输入/输出(input/output,I/O)从应用程序传输到内核需要经过一次数据拷贝,也就是将数据从用户空间拷贝到内核空间,因此,对于重复数据存在额外的拷贝开销。
发明内容
本申请实施例提供了一种数据去重的方法和电子设备,该技术方案可以在使用文件系统进行数据去重时,实现重复数据的零拷贝开销或接近零拷贝开销。
第一方面,提供了一种数据去重的方法,所述方法应用于电子设备,所述方法包括:所述电子设备获取应用程序的第一信息;所述第一信息包括写I/O大小和写入的页偏移;所述电子设备根据所述第一信息获取第一内存数据块;所述电子设备计算所述第一内存数据块的第一数据指纹;所述电子设备确定是否存在与所述第一数据指纹的对应的第一物理地址;当确定存在与所述第一数据指纹对应的第一物理地址时,所述电子设备更新所述第一内存数据块和所述第一物理地址的映射关系。本申请实施例中,电子设备可以获取应用程序的第一信息,并根据该第一信息获取第一内存数据块,该第一内存数据块可以是多个内存数据块,并计算该第一内存数据块的数据指纹,当确定存在该数据指纹对应的物理地址时,可以确定该内存数据块中的数据已经存在,则可以直接更新该第一内存数据块和第一物理地址的映射关系,而无需传递该第一内存数据块的数据本身,使得该技术方案在进行数据去重时,可以实现重复数据的零拷贝开销或接近零拷贝开销,从而可以提升应用程序写流程的速度。
结合第一方面,在第一方面的一种实现方式中,所述电子设备根据所述第一信息获取第一内存数据块,包括:所述电子设备根据页面大小和所述写入的页偏移对所述写I/O大小进行分割,以获取所述第一内存数据块。本申请实施例中,当应用程序产生的写I/O大小较大时,电子设备可以根据页面大小和写入的页偏移对写I/O大小进行分割,从而可以得到第一内存数据块,从而有利于电子设备以数据块为单位进行后续数据去重的操作
示例性地,该页面大小一般为4KB。页面大小为4KB的内存数据块称为页面对齐的数据块。
应理解,当文件I/O大小小于或等于页面大小(例如,4KB)时,可以无需对文件I/O进行分割,而是将该文件I/O大小当作是一个内存数据块。
结合第一方面,在第一方面的一种实现方式中,当所述第一内存数据块包括多个页面对齐的内存数据块时,所述电子设备计算所述第一内存数据块的第一数据指纹,包括:所述电子设备在所述应用程序的用户空间中对所述第一内存数据块进行第一计算,得到所述第一数据指纹。在本申请的一个实施例中,当第一内存数据块包括的内存数据块为页面对齐的内存数据块时,电子设备可以在应用程序的用户空间中直接对该第一内存数据块进行计算得到对应的第一数据指纹,从而有利于电子设备根据该第一数据指纹查询对应的物理地址,无需将实际的数据传递至内核空间,实现了零数据拷贝。
结合第一方面,在第一方面的一种实现方式中,当所述第一内存数据块包括多个页面对齐的内存数据块和一个非页面对齐的内存数据块时,在所述电子设备计算所述第一内存数据块的第一数据指纹之前,所述方法还包括:所述电子设备将所述非页面对齐的内存数据块中的数据从所述应用程序的用户空间传输至所述电子设备的内核空间;所述电子设备在所述内核空间中将所述非页面对齐的内存数据块转换为页面对齐的内存数据块。在本申请的一个实施例中,当第一内存数据块中包括页面对齐的内存数据块和非页面对齐的内存数据块时,电子设备可以在内核空间中将该非页面对齐的内存数据块转换成页面对齐的内存数据块,从而电子设备只需将一个非页面对齐的内存数据块中的数据从用户空间传输至内核空间,大大减少了传输数据的数据量,基本实现了零数据拷贝。
结合第一方面,在第一方面的一种实现方式中,所述第一信息还包括文件描述符;在所述电子设备更新所述第一内存数据块和所述第一物理地址的映射关系之前,所述方法还包括:所述电子设备将所述文件描述符、所述写入的页偏移、所述第一物理地址从所述应用程序的用户空间传输至所述电子设备的内核空间。在本申请实施例中,电子设备将文件描述符、写入的页偏移、第一物理地址从用户空间传输至内核空间,从而可以无需将第一内存数据块的数据本身拷贝至内核空间,减少了数据拷贝。
结合第一方面,在第一方面的一种实现方式中,所述电子设备更新所述第一内存数据块和所述第一物理地址的映射关系,包括:根据所述文件描述符、所述写入的页偏移、所述第一物理地址,所述电子设备在所述内核空间中更新所述第一内存数据块和所述第一物理地址的映射关系。在本申请实施例中,电子设备可以根据文件描述符、写入的页偏移和第一物理地址更新第一内存数据块和所述第一物理地址的映射关系,从而可以无需将第一内存数据块的数据本身拷贝至内核空间,减少了数据拷贝,提升了写流程的速度。
结合第一方面,在第一方面的一种实现方式中,所述电子设备中存储有第一映射表,所述第一映射表为数据指纹和物理地址的映射表;所述确定存在与所述第一数据指纹的对应的第一物理地址,包括:根据所述第一数据指纹从所述第一映射表中查询到所述第一物理地址。在本申请实施例中,电子设备中存储有数据指纹和物理地址的映射表,从而可以便捷的从该映射表中查询第一数据指纹对应的第一物理地址,从而可以确定该第一数据指纹对应的数据块中的数据是重复的。
结合第一方面,在第一方面的一种实现方式中,所述方法还包括:当确定不存在与所述第一数据指纹的对应的第一物理地址时,所述电子设备为所述第一内存数据块分配第一物理数据块;所述电子设备将所述第一内存数据块中的数据写入所述第一物理数据块。本申请实施例中,当确定不存在第一数据指纹对应的第一物理地址时,可以确定该第一内存数据块中的数据不是重复的,此时,电子设备可以为其分配新的物理数据块用于存储其数据。
结合第一方面,在第一方面的一种实现方式中,所述第一物理数据块对应的物理地址为第二物理地址,所述方法还包括:所述电子设备保存所述第一内存数据块和所述第二物理地址的映射关系。基于本申请实施例,电子设备可以保存第一内存数据块和其数据实际存储所在的第二物理地址的映射关系,从而可以确定该第一内存数据块的实际存储位置。
结合第一方面,在第一方面的一种实现方式中,所述方法还包括:所述电子设备计算所述第一物理数据块的第二数据指纹;所述电子设备将所述第二数据指纹和所述第二物理地址保存至所述第一映射表中。基于本申请实施例,电子设备将第二数据指纹和第二物理地址保存至第一映射表中,以更新该第一映射表,从而可以保证在下一次进行数据去重时的准确性。
结合第一方面,在第一方面的一种实现方式中,所述方法还包括:所述电子设备将所述第一映射表从所述电子设备的内核空间映射到所述应用程序的用户空间。在本申请的一个实施例中,电子设备将第一映射表从内核空间映射到应用程序的用户空间,从而可以保证该第一映射表在用户态和内核态是共享的,从而可以增加用户态搜索数据块对应物理地址的速度。
第二方面,提供了一种电子设备,包括用于实现如第一方面及其任一种可能的实现方式中所述的数据去重的方法中的模块。
第三方面,提供了一种电子设备,包括:一个或多个处理器;一个或多个存储器;所述一个或多个存储器存储有一个或多个计算机程序,所述一个或多个计算机程序包括指令,当所述指令被一个或多个处理器执行时,使得如第一方面及其任一种可能的实现方式中所述的数据去重的方法被执行。
第四方面,提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口用于接收信号,并将所述信号传输至所述处理器,所述处理器处理所述信号,使得如第一方面及其任一种可能的实现方式中所述的数据去重的方法被执行。
第五方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,当所述计算机指令在计算机上运行时,使得如第一方面及其任一种可能的实现方式中所述的数据去重的方法被执行。
第六方面,提供了一种计算机程序产品,包括计算机指令,当所述计算机指令在计算机上运行时,使得如第一方面及其任一种可能的实现方式中所述的数据去重的方法被执行。
附图说明
图1是本申请实施例可以适用的系统架构的示意图。
图2是本申请实施例提供的一种数据去重的方法的示意性流程图。
图3是本申请实施例提供的一种地址映射关系的示意图。
图4是本申请实施例提供的一种数据去重的方法的示意性流程图。
具体实施方式
下面将结合附图,对本申请实施例中的技术方案进行描述。
在介绍本申请的技术方案之前,首先对本申请实施例涉及的部分专业术语做简单的介绍。
用户空间:提供应用程序运行的空间。当一个进程运行于用户空间中,称该进程处于用户运行态(或简称为用户态)。
内核空间:内核代码运行的位置,在这个空间下运行的进程可以比在用户空间下运行的进程拥有更多的访问系统的权限。当一个任务(进程)执行系统调用而陷入内核代码中执行时,称该进程处于内核运行态(或简称为内核态)。
逻辑地址(logical address):在计算机体系结构中是指应用程序角度看到的内存单元(memory cell)、存储单元(storage element)、网络主机(network host)的地址。
物理地址(physics address):加载到内存存储器中的地址,内存单元的真正地址。例如,存储数据的数据块真实所在的地址。
页面对齐:内存进行分页机制时,一般会找到每一个4k地址的边界处,进行分页操作,一页的大小一般是4KB。本申请实施例中,对于应用程序产生的写I/O按照每4KB分割成多个数据块,分割成4KB的I/O可以是页面对齐的I/O。相应的,对于分割之后不足4KB的I/O可以是非页面对齐的I/O。
索引节点(inode):每个文件对应一个inode,每个inode都有一个号码,操作系统用inode号码来识别不同的文件。
页偏移:如果每个页面大小为2kB,用二进制数标识逻辑地址,则末尾k位即为页偏移量,其余部分为页号。
文件描述符(file descriptor,FD):系统中,大部分的I/O操作都会被分配一个整数作为编号,该整数可以作为这个I/O操作的文件描述符。
可移植操作系统接口(portable operating system interface of UNIX,POSIX):用于在不同操作系统之间进行移植的接口。
在数据去重领域,用户可以使用闪存控制器去重和文件系统去重。使用闪存控制器去重时,重复块查找流程可以直接控制地址映射表查看具有相同数据指纹的块,去重效果较好,方案易于实现,但该方案依赖硬件,不够灵活。而使用文件系统进行去重时,文件系统的写I/O从应用程序传输到内核需要经过一次数据拷贝,即将数据从用户空间拷贝到内核空间,因此,对于重复数据存在额外的拷贝开销。
有鉴于此,本申请实施例提供一种数据去重的方法和电子设备,该技术方案可以在使用文件系统进行数据去重时,实现重复数据的零拷贝开销。
图1是本申请实施例可以适用的系统架构的示意图。如图1所示,该数据去重的方法可以应用于电子设备100中,该电子设备100可以包括安装的多个应用程序110,用户态去重模块120、内核空间130。其中,内核空间130中可以包括页缓存层131和内核去重文件系统150。该应用程序可例如为华为音乐、华为视频、华为应用市场等,本申请实施例对此不予限定。
该内核去重文件系统150中可以包括去重模块B132、FP-PA映射表140a、计算模块136、分配模块135、写模块134和更新模块133等。在一些实施例中,该去重文件系统150也可以包括上述模块中的部分,本申请不予限定。
可以理解的是,该用户态去重模块120可以通过只读的方式访问该FP-PA映射表140a。例如,电子设备将FP-PA映射表140a通过直接映射的方式映射到用户态去重模块120中,以得到只读的FP-PA映射表140b。
在一些实施例中,对于一个应用程序110来说,在其需要写入数据时,电子设备100可以确定写入的数据是否是重复数据。如果该数据是重复数据,则可以直接更新该重复数据对应的物理地址,从而无需传递重复数据本身,减少了数据拷贝,进而可以加快写流程的速度。
在一些实施例中,当应用程序110产生一个写I/O时,用户态去重模块120中的I/O分割模块121可以对该写I/O的大小进行分割,得到多个页面对齐的数据块(例如,大小为4KB)。去重模块A122可以根据数据指纹算法计算每个数据块的数据指纹,并根据数据块的数据指纹从数据指纹-物理地址(fingerprinting-physics address,FP-PA)映射表140b中查询数据指纹对应的物理地址。当从FP-PA映射表140b中查询到数据块对应的物理地址之后,意味着该数据块中的数据已经存在,则去重模块A122可以将该数据块的数据指纹、物理地址、写入的页偏移、文件描述符等信息通过系统接口直接传入内核去重文件系统150中,而不是传输数据块的具体数据,内核去重文件系统150中的更新模块133根据接收到的数据指纹、物理地址、写入的页偏移、文件描述符等信息对文件的inode的物理地址进行更新。
基于上述各实施例提供的技术方案,应用程序在用户空间可以确定应用程序写I/O对应的数据是重复的,从而无需将数据块的具体数据从用户空间拷贝到内核空间,进而避免了额外的数据拷贝,从而可以加快文件去重和读写的速度。
例如,该文件的inode可以为哈希映射或哈希表(hashmap/hashtable),其中,该inode中的关键码(key)是页偏移,值(value)是文件数据所在的物理地址。假若应用程序需要从一个文件第4097个字节的位置(写入的页偏移),写入4096字节的数据。那么,页偏移可以通过4097除以页面大小4096字节(4KB),得到页偏移为1,余数为1。也就是从文件的第二个页的第1个字节的位置开始写入4096字节的数据。因此,该第二个页是页面对齐的,此时计算该第二个页的数据指纹A,当该数据指纹A有对应的物理地址A时。更新模块130可以根据文件描述符FD获取该文件的inode,并将页偏移1和物理地址A的映射关系(key-value)更新到该inode中,从而可以无需传递具体的数据,实现去重数据的零数据拷贝,从而可以提升数据读写的速度。
应理解,一个页中的数据可以表示一个数据块。
应理解,该文件的inode还可以是数组、跳表、B树等数据结构,本申请实施例对此不予限定。
在一些实施例中,用户态去重模块120可以通过LD-PRELOAD标识对应用程序110的POSIX的函数进行拦截,从而获取需要写入的写I/O尺寸。该POSIX的函数可以是open函数、write函数、pwrite函数、lseek函数和close函数等。应理解,通过使用LD-PRELOAD获取应用程序的写I/O尺寸,该应用程序是无感知的。
该去重模块A122将该数据块的数据指纹、物理地址、写入的页偏移、文件描述符等信息传入内核去重文件系统150中使用的系统接口可以是输入输出控制(input andoutput control,ioctl)接口,从而可以避免冗长的I/O栈的开销。
在一些实施例中,当I/O分割模块121对写I/O的大小进行裁剪后,可能会得到多个页面对齐的数据块和一个非页面对齐的数据块B。例如,写I/O的大小为13KB,则对该写I/O的大小进行裁剪后,可以得到3个页面对齐的数据块(例如大小为4KB)和一个非页面对齐的数据块B(例如大小为1KB)。对于非页面对齐的数据块B,I/O分割模块121通过系统接口(例如POSIX)传输至内核空间130,其中,内核空间130中的页缓存层131会对非页面对齐的数据块B转换成页面对齐的数据块B。
在一些实施例中,页缓存层131可以对该数据块B进行补零处理,以将该数据块B的大小补至4KB。例如,将数据块B变为页面对齐的数据块。
在一些实施例中,内核去重文件系统中的去重模块B132可以根据数据指纹算法计算该数据块B的数据指纹B,并根据该数据指纹B从FP-PA映射表140a中查询数据指纹B对应的物理地址。当从FP-PA映射表140a中查询到数据块B对应的物理地址B之后,意味着该数据块B中的数据已经存在,则去重模块B132可以将该数据指纹B、物理地址B、写入的页偏移、文件描述符等信息传输至更新模块133。对应的,更新模块133可以根据接收到的数据指纹B、物理地址B、写入的页偏移、文件描述符等信息对文件的inode的物理地址进行更新。
对于文件的非页对齐的数据块,数据块的具体数据需要传输至内核空间进行去重,从而可以保证去重效率,且该数据块的数据量较小(例如可以小于4KB),从而对文件读写效率的影响更小。
例如,该文件的inode可以为哈希映射或哈希表,其中,该inode中的key是页偏移,value是文件数据所在的物理地址。假若应用程序需要从一个文件第5000个字节的位置(写入的页偏移),写入100字节的数据。那么,页偏移可以通过5000除以页面大小4096字节(4KB),得到页偏移为1(对应的页面为第二个页),余数为904。也就是从文件的第二个页的第904字节的位置开始写入100字节数据。由于页面是4KB对齐的,所以即使只修改了第二个页的其中100个字节,也需要将整个页重新写一次,之后计算该第二个页的数据指纹B。当该数据指纹B有对应的物理地址B时,更新模块133可以根据文件描述符FD获取该文件的inode,并将页偏移1和物理地址B的映射关系(key-value)更新到该inode中。
可以理解的是,对于页面对齐的数据块的处理方式可以参见前文中的描述。
应理解,该数据指纹算法可以是安全散列算法,如sha256、sha224、sha238、sha512等等。
在一些实施例中,当去重模块A122根据数据指纹从FP-PA映射表140b中未查询到对应的物理地址时,和/或,去重模块B132根据数据指纹B从FP-PA映射表140a中未查询到对应的物理地址时,意味着相应的数据指纹对应的数据块中的数据是不重复的。
在一种可能的实现方式中,I/O分割模块121对应用程序产生的写I/O的大小进行裁剪后,得到的所有的数据块均为页面对齐的数据块。当去重模块A122根据数据块的数据指纹从FP-PA映射表140b中未查询到对应的物理地址时,可以通过系统接口(如ioctl接口)将数据块的具体数据传输至分配模块135,该分配模块135将为数据分配新的数据块,写模块134将数据写入新的数据块中。更新模块133基于此更新文件的inode的物理地址。此外,计算模块136将根据数据指纹算法计算数据块的数据指纹,并将数据指纹和物理地址的对应关系插入FP-PA映射表140a中。
在另一种可能的实现方式中,I/O分割模块121对应用程序产生的写I/O的大小进行裁剪后,得到若干页面对齐的数据块和一个非页面对齐的数据块B。当去重模块B132根据数据块的数据指纹从FP-PA映射表140b中未查询到对应的物理地址时,分配模块135将为该数据块B的具体数据分配新的数据块,写模块134将数据B的具体数据写入新的数据块中。更新模块133基于此更新文件的inode的物理地址。此外,计算模块136将根据数据指纹算法计算数据块的数据指纹,并将数据指纹和物理地址的映射关系插入FP-PA映射表140a中。
可以理解的是,FP-PA映射表140a在内核去重文件系统150中是可写的。当文件的数据未重复时,计算模块可以计算数据块的数据指纹,并将数据指纹和物理地址的映射关系插入FP-PA映射表140a中,以对该FP-PA映射表140a进行更新。而FP-PA映射表140b在用户态去重模块120中是只读的,也就是说可以允许去重模块A进行查询,但不允许修改或编辑。
在一些实施例中,该FP-PA映射表140b可以是FP-PA映射表140a通过直接映射得到的。例如,可以使用内存映射函数mmap将FP-PA映射表140a映射到用户态去重模块120中。此时,该FP-PA映射表在用户态和内核态是共享的,从而可以增加用户态搜索数据块对应物理地址的速度。
应理解,该FP-PA映射表140a可以是构建在非易失存储器(non-volatile memory,NVM)中、或动态随机存取存储器(dynamic random access memory,DRAM)、或闪存(flashmemory)中,本申请实施例不予限定。
在一些实施例中,该FP-PA映射表140b可以是任意数据结构的哈希表,如表格、B树等。
应理解,由于每个应用程序都具有一个私有的用户进程地址空间,多个应用程序可以共用一个内核空间。在一些实施例中,FP-PA映射表140b可以设置为只读模式,可以避免某一应用程序在用户态对FP-PA映射表进行修改从而影响其他应用程序,保证内核空间中的FP-PA映射表140a和用户空间中的FP-PA映射表140b是相同的。
可以理解的是,该分配模块135、写模块134和计算模块136也可以作为同一个模块,该模块可以实现分配模块135、写模块134和计算模块136的相应功能,本申请实施例不予限定。
图2是本申请实施例提供的一种文件去重的方法的示意性流程图。该方法可以应用于电子设备中,如图2所示,该方法200可以包括但不限于以下示例出的步骤301至步骤310。
301,获取第一应用程序产生的写I/O大小和写入的页偏移。
示例性地,电子设备通过LD_PRELOAD标识拦截第一应用程序的POSIX的函数,以获取第一应用程序产生的写I/O大小和写入的页偏移。例如,该写I/O大小还可以包括以字节为单位的需要写入的具体的数据缓存(buffer),电子设备中的用户态去重模块通过LD_PRELOAD标识获取第一应用程序的写I/O大小为13312字节(13KB),写入的页偏移为4097字节。应理解,该13312字节的数据具体可以保存在数据buffer中。
302,分割写I/O大小,得到第一内存数据块。
在一个示例中,当获取的写I/O大小较大时,电子设备可以对该写I/O大小进行分割,使得分割后得到的第一内存数据块与内核页面对齐,该第一内存数据块中的每个内存数据块的大小一般为4KB。例如,该写I/O大小为12KB,则电子设备可以将该写I/O大小分割成3个大小为4KB的内存数据块。
在另一个示例中,当获取的写I/O大小较大时,电子设备可以对获取的写I/O大小进行分割,得到多个页面对齐的内存数据块和一个非页面对齐的内存数据块。例如,该写I/O大小为13KB,则电子设备可以将该写I/O大小分割成3个大小为4KB的内存数据块和一个大小1KB的内存数据块。
应理解,电子设备对写I/O大小进行分割实际是根据写I/O大小和写入的页偏移对写I/O的数据buffer进行分割。
在其他的实施例中,当写I/O大小小于或等于与内核页面对齐的内存数据块的大小时,也可以不用对该写I/O大小进行分割。例如,与内核页面对齐的内存数据块的大小为4KB,当写I/O大小小于或等于4KB时,无需对该写I/O大小进行分割。
在其他的实施例中,与内核页面对齐的内存数据块的大小也可以为其他值,例如,8KB或者16KB等。
应理解,该第一内存数据块为对写I/O大小分割后得到的内存数据块。
303,计算第一内存数据块的第一数据指纹。
在一些实施例中,电子设备可以根据数据指纹算法计算第一内存数据块的第一数据指纹。例如,电子设备可以根据安全散列算法计算第一内存数据块的第一数据指纹,如sha256、sha224、sha238、sha512等等。
应理解,对于与内核页面对齐的内存数据块可以直接计算其数据指纹。对于与内核非页面对齐的内存数据块可以将该非页面对齐的内存数据块进行数据补零至与内核页面对齐,之后,再计算该内存数据块的数据指纹。
示例性地,位于电子设备内核空间的页缓存层可以对非页面对齐的内存数据块进行数据补零,以使得该非页面对齐的内存数据块变为页面对齐的内存数据块。
304,确定FP-PA映射表中是否存在第一数据指纹对应的第一物理地址。
应理解,该FP-PA映射表可以参见前文中的描述。例如,该FP-PA映射表可以是哈希表,其中,关键码(key)为内存数据块的数据指纹、值(value)为内存数据块的物理地址,从而电子设备可以通过数据指纹查找对应的物理地址。
在一个示例中,电子设备可以根据第一数据指纹从该FP-PA映射表中进行查询,当查询到该第一数据指纹对应的第一物理地址时,可以确定该FP-PA映射表中存在第一数据指纹对应的第一物理地址。则可以确定该第一数据指纹对应的第一内存数据块中的数据已经存储过,数据是重复的,则电子设备可以执行步骤305。
在另一个示例中,电子设备可以根据第一数据指纹从该FP-PA映射表中进行查询,当未查询到结果时,则可以确定该FP-PA映射表中不存在该第一数据指纹对应的第一物理地址。应理解,该FP-PA映射表中未保存有该第一数据指纹以及对应的第一物理地址,意味着该第一数据指纹对应的第一内存数据块中的数据是不重复的,则电子设备可以执行步骤306。
305,更新内存数据块对应的物理地址。
在一些实施例中,在确定FP-PA映射表中存在数据指纹对应的物理地址后,电子设备可以直接更新该内存数据块对应的物理地址。
示例性地,内存数据块1的逻辑地址为L1,数据指纹对应的物理地址为P1,当电子设备查询到内存数据块2的数据指纹对应的物理地址同样是P1,意味着内存数据块2与内存数据块1是重复的,若该内存数据块2的逻辑地址为L2,则将该L2对应的物理地址更新为P1。从而电子设备可以无需将重复内存数据块的具体数据从用户空间拷贝至内核空间,避免额外的数据拷贝。
在一些实施例中,每个文件都具有一个inode,该inode中可以包括文件包括的内存数据块的物理地址。例如,该文件的inode可以包括该文件的逻辑地址-物理地址(logical address to physics address,L2P)映射表,因此在更新数据块的物理地址时,可以通过修改该L2P映射表实现。
这样,在本申请的一个实施例中,电子设备可以获取并分割应用程序产生的写I/O大小得到多个内存数据块,并计算每个内存数据块的数据指纹,然后根据该数据指纹查询对应的物理地址。当查询到对应的物理地址时,可以直接对该数据指纹对应的内存数据块的物理地址进行更新,从而无需拷贝重复的内存数据块的具体数据,避免额外的拷贝开销,进而提升文件读写速度。
可以理解的是,电子设备确定第一应用程序产生的写I/O不是重复的数据时,该方法200还可以包括步骤306至步骤310。
306,为第一内存数据块中的数据分配第一物理数据块。
在确定FP-PA映射表中不存在第一数据指纹对应的第一物理地址后,电子设备可以为该第一内存数据块分配新的第一物理数据块,该第一物理数据块用于存储第一内存数据块中的数据,该第一物理数据块的物理地址为第二物理地址。
应理解,该第一物理数据块的物理地址是该第一内存数据块中的数据实际存储在磁盘中的位置。
307,在第一物理数据块中写入第一内存数据块中的数据。
电子设备将第一内存数据块中的数据写入第一物理数据块中,之后,执行步骤305,更新该第一物理数据块的物理地址。例如,第一内存数据块的逻辑地址为L3,其数据存储在第一物理数据块中,对应的物理地址为P3,则将L3对应的物理地址更新为P3。
308,计算第一物理数据块的第二数据指纹。
在一些实施例中,电子设备可以根据数据指纹算法计算第一物理数据块的第二数据指纹,例如,可以根据安全散列算法计算第一物理数据块的第二数据指纹,如sha256、sha224、sha238、sha512等等。
应理解,电子设备计算第一数据指纹与第二数据指纹采用的数据指纹算法应是相同的,从而可以保证在根据数据指纹查询对应的物理地址时的正确性。
与第一数据指纹不同的是,由于后续需要对内存数据块的物理地址进行更新,电子设备可以将该第二数据指纹与第二物理地址的对应关系插入FP-PA映射表中,从而可以在下次进行数据去重时,可以从该新的FP-PA映射表中查询数据指纹对应的物理地址。
309,将第二数据指纹和对应的第二物理地址插入FP-PA映射表。
电子设备将第二数据指纹和对应的第二物理地址插入FP-PA映射表,以更新该FP-PA映射表,从而可以保证文件去重的准确性。
310,将FP-PA映射表映射到第一应用程序的用户态。
在一些实施例中,电子设备可以通过直接映射的方式将FP-PA映射表映射到第一应用程序的用户态。
例如,可以使用内存映射函数mmap将FP-PA映射表映射到用户态。此时,该FP-PA映射表在用户态和内核态是共享的,从而可以增加用户态搜索数据块对应物理地址的速度。
这样,FP-PA映射表可以在用户态和内核态共享,可以使得应用程序在用户态就可以确定重复数据,从而无需将重复数据本身传递至内核态,从而避免了额外的拷贝开销,提升了文件去重的效率。
应理解,在满足自洽的前提下,步骤301至步骤310中的某些步骤可以被删除、不执行、替换或者对调等,本申请实施例对此不予限制。
文件系统一般会通过碎片整理(defragmentation)或垃圾回收(garbagecollection,GC),来提高文件系统的性能,在进行上述操作时,会大量搬迁物理数据块,也就是将数据从物理地址A搬迁到物理地址B。当对应用程序产生的写I/O进行去重后,可能会出现数据块的多个逻辑地址对应一个物理地址的情况。那么再对物理地址进行碎片整理或垃圾回收后,用户访问该物理地址的其他的逻辑地址,可能会出现数据读取错误。下文将结合图3介绍解决该技术问题的技术方案。
图3是本申请实施例提供的映射关系的示意图。如图3所示,在电子设备中存储了L2P映射表和物理地址-地址逻辑(physical address to logical address,P2L)映射表。
参见图3中的(a),在文件去重之前,逻辑地址和物理地址可以是一一对应的关系。例如,在L2P映射表中,数据块1的逻辑地址为L1,对应的物理地址为P1,数据块2的逻辑地址为L2,对应的物理地址L2。类似的,在P2L映射表中,数据块1的物理地址为P1,对应的逻辑地址为L1,数据块2的物理地址为P2,对应的逻辑地址为L2。数据块3的物理地址为P3,逻辑地址为空余(free),代表该数据块3没有被使用,在该物理地址P3上未存储数据。
参见图3中的(b),在文件去重之后,在L2P映射表中,可能出现多个逻辑地址对应一个物理地址的现象。例如,在L2P映射表中,数据块1的逻辑地址为L1,对应的物理地址为P1,在数据去重之后,数据块2的逻辑地址L2也对应物理地址P1。但是在P2L映射表中,P1对应L1,P2同样对应L2。那么,在对P1进行垃圾回收时,系统将P1中的数据搬移至P3,根据P2L映射表,只能通知系统将L2P映射表中L1对应的物理地址修改为P3,而不会通知系统将L2P映射表中L2对应的物理地址也修改为P3,因为P2L映射表中P1没有对应L2。此时,当用户去访问L2时,由于L2对应P1,但是P1已经被回收了,所以会导致数据读取错误。
应理解,该L2P映射表还可以用逻辑块编号-物理块编号表示,该P2L映射表还可以用物理块编号-逻辑块编号表示,本申请实施例不予限定。
为了解决文件去重后,在进行碎片整理或垃圾回收后出现的数据读取错误的问题,本申请实施例将文件系统的磁盘空间划分为多个区域。例如,以N个4KB的数据块作为一个区域,每个区域中可以具有元数据(metadata)部分,该元数据中可以包括一个目标inode的编号,根据该目标inode的编号可以从磁盘中读取该目标inode,该目标inode中存储了目标P2L映射表,该目标P2L映射表中保存了该区域中所有的物理地址到逻辑地址的对应关系。基于此,当对该区域中的物理地址进行回收时,可以访问该目标P2L映射表,根据该目标P2L映射表中的对应关系可以确定一个物理地址对应的多个逻辑地址,从而可以对该多个逻辑地址对应的物理地址进行更新,避免数据读取错误的现象。
在一些实施例中,N的取值可以为256、512等,本申请对N的具体取值不予限定。
示例性地,在执行去重后,L1对应P1,L2对应P1。那么在对P1进行垃圾回收时,例如,将P1中的数据从P1搬移至P3,通过访问元数据中的inode,获取目标P2L映射表,并根据该目标P2L映射表得知P1对应L1,同时P1还对应L2,则可以通知系统修改L2P映射表。参见图3中的(c),L2P映射表修改后,L1对应P3,L2也同样对应P3,垃圾回收后,P2L映射表中,P1被回收,变为free,P3对应L1,同样P3还对应L2。这样,在垃圾回收后,无论用户访问L1还是访问L2,均不会出现数据读取错误的现象。
该技术方案中,通过将磁盘划分为多个区域,每个区域都具有一个元数据部分,其中存储了区域中的物理地址和逻辑地址所有的对应关系的P2L映射表。基于此,当对该区域中的物理地址进行回收时,可以访问该P2L映射表,根据该P2L映射表中的对应关系可以确定一个物理地址对应的多个逻辑地址,从而可以对该多个逻辑地址对应的物理地址进行更新,避免数据读取错误的现象。
图4是本申请实施例提供的一种数据去重的方法的示意性流程图。如图4所示,该方法400可以包括步骤410至步骤450。该方法400可以应用于电子设备中。
410,电子设备获取应用程序的第一信息;第一信息包括写I/O大小和写入的页偏移。
在一些实施例中,电子设备可以通过系统接口获取该应用程序的第一信息。例如,电子设备通过LD_PRELOAD标识拦截第一应用程序的POSIX的函数,以获取第一应用程序产生的写I/O大小和写入的页偏移。
应理解,该写I/O大小理解为应用程序写入的数据的大小,该写入的页偏移可以理解为该应用程序执行写I/O对应的位置。例如,应用程序需要从一个文件第4097个字节的位置,写入4096字节的数据,则该写I/O大小为4096字节,写入的页偏移为第4097个字节的位置。
420,电子设备根据第一信息获取第一内存数据块。
示例性地,当该写I/O大小较大时,电子设备可以根据页面大小和写入的页偏移对该写I/O大小进行分割或裁剪,得到第一内存数据块。
应理解,对写I/O大小进行分割或裁剪可以理解为将该写I/O大小进行划分,得到多个内存数据块。
应理解,该页面大小和写入的页偏移可以参见前文中的描述,为了简洁,不再赘述。
在一些实施例中,当该写I/O大小小于或等于一个页面大小(例如,4KB)时,也可以无需对该写I/O大小进行分割或裁剪,而直接将该写I/O大小当作是第一内存数据块。
430,电子设备计算第一内存数据块的第一数据指纹。
应理解,电子设备计算该第一内存数据块的第一数据指纹的方式可以参见步骤303的相关描述。
440,电子设备确定是否存在与第一数据指纹对应的第一物理地址。
在一些实施例中,电子设备可以通过查询数据指纹和物理地址的映射表来确定是否存在与第一数据指纹对应的第一物理地址。
应理解,该数据指纹和物理地址的映射表也可以为其他形式,如数组、跳表、B树等。
450,当确定存在与第一数据指纹对应的第一物理地址时,电子设备更新第一内存数据块和第一物理地址的映射关系。
示例性地,当电子设备确定该第一数据指纹对应的第一物理地址存在时,表示该第一内存数据块中的数据已经存储过、是重复的,则电子设备可以更新该第一内存数据块和第一物理地址的映射关系,从而无需重复存储。
在本申请的一个实施例中,电子设备可以获取应用程序的第一信息,并根据该第一信息获取第一内存数据块,该第一内存数据块可以是多个内存数据块,并计算该第一内存数据块的数据指纹,当确定存在该数据指纹对应的物理地址时,可以确定该内存数据块中的数据已经存在,则可以直接更新该第一内存数据块和第一物理地址的映射关系,而无需传递该第一内存数据块的数据本身,使得该技术方案在进行数据去重时,可以实现重复数据的零拷贝开销或接近零拷贝开销,从而可以提升应用程序写流程的速度。
应理解,本申请对于步骤410至步骤450的执行顺序不予限定,在一些实施例中,该步骤410至步骤450的部分步骤也可以不执行,或者由其他步骤进行替代等等。
在一些实施例中,当第一内存数据块包括多个页面对齐的内存数据块时,电子设备计算第一内存数据块的第一数据指纹,包括:电子设备在应用程序的用户空间中对第一内存数据块进行第一计算,得到第一数据指纹。
示例性地,当电子设备需要对写I/O大小进行分割得到第一内存数据块时,该第一内存数据块中可能包括多个页面对齐的内存数据块。例如,该写I/O大小为12KB,则可以将该写I/O大小分割为3个页面对齐的内存数据块。此时,电子设备可以在应用程序的用户空间中对该第一内存数据块中的每个内存数据块进行第一计算,得到每个内存数据块的数据指纹。
该第一计算可以是使用数据指纹算法进行的计算,可以参见前文中的相关描述。
在本申请的一个实施例中,当第一内存数据块包括的内存数据块为页面对齐的内存数据块时,电子设备可以在应用程序的用户空间中直接对该第一内存数据块进行计算得到对应的第一数据指纹,从而有利于电子设备根据该第一数据指纹查询对应的物理地址,无需将实际的数据传递至内核空间,实现了零数据拷贝。
在一些实施例中,当第一内存数据块包括多个页面对齐的内存数据块和一个非页面对齐的内存数据块时,在电子设备计算第一内存数据块的第一数据指纹之前,该方法400还可以包括:
电子设备将非页面对齐的内存数据块中的数据从应用程序的用户空间传输至电子设备的内核空间;电子设备在内核空间中将非页面对齐的内存数据块转换为页面对齐的内存数据块。
示例性地,电子设备将一个非页面对齐的内存数据块从应用程序的用户空间传输至内核空间,并由内核空间中的页缓存层对该非页面对齐的内存数据块进行数据补零,以转换为页面对齐的内存数据块,之后计算该第一内存数据块的数据指纹。
应理解,内核空间中的其他层或模块也可以执行页缓存层的操作,本申请实施例不予限定。
在其他的实施例中,电子设备在传输非页面对齐的内存数据块时,也可以同步进行页面对齐的内存数据块的数据指纹的计算,本申请实施例不予限定。
在本申请的一个实施例中,当第一内存数据块中包括页面对齐的内存数据块和非页面对齐的内存数据块时,电子设备可以在内核空间中将该非页面对齐的内存数据块转换成页面对齐的内存数据块,从而电子设备只需将一个非页面对齐的内存数据块中的数据从用户空间传输至内核空间,大大减少了传输数据的数据量,基本实现了零数据拷贝。
在一些实施例中,该第一信息还包括文件描述符;在电子设备更新第一内存数据块和第一物理地址的映射关系之前,该方法400还可以包括:
电子设备将文件描述符、写入的页偏移、第一物理地址从应用程序的用户空间传输至电子设备的内核空间。
在本申请实施例中,电子设备将文件描述符、写入的页偏移、第一物理地址从用户空间传输至内核空间,从而可以无需将第一内存数据块的数据本身拷贝至内核空间,减少了数据拷贝。
在一些实施例中,电子设备更新第一内存数据块和第一物理地址的映射关系,包括:根据文件描述符、写入的页偏移、第一物理地址,电子设备在内核空间中更新第一内存数据块和第一物理地址的映射关系。
应理解,电子设备根据文件描述符、写入的页偏移和第一物理地址在内核空间中更新该第一内存数据块和第一物理地址的映射关系可以参见前文中的相关描述,为了简洁不再赘述。
在本申请实施例中,电子设备可以根据文件描述符、写入的页偏移和第一物理地址更新第一内存数据块和所述第一物理地址的映射关系,从而可以无需将第一内存数据块的数据本身拷贝至内核空间,减少了数据拷贝,提升了写流程的速度。
在一些实施例中,电子设备中存储有第一映射表,第一映射表为数据指纹和物理地址的映射表;确定存在与第一数据指纹的对应的第一物理地址,包括:根据第一数据指纹从第一映射表中查询到第一物理地址。
示例性地,该第一映射表为前文中的FP-PA映射表,当电子设备根据第一数据指纹从该FP-PA映射表中可以查询到对应的第一物理地址时,可以确定存储于第一数据指纹对应的第一物理地址,从而可以确定该第一数据指纹对应的数据块中的数据是重复的。
在一些实施例中,该方法400还可以包括:
当确定不存在与第一数据指纹的对应的第一物理地址时,电子设备为第一内存数据块分配第一物理数据块;电子设备将第一内存数据块中的数据写入第一物理数据块。
示例性地,参见图1,当确定不存在与第一数据指纹的对应的第一物理地址时,可以确定该第一内存数据块中的数据不是重复的数据,则电子设备中的分配模块135可以为其分配第一物理数据块,以用于存储该第一内存数据块中的数据。电子设备中的写模块134可以将该第一内存数据块中的数据写入第一物理数据块。
本申请实施例中,当确定不存在第一数据指纹对应的第一物理地址时,可以确定该第一内存数据块中的数据不是重复的,此时,电子设备可以为其分配新的物理数据块用于存储其数据。
在一些实施例中,第一物理数据块对应的物理地址为第二物理地址,该方法400还可以包括:
电子设备保存第一内存数据块和第二物理地址的映射关系。
基于本申请实施例,电子设备可以保存第一内存数据块和其数据实际存储所在的第二物理地址的映射关系,从而可以确定该第一内存数据块的实际存储位置。
在一些实施例中,该方法400还可以包括:
电子设备计算第一物理数据块的第二数据指纹;电子设备将第二数据指纹和第二物理地址保存至所述第一映射表中。
示例性地,参见图1,电子设备中的计算模块136可以对计算该第一物理数据块的第二数据指纹,并将该第二数据指纹和第二物理地址保存至FP-PA映射表140a中,以更新该第一映射表,从而可以保证在下一次进行数据去重时的准确性。
在一些实施例中,该方法400还可以包括:
电子设备将第一映射表从电子设备的内核空间映射到应用程序的用户空间。
示例性地,参见图1,电子设备将FP-PA映射表140a通过直接映射的方法映射到应用程序的用户空间,使得用户态去重模块120可以以只读方式读取该FP-PA映射表。从而可以保证该第一映射表在用户态和内核态是共享的,从而可以增加用户态搜索数据块对应物理地址的速度。进一步地,映射到用户空间中的第一映射表是只读的,保证了内核空间中的第一映射表和用户空间中的第一映射表是相同的,可以避免某一应用程序在用户态对该第一映射表进行修改从而影响其他应用程序。
本申请实施例还提供一种电子设备,包括一个或多个处理器;一个或多个存储器;该一个或多个存储器存储有一个或多个计算机程序,该一个或多个计算机程序包括指令,当该指令被一个或多个处理器执行时,使得如前文中任一种可能的实现方式中所述的数据去重的方法被执行。
本申请实施例还提供一种芯片,所述芯片包括处理器和通信接口,所述通信接口用于接收信号,并将所述信号传输至所述处理器,所述处理器处理所述信号,使得如前文中任一种可能的实现方式中所述的数据去重的方法被执行。
本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在计算机上运行时,使得上述实施例中的数据去重的方法被执行。
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的数据去重的方法。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (15)
1.一种数据去重的方法,其特征在于,所述方法应用于电子设备,所述方法包括:
所述电子设备获取应用程序的第一信息;所述第一信息包括写I/O大小和写入的页偏移;
所述电子设备根据所述第一信息获取第一内存数据块;
所述电子设备计算所述第一内存数据块的第一数据指纹;
所述电子设备确定是否存在与所述第一数据指纹的对应的第一物理地址;
当确定存在与所述第一数据指纹对应的第一物理地址时,所述电子设备更新所述第一内存数据块和所述第一物理地址的映射关系。
2.根据权利要求1所述的方法,其特征在于,所述电子设备根据所述第一信息获取第一内存数据块,包括:
所述电子设备根据页面大小和所述写入的页偏移对所述写I/O大小进行分割,以获取所述第一内存数据块。
3.根据权利要求2所述的方法,其特征在于,当所述第一内存数据块包括多个页面对齐的内存数据块时,所述电子设备计算所述第一内存数据块的第一数据指纹,包括:
所述电子设备在所述应用程序的用户空间中对所述第一内存数据块进行第一计算,得到所述第一数据指纹。
4.根据权利要求2所述的方法,其特征在于,当所述第一内存数据块包括多个页面对齐的内存数据块和一个非页面对齐的内存数据块时,在所述电子设备计算所述第一内存数据块的第一数据指纹之前,所述方法还包括:
所述电子设备将所述非页面对齐的内存数据块中的数据从所述应用程序的用户空间传输至所述电子设备的内核空间;
所述电子设备在所述内核空间中将所述非页面对齐的内存数据块转换为页面对齐的内存数据块。
5.根据权利要求2-4中任一项所述的方法,其特征在于,所述第一信息还包括文件描述符;在所述电子设备更新所述第一内存数据块和所述第一物理地址的映射关系之前,所述方法还包括:
所述电子设备将所述文件描述符、所述写入的页偏移、所述第一物理地址从所述应用程序的用户空间传输至所述电子设备的内核空间。
6.根据权利要求5所述的方法,其特征在于,所述电子设备更新所述第一内存数据块和所述第一物理地址的映射关系,包括:
根据所述文件描述符、所述写入的页偏移、所述第一物理地址,所述电子设备在所述内核空间中更新所述第一内存数据块和所述第一物理地址的映射关系。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述电子设备中存储有第一映射表,所述第一映射表为数据指纹和物理地址的映射表;所述确定存在所述第一数据指纹的对应的第一物理地址,包括:
根据所述第一数据指纹从所述第一映射表中查询到所述第一物理地址。
8.根据权利要求1-7中任一项所述的方法,其特征在于,所述方法还包括:
当确定不存在与所述第一数据指纹的对应的第一物理地址时,所述电子设备为所述第一内存数据块分配第一物理数据块;
所述电子设备将所述第一内存数据块中的数据写入所述第一物理数据块。
9.根据权利要求8所述的方法,其特征在于,所述第一物理数据块对应的物理地址为第二物理地址,所述方法还包括:
所述电子设备保存所述第一内存数据块和所述第二物理地址的映射关系。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
所述电子设备计算所述第一物理数据块的第二数据指纹;
所述电子设备将所述第二数据指纹和所述第二物理地址保存至所述第一映射表中。
11.根据权利要求7-10中任一项所述的方法,其特征在于,所述方法还包括:
所述电子设备将所述第一映射表从所述电子设备的内核空间映射到所述应用程序的用户空间。
12.一种电子设备,其特征在于,包括:用于实现如权利要求1-11中任一项所述的数据去重的方法中的模块。
13.一种电子设备,其特征在于,包括:一个或多个处理器;一个或多个存储器;所述一个或多个存储器存储有一个或多个计算机程序,所述一个或多个计算机程序包括指令,当所述指令被一个或多个处理器执行时,使得如权利要求1-11中任一项所述的数据去重的方法被执行。
14.一种芯片,其特征在于,所述芯片包括处理器和通信接口,所述通信接口用于接收信号,并将所述信号传输至所述处理器,所述处理器处理所述信号,使得如权利要求1-11中任一项所述的数据去重的方法被执行。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机指令,当所述计算机指令在计算机上运行时,使得如权利要求1-11中任一项所述的数据去重的方法被执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210280417.2A CN116821075A (zh) | 2022-03-21 | 2022-03-21 | 数据去重的方法和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210280417.2A CN116821075A (zh) | 2022-03-21 | 2022-03-21 | 数据去重的方法和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116821075A true CN116821075A (zh) | 2023-09-29 |
Family
ID=88111389
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210280417.2A Pending CN116821075A (zh) | 2022-03-21 | 2022-03-21 | 数据去重的方法和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116821075A (zh) |
-
2022
- 2022-03-21 CN CN202210280417.2A patent/CN116821075A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11636032B2 (en) | Memory system, data storage device, user device and data management method thereof | |
US10067684B2 (en) | File access method and apparatus, and storage device | |
US10248623B1 (en) | Data deduplication techniques | |
US8285967B1 (en) | Method for on-demand block map generation for direct mapped LUN | |
US8572310B2 (en) | Invalidating storage area of non-volatile storage medium based on metadata | |
US20210034578A1 (en) | Inline deduplication using neighboring segment loading | |
US20190324675A1 (en) | Providing data deduplication in a data storage system with parallelized computation of crypto-digests for blocks of host i/o data | |
US11237980B2 (en) | File page table management technology | |
US12032534B2 (en) | Inline deduplication using stream detection | |
JP7376488B2 (ja) | スナップショットのコピーオンライトのデータ移動を回避するインフラストラクチャとしての重複除外 | |
CN112463753B (zh) | 一种区块链数据存储方法、系统、设备及可读存储介质 | |
US20200034049A1 (en) | Spot coalescing of distributed data concurrent with storage i/o operations | |
KR20210012085A (ko) | 저널 리플레이를 개선하기 위한 스토리지 장치, 그것의 동작 방법, 및 스토리지 장치를 포함하는 전자 장치 | |
CN112988615A (zh) | 键值存储设备和操作方法 | |
US11226774B2 (en) | Deep data-compression | |
US11907568B2 (en) | Storage controller, storage device, and operation method of storage device | |
JP2024525170A (ja) | データ圧縮方法及び装置 | |
US20150019807A1 (en) | Linearized dynamic storage pool | |
US11481132B2 (en) | Removing stale hints from a deduplication data store of a storage system | |
US11513702B2 (en) | Placement of metadata on data storage drives in a first storage enclosure of a data storage system | |
EP4266165A1 (en) | Attribute-only reading of specified data | |
KR20210043001A (ko) | 하이브리드 메모리 시스템 인터페이스 | |
CN116821075A (zh) | 数据去重的方法和电子设备 | |
Bae et al. | Dedup-for-speed: storing duplications in fast programming mode for enhanced read performance | |
US11403233B2 (en) | Determining capacity in a global deduplication system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |