数据存储方法及装置与流程
- 国知局
- 2024-09-14 14:48:16
本技术涉及数据存储,尤其涉及数据存储方法及装置。
背景技术:
1、当前,手机中的应用可以采用云存储的方式对数据进行存储。在采用云存储方式时可能采用差分技术。差分技术指的是将文件切分成多个块(chunk),然后计算chunk对应的哈希(hash)值以确定被修改的chunk,进而只将被修改的chunk上传到云端存储的方式。
2、差分技术可以减少网络输入/输出(input/output,i/o)的数目。但是,该方法会占据大量的中央处理单元(central processing unit,cpu)资源。
技术实现思路
1、本技术提供一种数据存储方法及装置,能够在减少网络i/o数目的情况下,降低占用的cpu资源的开销。
2、为达到上述目的,本技术采用如下技术方案:
3、第一方面,提供一种数据存储方法,应用于第一设备,方法包括:响应于对第一文件的数据存储请求,获取第一文件对应的索引节点inode,inode包括第一inode和第二inode,第一inode用于存储第一物理区块地址pba,第一pba为第一文件的未更新数据对应的pba,第二inode用于存储第二pba,第二pba为第一文件的更新数据对应的pba;根据第二pba确定更新数据;向第二设备发送更新数据。
4、基于上述技术方案,当接收到对文件的数据存储请求之后,获取该文件对应的inode,该inode为双层inode结构,其中一个inode用于存储该文件未更新数据对应的pba,另一个inode用于存储该文件更新数据对应的pba。这样,直接根据用于存储该文件更新数据对应的pba即可确定文件的更新数据,也就是说通过简单的比较判断即可确定文件的更新数据,无需通过计算哈希值这样密集计算的方式,降低了占用的cpu资源的开销。进而仅将该更新数据发送到云端存储,可以减少网络i/o的数目,节省网络带宽。
5、一种可能的设计中,第二inode还用于存储第三pba,第三pba用于指示第一文件的数据对应的pba存储于第一inode中。基于该设计,在文件采用双层inode的情况下,第二inode中用于存储第二pba以及第三pba,这样,根据第二pba即可确定数据的真实pba位于第二inode中,根据第三pba即可确定数据的真实pba位于第一inode中,进而实现对数据的寻址。
6、一种可能的设计中,在响应于对第一文件的数据存储请求,获取第一文件对应的inode之前,方法还包括:创建不包括数据的第二文件,第二文件对应第三inode,第三inode中包括第四pba;根据第三inode、第四pba、第三pba生成第二inode;根据第二inode以及第一文件对应的第一inode生成第一文件对应的inode。基于该设计,在一些场景中,由于应用处于用户态,而inode处于内核态,因此应用无法直接创建inode。因此,可以通过创建空文件的方式创建inode,进而可以将文件的单层inode结构转换为双层inode结构。
7、一种可能的设计中,在向第二设备发送更新数据之前,方法还包括:创建不包括数据的第三文件,第三文件对应第四inode,第四inode中包括第四pba;将第四pba设置为第三pba;根据第三文件,第四inode以及第一inode生成第一文件的快照。基于该设计,第三文件与第一文件共享第一inode,而第一inode用于存储第一文件的未更新数据对应的pba。因此,第一inode对于上层应用来讲是只读的,这样,第三文件即变成了第一文件的快照。该创建文件快照的方案,除了创建第三文件的开销,并未对第一文件的数据进行读写,实现了零拷贝的创建文件的快照,减少了产生的写i/o的数目,可以提高用户体验。
8、一种可能的设计中,第一文件为第一状态,第一状态用于指示第一文件被修改;在向第二设备发送更新数据之前,方法还包括:将第二pba保存到第一inode中;将第一文件的状态设置为第二状态,第二状态用于指示第一文件未被修改。基于该设计,一个文件可能存在多次被修改的情况,如果此次更新的数据的pba以及上次更新的数据的pba均保存在第二inode时,那么无法区分此次更新后的数据与上次更新后的数据存在的差异。因此,通过文件的状态转换,即可确定文件当前是否被修改过,进而仅通过遍历第二inode中的pba即可确定文件被修改的位置。不仅无需通过计算哈希值这样密集计算的方式,降低占用的cpu资源的开销,还可以区分此次更新后的数据与上次更新后的数据存在的差异。
9、一种可能的设计中,根据第二pba确定更新数据,包括:根据第一文件的快照对应的第一inode中保存的第二pba,确定更新数据。基于该设计,可以将文件的快照中的更新数据上传到云端,可以在避免上传过程中文件被更改而出现的一致性问题的情况下,减少网络i/o的数目,节省网络带宽。
10、第二方面,提供一种数据存储装置,装置应用于第一设备,装置包括处理单元以及通信单元;处理单元,用于:响应于对第一文件的数据存储请求,获取第一文件对应的inode,inode包括第一inode和第二inode,第一inode用于存储第一pba,第一pba为第一文件的未更新数据对应的pba,第二inode用于存储第二pba,第二pba为第一文件的更新数据对应的pba;根据第二pba确定更新数据;通信单元,用于:向第二设备发送更新数据。
11、一种可能的设计中,第二inode还用于存储第三pba,第三pba用于指示第一文件的数据对应的pba存储于第一inode中。
12、一种可能的设计中,处理单元,还用于:创建不包括数据的第二文件,第二文件对应第三inode,第三inode中包括第四pba;根据第三inode、第四pba、第三pba生成第二inode;根据第二inode以及第一文件对应的第一inode生成第一文件对应的inode。
13、一种可能的设计中,处理单元,还用于:创建不包括数据的第三文件,第三文件对应第四inode,第四inode中包括第四pba;将第四pba设置为第三pba;根据第三文件,第四inode以及第一inode生成第一文件的快照。
14、一种可能的设计中,第一文件为第一状态,第一状态用于指示第一文件被修改;处理单元,还用于:将第二pba保存到第一inode中;将第一文件的状态设置为第二状态,第二状态用于指示第一文件未被修改。
15、一种可能的设计中,处理单元,具体用于根据第一文件的快照对应的第一inode中保存的第二pba,确定更新数据。
16、第三方面,提供一种设备,包括处理器、存储器和通信接口,所述存储器、所述通信接口与所述处理器耦合,所述通信接口用于与其他装置通信,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,所述处理器从所述存储器中读取所述计算机指令,以使得所述设备执行如上述第一方面及其中任一设计所述的方法。
17、可选的,该存储器可以与处理器耦合,或者,也可以独立于该处理器。
18、示例性的,该通信接口可以为收发器、输入/输出接口、接口电路、输出电路、输入电路、管脚或相关电路等。
19、一种可能的设计中,设备还包括显示屏,显示屏可用于设备执行显示操作。
20、第四方面,提供一种计算机可读存储介质,计算机可读存储介质包括计算机程序,当计算机程序在设备上运行时,使得设备执行如上述第一方面及其中任一设计所述的方法。
21、第五方面,提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行如上述第一方面及其中任一设计所述的方法。
22、第六方面,提供一种芯片系统,包括至少一个处理器和至少一个接口电路,至少一个接口电路用于执行收发功能,并将指令发送给至少一个处理器,当至少一个处理器执行指令时,至少一个处理器执行如上述第一方面及其中任一设计所述的方法。
23、第七方面,提供一种通信系统,包括第一设备以及第二设备,第一设备以及第二设备通过交互实现本技术实施例提供的方法。
24、需要说明的是,上述第二方面至第七方面中任一设计所带来的技术效果可以参见第一方面中对应设计所带来的技术效果,此处不再赘述。
本文地址:https://www.jishuxx.com/zhuanli/20240914/295984.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。