CN116541365B - 文件存储方法、装置、存储介质及客户端 - Google Patents
文件存储方法、装置、存储介质及客户端 Download PDFInfo
- Publication number
- CN116541365B CN116541365B CN202310821487.9A CN202310821487A CN116541365B CN 116541365 B CN116541365 B CN 116541365B CN 202310821487 A CN202310821487 A CN 202310821487A CN 116541365 B CN116541365 B CN 116541365B
- Authority
- CN
- China
- Prior art keywords
- instruction
- access
- file
- target
- target access
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 230000006399 behavior Effects 0.000 claims abstract description 36
- 238000012545 processing Methods 0.000 claims abstract description 23
- 230000003993 interaction Effects 0.000 claims abstract description 19
- 238000005457 optimization Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 7
- 238000004088 simulation Methods 0.000 abstract description 4
- 230000008569 process Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000002441 reversible effect Effects 0.000 description 2
- 102000006822 Agouti Signaling Protein Human genes 0.000 description 1
- 108010072151 Agouti Signaling Protein Proteins 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 244000144992 flock Species 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 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/172—Caching, prefetching or hoarding of files
-
- 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/13—File access structures, e.g. distributed indices
-
- 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/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种文件存储方法、装置、存储介质及客户端,涉及存储领域。其中,客户端接收对存储***的目标访问指令,其中,目标访问指令为构成目标访问行为的访问指令之一,目标访问行为的预估访问时长低于时长阈值;若目标访问指令不是访问结束指令,则模拟存储***响应目标访问指令;若目标访问指令为访问结束指令,则将目标访问行为产生的访问数据写入存储***。如此,对于目标访问指令直接在本地模拟存储***进行响应,直到该目标访问指令为反问结束指令,将目标访问行为产生的数据一次性写入到存储***中,从而节省了网络交互的时间,提高了访问指令的处理效率。
Description
技术领域
本申请涉及存储领域,具体而言,涉及一种文件存储方法、装置、存储介质及客户端。
背景技术
如图1所示,云存储***(下文中简称存储***)是一种将数据存储在云计算服务器上的数据存储解决方案,具有数据可靠性高、数据可扩展性好、备份和恢复方便、操作简单等优点。为了方便用户使用存储***,还提供有客户端软件。本实施例中将运行该客户端软件的设备称为客户端,并且,该客户端通过网络与存储***通信连结。用户通过该客户端可以如本地操作一样对存储***进行访问,例如,对文件进行增、删、查、改、删等操作。
通过客户端对文件进行增、删、查、改、删等操作时,需要客户端的设备与存储***进行网络交互,而存储***往往具有大量的用户,需要对不同用户的数据进行复杂地维护,这就导致客户端的设备与存储***进行网络交互过程需要耗费大量的时间。尤其是对于一些产生较少访问数据的访问行为,网络交互导致的延时会显得极为明显。
发明内容
为了克服现有技术中的至少一个不足,本申请提供一种文件存储***、装置、存储介质及客户端,具体包括:
第一方面,本申请提供一种文件存储方法,所述方法包括:
接收对存储***的目标访问指令,其中,所述目标访问指令为构成目标访问行为的访问指令之一,所述目标访问行为的预估访问时长低于时长阈值;
若所述目标访问指令不是访问结束指令,则模拟所述存储***响应所述目标访问指令;
若所述目标访问指令为访问结束指令,则将所述目标访问行为产生的访问数据写入所述存储***。
结合第一方面的可选实施方式,所述模拟所述存储***响应所述目标访问指令,包括:
判断所述目标访问指令是否满足原子写入操作的条件,其中,所述原子写入操作表示不允许被中途打断的数据写入操作;
若是,则将所述目标访问指令对应的写入数据存储至本地的磁盘中。
结合第一方面的可选实施方式,所述将所述目标访问指令对应的写入数据存储至本地的磁盘中,包括:
将所述目标访问指令对应的写入数据以写前日志的方式存储至本地的磁盘中。
结合第一方面的可选实施方式,所述模拟所述存储***响应所述目标访问指令,还包括:
若否,则将目标访问指令对应的写入数据存储至本地的内存中。
结合第一方面的可选实施方式,所述接收对存储***的目标访问指令,包括:
接收对所述存储***的访问指令;
若所述访问指令的访问特征满足指令优化条件,则将所述访问指令判定为对所述存储***的目标访问指令。
结合第一方面的可选实施方式,所述访问指令的访问特征包括所述访问指令所访问文件的文件目录、文件名称以及文件后缀名,所述若所述访问指令的访问特征满足指令优化条件,则将所述访问指令判定为对所述存储***的目标访问指令,包括:
若所述访问指令的访问特征满足以下一条或者多条规则,则将所述访问指令判定为对所述存储***的目标访问指令:
所述访问指令所访问文件的文件目录为目标目录;
所述访问指令所访问文件的文件名称包括目标字符串;
所述访问指令所访问文件的文件后缀名为目标后缀名。
结合第一方面的可选实施方式,所述方法还包括:
确定出访问时长低于所述时长阈值的多个待分析文件;
统计所述多个待分析文件的文件特征,得到所述指令优化条件。
第一方面,本申请提供一种文件存储装置,所述装置包括:
指令接收模块,用于接收对存储***的目标访问指令,其中,所述目标访问指令为构成目标访问行为的访问指令之一,所述目标访问行为的预估访问时长低于时长阈值;
指令处理模块,用于若所述目标访问指令不是访问结束指令,则模拟所述存储***响应所述目标访问指令;
所述指令处理模块,还用于若所述目标访问指令为访问结束指令,则将所述目标访问行为产生的访问数据写入所述存储***。
结合第二方面的可选实施方式,所述指令处理模块还具体用于:
判断所述目标访问指令是否满足原子写入操作的条件,其中,所述原子写入操作表示不允许被中途打断的数据写入操作;
若是,则将所述目标访问指令对应的写入数据存储至本地的磁盘中。
结合第二方面的可选实施方式,所述指令处理模块还具体用于:
将所述目标访问指令对应的写入数据以写前日志的方式存储至本地的磁盘中。
结合第二方面的可选实施方式,所述指令处理模块还具体用于:
若否,则将目标访问指令对应的写入数据存储至本地的内存中。
结合第二方面的可选实施方式,所述指令接收模块还具体用于:
接收对所述存储***的访问指令;
若所述访问指令的访问特征满足指令优化条件,则将所述访问指令判定为对所述存储***的目标访问指令。
结合第二方面的可选实施方式,所述访问指令的访问特征包括所述访问指令所访问文件的文件目录、文件名称以及文件后缀名,所述指令接收模块还具体用于:
若所述访问指令的访问特征满足以下一条或者多条规则,则将所述访问指令判定为对所述存储***的目标访问指令:
所述访问指令所访问文件的文件目录为目标目录;
所述访问指令所访问文件的文件名称包括目标字符串;
所述访问指令所访问文件的文件后缀名为目标后缀名。
结合第二方面的可选实施方式,所述指令接收模块还用于:
确定出访问时长低于所述时长阈值的多个待分析文件;
统计所述多个待分析文件的文件特征,得到所述指令优化条件。
第三方面,本申请还提供一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现所述的文件存储方法。
第四方面,本申请还提供一种客户端,所述客户端包括处理器以及存储器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,实现所述的文件存储方法。
相对于现有技术而言,本申请具有以下有益效果:
本申请提供一种文件存储方法、装置、存储介质及客户端。其中,客户端接收对存储***的目标访问指令,其中,目标访问指令为构成目标访问行为的访问指令之一,目标访问行为的预估访问时长低于时长阈值;若目标访问指令不是访问结束指令,则模拟存储***响应目标访问指令;若目标访问指令为访问结束指令,则将目标访问行为产生的访问数据写入存储***。如此,对于目标访问指令直接在本地模拟存储***进行响应,直到该目标访问指令为反问结束指令,将目标访问行为产生的数据一次性写入到存储***中,从而节省了网络交互的时间,提高了访问指令的处理效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的场景示意图;
图2为本申请实施例提供的文件存储方法流程示意图;
图3为本申请实施例提供的文件存储装置的结构示意图;
图4为本申请实施例提供的客户端的结构示意图。
图标:101-指令接收模块;102-指令处理模块;201-存储器;202-处理器;203-通信单元;204-***总线。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在本申请的描述中,需要说明的是,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。此外,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
基于以上声明,正如背景技术中所介绍的,通过客户端对文件进行增、删、查、改、删等操作时,需要客户端的设备与存储***进行网络交互,而存储***往往具有大量的用户,需要对不同用户的数据进行复杂地维护,这就导致客户端与存储***进行网络交互过程需要耗费大量的时间。尤其是对于一些产生较少访问数据的访问行为,网络交互导致的延时会显得极为明显。
示例性的,对于基于Linux***的存储***,可以使用 mount 命令将远程主机的一个目录挂载到本地目录。具体步骤如下:
1. 创建一个存储远程目录的本地目录,例如:/mnt/remote_dir。
“sudo mkdir -p /mnt/remote_dir”
2. 使用 mount 命令将远程目录挂载到本地目录中。假设远程服务器的IP地址为192.168.0.100,远程目录为 /remote_dir,用户名为 user,挂载命令如下:
“sudo mount -t nfs 192.168.0.100:/remote_dir /mnt/remote_dir -onolock,udp,noatime”
其中,-t nfs 表示使用 NFS 协议,nolock、udp、noatime 是一些可选参数,具体含义可使用 man mount 命令进行查看。
如此,在本地磁盘中就会显示名为“remote_dir”的文件夹,用户可以在该文件夹内进行创建文件、删除文件、修改已有文件等操作,这些操作会通过网络交互的方式同步到存储***中。
其中,该存储***可以是,但不限于,分布式存储***、集中式存储***、SAN(Storage Area Network,存储区域网络)存储***、NAS(Network Attached Storage,网络附属存储)存储***。
其中,分布式存储***是一种将数据分散存储在多个节点中,通过协同作用来形成一个整体数据存储***的存储***。这些节点可以是不同的计算机、服务器、或者存储设备。分布式存储***让多个节点间合作来完成存储、访问和管理数据的过程。相对于传统的中心化存储方式,分布式存储***具有更高的可靠性、可扩展性和可用性。由于数据可以存储在多个节点上,因此即使部分节点发生故障,数据仍然能够得到恢复,从而提高了数据的可靠性。而且,由于节点可以动态的扩展或缩减,因此分布式存储***可以很容易地进行水平扩展,从而提高了其可扩展性。
集中式存储***是一种将数据存储在单一中心位置的存储技术。这个中心位置通常是一个中央服务器、NAS(网络附属存储)或SAN(存储区域网络)。这些中心位置负责存储、管理和控制所有数据。所有客户端机器都需要通过网络连接到这个中心位置才能访问数据。
而集中式存储***是一种将所有数据中心集中存储在一个单一的存储设备和***中的存储***。由于所有的数据都存储在同一个设备中,当该设备发生故障时,所有的数据都不能访问。集中式存储***是传统的存储方式,但是它的可靠性和扩展性受到很大的限制。
SAN存储***,是指一种通过高速网络连接多台服务器和存储设备的存储***,提供可扩展的、高性能和高可用性的存储解决方案。
NAS存储***是指一种专门为网络存储而设计的存储***,通过网络连接多台服务器和存储设备,提供易于管理、可靠性高、性能稳定的文件存储和共享服务。
对象存储***是通过将文件和元数据打包成一个完整的对象来存储数据,实现了数据的易于管理、可靠性高和可扩展性。
块存储***是将数据划分成块之后存储的存储方案,适用于需要高速随机读写操作的应用场景,如数据库应用等。
混合存储***是一种结合了多种存储技术的存储方案,既包括了本地存储、SAN存储和NAS存储,也包括了块存储和对象存储等多种技术,可以为用户提供最优的存储解决方案。
但研究发现,这些网络交互均需要耗费一定量的时间,对于产生较少数据的访问行为,网络交互产生的延时将显得尤为突出。
示例性的,以分布式存储***为例,分布式文件***包括客户端、元数据服务集群、数据服务集群组成。在分布式文件***中创建一个小文件,每一个创建步骤都需要客户端向元数据服务集群和数据服务集群发起请求,请求还是向集群内多个节点发起,或是集群内节点间还有请求转发,大量网络请求交互导致分布式文件***的时延很高。这就导致对于一些产生较少数据(例如10M)的访问行为,写入操作实际可能仅耗费了0.1s,而向集群内多个节点发起请求,以及集群内节点间之间的请求转发等网络交互操作就耗费了0.2s,此时,网络交互产生的延时将显得尤为突出。需要强调的是,上述示例仅出于说明的目的提供此类数据,并不代表实践中实际情况。
基于上述技术问题的发现,发明人经过创造性劳动提出下述技术方案以解决或者改善上述问题。需要注意的是,以上现有技术中的方案所存在的缺陷以及对此提供的解决方案,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本申请实施例针对上述问题所提出的解决方案,都应该是发明人在发明创造过程中对本申请做出的贡献,而不应当理解为本领域技术人员所公知的技术内容。
鉴于此,本实施例提供一种文件存储方法。该方法中,客户端接收对存储***的目标访问指令,其中,目标访问指令为构成目标访问行为的访问指令之一,目标访问行为的预估访问时长低于时长阈值;若目标访问指令不是访问结束指令,则模拟存储***响应目标访问指令;若目标访问指令为访问结束指令,则将目标访问行为产生的访问数据写入存储***。如此,对于目标访问指令直接在本地模拟存储***进行响应,直到该目标访问指令为反问结束指令,将目标访问行为产生的数据一次性写入到存储***中,从而节省了网络交互的时间,提高了访问指令的处理效率。
本实施例中,实施该方法的客户端可以是,但不限于,移动终端、平板计算机、膝上型计算机、或台式计算机等,对此,本实施例不做具体限定。
为使本实施例提供的方案更加清楚,下面结合图2对该方法的各个步骤进行详细阐述。但应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。如图2所示,该方法包括:
S101,接收对存储***的目标访问指令。
其中,目标访问指令为构成目标访问行为的访问指令之一,目标访问行为的预估访问时长低于时长阈值。也即是说,客户端接收到访问指令后,需要先预测一下该访问指令对应的访问行为是否为访问时长低于时长阈值的目标访问行为。由于只有反问时长低于该时长阈值的目标访问行为,网络交互造成的延时才会显得尤为明显。可选实施方式中,步骤S101包括:
S101-1,接收对存储***的访问指令;
S101-2,若访问指令的访问特征满足指令优化条件,则将访问指令判定为对存储***的目标访问指令。
作为可选实施方式,若访问指令的访问特征满足以下一条或者多条规则,则将访问指令判定为对存储***的目标访问指令:
1)访问指令所访问文件的文件目录为目标目录;
2)访问指令所访问文件的文件名称包括目标字符串;
3)访问指令所访问文件的文件后缀名为目标后缀名。
对于上述3条规则的组合方式,本实施例不做具体限定。一些实施场景中,只要该访问指令满足任意一条规则,则将该访问指令视为目标访问指令;而在其他实施场景中,则需要该访问指令同时满足3条或者其中2条规则,才将该访问指令视为目标访问指令。
此外,对于上述规则,本实施例提供智能学习、引导学习、用户配置共3种方式提供上述访问指令的识别规则。
在智能学习方式中,客户端可以确定出访问时长低于时长阈值的多个待分析文件;统计多个待分析文件的文件特征,得到指令优化条件。
详细的,该客户端可以前提对每个文件的访问时长进行统计,例如,在Linux文件***中,每个文件都有三个时间戳:修改时间(mtime)、访问时间(atime)和状态时间(ctime)。其中,mtime表示文件的最后修改时间,即最后一次修改文件内容的时间,ctime表示文件的状态更改时间,即文件的元数据(如权限、所有者、组等)或文件名等更改时的时间,atime表示文件的最后访问时间,即文件最后一次被读取的时间。因此,当文件的mtime和ctime不再变化,这两个时间标志没有变化可以确定文件未被修改过。
假定该时长阈值为100ms,则将统计时段内每次访问时长低于100ms的文件作为待分析文件。然后,该客户端对这些待分析文件的存储目录、文件名称以及问价后缀名进行统计,找出这些待分析文件之间共有的特征,根据这些共有的特征生成指令优化条件。例如,经过统计后发现,访问时长低于100ms的文件中,具有“jpg、gif”这两种后缀名的文件占比很高,则将这两种文件后缀名作为目标后缀名。又例如,经过统计后发现,访问时长低于100ms的文件,存储在名为“log、var、etc、config、conf”等文件夹中,则将这些名称的文件夹所在的目录作为目标目录,同理,还可将文件名称占比很高的字符串作为目标字符串。如此,该客户端持续保持学习,并根据统计结果持续对指令优化条件进行更新。
在引导学习中,分布式文件***提供有学习开关。当用户打开之后,客户端将自动记录每一个文件的访问时长,将每次访问时长低于100ms的文件识别出来作为待分析文件,通过对这些待分析文件的文件特征进行统I计分析后,输出一份可供编辑的初始优化规则。若客户端接收到用户对该推荐配置的确认操作,将用户编辑后或者未编辑的初始优化规则作为指令优化条件。
在用户配置中,若用户极为熟悉使用该存储***的应用程序,能够清楚的知道该应用程序生成的文件中,那些所具有的数据量比较少;则该客户端为用户提供有相应的配置界面,供用户配置出自己熟悉的指令优化条件。
结合上述对目标访问指令的介绍,继续参加图2,该方法还包括:
S102,若目标访问指令不是访问结束指令,则模拟存储***响应目标访问指令。
本实施例中,在本地模拟存储***对目标访问指令进行响应,客户端实际是没有与存储***进行网络交互的,只是让用户感觉像是与存储***进行了交互,因此,能够提高响应效率。但在一些以外情况下,可能会导致实际响应结果与用户希望的响应结果不一致。对此,首先应理解的是,目前主流的存储***都需准寻POSIX(Portable Operating SystemInterface,可移植操作***接口)标准,POSIX文件***有一系列接口用于实现对文件***的访问,接口如下:
access():检查文件是否存在并有权限;
chdir():改变当前工作目录;
chmod():修改文件权限;
chown():修改文件所有者和组;
creat():创建文件;
dup():复制文件描述符;
dup2():复制文件描述符并指定新的文件描述符;
fchown():修改文件所有者和组;
fcntl():对文件描述符进行控制操作;
flock():对文件进行加锁和解锁操作;
ftruncate():截断文件;
getcwd():获取当前工作目录;
link():创建文件硬链接;
lstat():获取符号链接的信息;
mkdir():创建目录;
mkfifo():创建命名管道;
mknod():创建设备文件;
open():打开文件;
opendir():打开目录;
read():读取文件;
readdir():读取目录;
readlink():读取符号链接;
rename():重命名文件或目录;
rmdir():删除目录;
stat():获取文件状态信息;
symlink():创建符号链接;
truncate():截断文件;
unlink():删除文件或符号链接;
utime():修改文件访问和修改时间;
write():写入文件。
例如,对于运行Linux***的客户端,一种典型的写入小文件的操作需要依次涉及到以下接口:
1)确认待写入文件是不是已经存在(使用lookup/stat)。
2)若不存在,创建文件,获得文件句柄(使用create/open)。
3)使用文件句柄写入数据(使用write)。
4)关闭文件句柄(使用close)。
5)(可选)重命名文件(使用rename)。
其中,重命名这个接口是否需要,主要取决于用户对于可靠性与一致性的要求。例如,若需要写入4MB的一个文件“file1.txt”。假设用户每一次调用写入接口可以写入1MB的数据,则4次调用后可以写入全部数据。若在第2次写入后,***故障重启。***恢复之后,会看到“file1.txt”这个文件是存在的,但是里面的数据与预期却不同。若加上重命名这个步骤,在创建文件时,使用文件名“file1.txt.tmp”,加上“.tmp”后缀标注其是临时文件。这样在遇到同样的故障时,会发现“file1.txt”并不存在,且会认为“file1.txt.tmp”是一个数据不完整的临时文件,不再使用,直接删除,然后重新执行创建写入文件的流程。因此,调用重命名接口是一个近似原子的操作,可以用来保证更高的数据一致性。
因此,在模拟存储***响应目标访问指令时,对于原子操作与非原子操作,需要采取不同的响应方式。此处应理解的是,所谓原子操作,表示操作中途不允许被打断的操作,包括原子写入操作、原子读取操作以及原子修改操作,而本实施例重点关注原子写入操作。具体实施方式中,该客户端判断目标访问指令是否满足原子写入操作的条件。例如,可以判断该目标访问指令所访问文件是否被重命名(例如,原有文件名后追加了“tmp”字符串),若是,则满足原子写入操作的条件,若否,则不满足原子写入操作的条件。
若属于原子操作,则客户端将目标访问指令对应的写入数据存储至本地的磁盘中,例如,将目标访问指令对应的写入数据以写前日志(WAL,Write-Ahead-Log)的方式存储至本地的磁盘中。
此处应理解的是,Linux***提供有日志式文件***,是一种类似于写前日志(WAL)的机制,用于保证文件***的一致性。在日志式文件***中,文件***的操作会被记录到一个称为日志的特殊区域中,然后再应用到实际的数据存储区域中。由于写前日志会持久化存储在客户端节点的硬盘中,即便客户端发生故障不会数据丢失。客户端恢复运行之后,客户端将读出写前日志中的数据,恢复到内存缓存中。
若不属于原子操作,则将目标访问指令对应的写入数据存储至本地的内存中。若采客户端中途发生故障,则内存中的数据丢失。***恢复之后,会检测到这个文件不存在,即写入结果与预期却不同,意味着中途发生了故障。如此,虽然模仿存储***对目标访问指令进行响应,但最终的存储结果与POSIX接口标准期望的存储结果兼容。
结合上述模拟存储***对目标访问指令的介绍,继续参见图2,该方法还包括:
S103,若目标访问指令为访问结束指令,则将目标访问行为产生的访问数据写入存储***。
示例性的,继续以分布式存储***为例,可以在POSIX文件***接口之外,额外再增加整个文件创建并写入数据的接口AtomicWriteFile(),该接口被调用时,先交由数据服务处理,将数据段写入新分配的空间,然后由元数据服务处理,用事务的方式将该文件所需要的所有元数据信息提交到元数据服务。该接口的调用时机在调用Close()指令或Rename()指令后,这样在该接口调用完成后,即可在分布式文件***的其他客户端读取,满足Close-To-Open一致性要求。
在分布式文件***内,AtomicWriteFile()接口的实现方式:
1)分布式文件***的服务端,一般有元数据服务和数据服务。其中元数据服务可能还包含分布式锁服务,用来避免对同一文件的访问竞争。
2)加分布式锁(非强制步骤,如果应用能够确认不会有不同的任务去创建同一个文件,可以选择不加分布式锁的)。
3)调用数据服务接口,将文件的数据写入到持久化存储介质(如硬盘)。
4)调用元数据服务接口,将文件的所需的元数据写入。元数据包含文件inode的信息,attr信息,父目录中记录的dentry等。
5)返回客户端AtomicWriteFile请求成功。
基于与本实施例所提供文件存储方法相同的发明构思,本实施例还提供一种文件存储装置。该文件存储装置包括至少一个可以软件形式存储于存储器或固化在客户端中的软件功能模块。客户端中的处理器用于执行存储器中存储的可执行模块。例如,文件存储装置所包括的软件功能模块及计算机程序等。请参照图3,从功能上划分,文件存储装置可以包括:
指令接收模块101,用于接收对存储***的目标访问指令,其中,目标访问指令为构成目标访问行为的访问指令之一,目标访问行为的预估访问时长低于时长阈值;
指令处理模块102,用于若目标访问指令不是访问结束指令,则模拟存储***响应目标访问指令;
指令处理模块102,还用于若目标访问指令为访问结束指令,则将目标访问行为产生的访问数据写入存储***。
本实施例中,该指令接收模块101用于实现图2中的步骤S101,该指令处理模块102用于实现图2中的步骤S102、S103,关于上述各模块的详细介绍可以参见对应步骤的详细描述,本实施例不再进行赘述。值得说明的是,鉴于文件存储方法与本实施例共享相同的发明构思,因此,上述各个模块还可以适用于实施该方法的其他步骤或子步骤,前提是不脱离该方法的宗旨。本领域技术人员应理解,可以在不影响该发明构思的前提下,根据需要对模块的具体实现方式进行修改或调整。模块的功能可以组合或划分,以实现本发明。模块的功能可以由软件、硬件或软硬件的组合来实现,模块的名称仅用于区分不同功能,并不构成任何限定。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
还应理解的是,以上实施方式如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
因此,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时,实现本实施例提供的文件存储方法。其中,该计算机可读存储介质可以是U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
为本实施例提供的一种客户端。如图4所示,该客户端可包括处理器202及存储器201。并且,存储器201存储有计算机程序,处理器通过读取并执行存储器201中与以上实施方式对应的计算机程序,实现本实施例所提供的文件存储方法。
继续参见图4,客户端还包括通信单元203。该存储器201、处理器202以及通信单元203各元件相互之间通过***总线204直接或间接地电性连接,以实现数据的传输或交互。
其中,该存储器201可以是基于任何电子、磁性、光学或其它物理原理的信息记录装置,用于记录执行指令、数据等。在一些实施方式中,该存储器201可以是,但不限于,易失存储器、非易失性存储器、存储驱动器等。
在一些实施方式中,该易失存储器可以是随机存取存储器(Random AccessMemory,RAM);在一些实施方式中,该非易失性存储器可以是只读存储器(Read OnlyMemory,ROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM)、电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)、闪存等;在一些实施方式中,该存储驱动器可以是磁盘驱动器、固态硬盘、任何类型的存储盘(如光盘、DVD等),或者类似的存储介质,或者它们的组合等。
该通信单元203用于通过网络收发数据。在一些实施方式中,该网络可以包括有线网络、无线网络、光纤网络、远程通信网络、内联网、因特网、局域网(Local Area Network,LAN)、广域网(Wide Area Network,WAN)、无线局域网(Wireless Local Area Networks,WLAN)、城域网(Metropolitan Area Network,MAN)、广域网(Wide Area Network,WAN)、公共电话交换网(Public Switched Telephone Network,PSTN)、蓝牙网络、ZigBee网络、或近场通信(Near Field Communication,NFC)网络等,或其任意组合。在一些实施例中,网络可以包括一个或多个网络接入点。例如,网络可以包括有线或无线网络接入点,例如基站和/或网络交换节点,服务请求处理***的一个或多个组件可以通过该接入点连接到网络以交换数据和/或信息。
该处理器202可能是一种集成电路芯片,具有信号的处理能力,并且,该处理器可以包括一个或多个处理核(例如,单核处理器或多核处理器)。仅作为举例,上述处理器可以包括中央处理单元(Central Processing Unit,CPU)、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、专用指令集处理器(Application SpecificInstruction-set Processor,ASIP)、图形处理单元(Graphics Processing Unit,GPU)、物理处理单元(Physics Processing Unit,PPU)、数字信号处理器 (Digital SignalProcessor,DSP)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、可编程逻辑器件(Programmable Logic Device,PLD)、控制器、微控制器单元、简化指令集计算机(Reduced Instruction Set Computing,RISC)、或微处理器等,或其任意组合。
应该理解到的是,在上述实施方式中所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上所述,仅为本申请的各种实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (7)
1.一种文件存储方法,其特征在于,应用于客户端,所述方法包括:
接收对存储***的访问指令,其中,所述访问指令的访问特征包括所述访问指令所访问文件的文件目录、文件名称以及文件后缀名;
若所述访问指令的访问特征满足以下一条或者多条规则,则确定所述访问指令为满足指令优化条件的目标访问指令,其中,所述目标访问指令为构成目标访问行为的访问指令之一,所述目标访问行为的预估访问时长低于时长阈值:
所述访问指令所访问文件的文件目录为目标目录;
所述访问指令所访问文件的文件名称包括目标字符串;
所述访问指令所访问文件的文件后缀名为目标后缀名;
确定出访问时长低于所述时长阈值的多个待分析文件;
统计所述多个待分析文件的文件特征,得到所述指令优化条件;
若所述目标访问指令不是访问结束指令,则在本地模拟所述存储***响应所述目标访问指令;
若所述目标访问指令为访问结束指令,则将所述目标访问行为产生的访问数据通过网络交互的方式写入所述存储***。
2.根据权利要求1所述的文件存储方法,其特征在于,所述模拟所述存储***响应所述目标访问指令,包括:
判断所述目标访问指令是否满足原子写入操作的条件,其中,所述原子写入操作表示不允许被中途打断的数据写入操作;
若是,则将所述目标访问指令对应的写入数据存储至本地的磁盘中。
3.根据权利要求2所述的文件存储方法,其特征在于,所述将所述目标访问指令对应的写入数据存储至本地的磁盘中,包括:
将所述目标访问指令对应的写入数据以写前日志的方式存储至本地的磁盘中。
4.根据权利要求2所述的文件存储方法,其特征在于,所述模拟所述存储***响应所述目标访问指令,还包括:
若否,则将目标访问指令对应的写入数据存储至本地的内存中。
5.一种文件存储装置,其特征在于,应用于客户端,所述装置包括:
指令接收模块,用于接收对存储***的访问指令,其中,所述访问指令的访问特征包括所述访问指令所访问文件的文件目录、文件名称以及文件后缀名;
若所述访问指令的访问特征满足以下一条或者多条规则,则确定所述访问指令为满足指令优化条件的目标访问指令,其中,所述目标访问指令为构成目标访问行为的访问指令之一,所述目标访问行为的预估访问时长低于时长阈值:
所述访问指令所访问文件的文件目录为目标目录;
所述访问指令所访问文件的文件名称包括目标字符串;
所述访问指令所访问文件的文件后缀名为目标后缀名;
所述指令接收模块,还用于确定出访问时长低于所述时长阈值的多个待分析文件;统计所述多个待分析文件的文件特征,得到所述指令优化条件;
指令处理模块,用于若所述目标访问指令不是访问结束指令,则在本地模拟所述存储***响应所述目标访问指令;
所述指令处理模块,还用于若所述目标访问指令为访问结束指令,则将所述目标访问行为产生的访问数据通过网络交互的方式写入所述存储***。
6.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现权利要求1-4任意一项所述的文件存储方法。
7.一种客户端,其特征在于,所述客户端包括处理器以及存储器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,实现权利要求1-4任意一项所述的文件存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310821487.9A CN116541365B (zh) | 2023-07-06 | 2023-07-06 | 文件存储方法、装置、存储介质及客户端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310821487.9A CN116541365B (zh) | 2023-07-06 | 2023-07-06 | 文件存储方法、装置、存储介质及客户端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116541365A CN116541365A (zh) | 2023-08-04 |
CN116541365B true CN116541365B (zh) | 2023-09-15 |
Family
ID=87458220
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310821487.9A Active CN116541365B (zh) | 2023-07-06 | 2023-07-06 | 文件存储方法、装置、存储介质及客户端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116541365B (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103023982A (zh) * | 2012-11-22 | 2013-04-03 | 中国人民解放军国防科学技术大学 | 一种云存储客户端的低延迟元数据访问方法 |
CN103139224A (zh) * | 2011-11-22 | 2013-06-05 | 腾讯科技(深圳)有限公司 | 一种网络文件***及网络文件***的访问方法 |
CN103546580A (zh) * | 2013-11-08 | 2014-01-29 | 北京邮电大学 | 一种应用于分布式文件***的文件副本异步写方法 |
CN105187565A (zh) * | 2015-10-14 | 2015-12-23 | 四川携创信息技术服务有限公司 | 一种利用网络存储数据的方法 |
CN105760556A (zh) * | 2016-04-19 | 2016-07-13 | 江苏物联网研究发展中心 | 低延时高吞吐量的多副本文件读写优化方法 |
CN107045530A (zh) * | 2017-01-20 | 2017-08-15 | 华中科技大学 | 一种将对象存储***实现为本地文件***的方法 |
CN109033462A (zh) * | 2018-08-30 | 2018-12-18 | 杜广香 | 在大数据存储的存储设备中确定低频数据项的方法及*** |
CN109144413A (zh) * | 2018-07-27 | 2019-01-04 | 郑州云海信息技术有限公司 | 一种元数据管理方法及装置 |
CN110471894A (zh) * | 2019-07-22 | 2019-11-19 | 腾讯科技(深圳)有限公司 | 一种数据预取方法、装置、终端及存储介质 |
CN111291009A (zh) * | 2020-03-25 | 2020-06-16 | 上海飞旗网络技术股份有限公司 | 文件分块存储方法及装置 |
CN111880739A (zh) * | 2020-07-29 | 2020-11-03 | 北京计算机技术及应用研究所 | 一种面向超融合设备的近数据处理*** |
US11137926B1 (en) * | 2018-03-30 | 2021-10-05 | Veritas Technologies Llc | Systems and methods for automatic storage tiering |
CN113821487A (zh) * | 2021-09-23 | 2021-12-21 | 中国联合网络通信集团有限公司 | 本地文件***实现方法、装置、设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6944736B2 (en) * | 2001-06-28 | 2005-09-13 | Hewlett-Packard Development Company, L.P. | Managing latencies in accessing memory of computer systems |
US20150019792A1 (en) * | 2012-01-23 | 2015-01-15 | The Regents Of The University Of California | System and method for implementing transactions using storage device support for atomic updates and flexible interface for managing data logging |
US20180373722A1 (en) * | 2017-06-26 | 2018-12-27 | Acronis International Gmbh | System and method for data classification using machine learning during archiving |
-
2023
- 2023-07-06 CN CN202310821487.9A patent/CN116541365B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103139224A (zh) * | 2011-11-22 | 2013-06-05 | 腾讯科技(深圳)有限公司 | 一种网络文件***及网络文件***的访问方法 |
CN103023982A (zh) * | 2012-11-22 | 2013-04-03 | 中国人民解放军国防科学技术大学 | 一种云存储客户端的低延迟元数据访问方法 |
CN103546580A (zh) * | 2013-11-08 | 2014-01-29 | 北京邮电大学 | 一种应用于分布式文件***的文件副本异步写方法 |
CN105187565A (zh) * | 2015-10-14 | 2015-12-23 | 四川携创信息技术服务有限公司 | 一种利用网络存储数据的方法 |
CN105760556A (zh) * | 2016-04-19 | 2016-07-13 | 江苏物联网研究发展中心 | 低延时高吞吐量的多副本文件读写优化方法 |
CN107045530A (zh) * | 2017-01-20 | 2017-08-15 | 华中科技大学 | 一种将对象存储***实现为本地文件***的方法 |
US11137926B1 (en) * | 2018-03-30 | 2021-10-05 | Veritas Technologies Llc | Systems and methods for automatic storage tiering |
CN109144413A (zh) * | 2018-07-27 | 2019-01-04 | 郑州云海信息技术有限公司 | 一种元数据管理方法及装置 |
CN109033462A (zh) * | 2018-08-30 | 2018-12-18 | 杜广香 | 在大数据存储的存储设备中确定低频数据项的方法及*** |
CN110471894A (zh) * | 2019-07-22 | 2019-11-19 | 腾讯科技(深圳)有限公司 | 一种数据预取方法、装置、终端及存储介质 |
CN111291009A (zh) * | 2020-03-25 | 2020-06-16 | 上海飞旗网络技术股份有限公司 | 文件分块存储方法及装置 |
CN111880739A (zh) * | 2020-07-29 | 2020-11-03 | 北京计算机技术及应用研究所 | 一种面向超融合设备的近数据处理*** |
CN113821487A (zh) * | 2021-09-23 | 2021-12-21 | 中国联合网络通信集团有限公司 | 本地文件***实现方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116541365A (zh) | 2023-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11520670B2 (en) | Method and apparatus for restoring data from snapshots | |
US11481289B2 (en) | Method and apparatus for reading and writing committed data | |
JP7050931B2 (ja) | クライアント同期更新の効率的な管理 | |
US9946716B2 (en) | Distributed file system snapshot | |
US8856080B2 (en) | Backup using metadata virtual hard drive and differential virtual hard drive | |
EP3206128B1 (en) | Data storage method, data storage apparatus, and storage device | |
US10262004B2 (en) | Native snapshots in distributed file systems | |
US8805849B1 (en) | Enabling use of analytic functions for distributed storage system data | |
US10852996B2 (en) | System and method for provisioning slave storage including copying a master reference to slave storage and updating a slave reference | |
US20100332549A1 (en) | Recipes for rebuilding files | |
US11397749B2 (en) | Asynchronous replication of in-scope table data | |
US10452680B1 (en) | Catch-up replication with log peer | |
JP7355964B2 (ja) | 外部ロケーションの同期 | |
US11461192B1 (en) | Automatic recovery from detected data errors in database systems | |
US11086557B2 (en) | Continuous asynchronous replication from on-premises storage to cloud object stores | |
CN116541365B (zh) | 文件存储方法、装置、存储介质及客户端 | |
US11809381B2 (en) | Accessing network based content items by a mobile device while offline | |
CN115510016A (zh) | 一种基于目录分片的客户端应答方法、装置及介质 | |
Zhao et al. | H2cloud: maintaining the whole filesystem in an object storage cloud | |
JP7355959B2 (ja) | 外部ロケーションの同期 | |
US20220398048A1 (en) | File storage system and management information file recovery method | |
JP2023547439A (ja) | 非同期動作のための意図トラッキング | |
US20170308542A1 (en) | File system configuration data storage | |
Babu | Concurrency Control In Deduplication Enabled Cloud Storage |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |