一种p2p缓存文件管理方法和装置
技术领域
本发明属于计算机领域,涉及一种p2p缓存文件存储方法和装置。
背景技术
随着现代网络技术的不断发展,p2p技术(对等网络,PeertoPeer,简称p2p)已经越来越多的应用在了现代网络中的各个领域。而p2p技术最根本的思想,同时也是它与C/S最显著的区别在于p2p网络中的节点(Peer)既可以获取其他节点的资源和服务,同时又是资源和服务的提供者,即兼具Client和Server的双重身份。p2p网络中每一个节点所拥有的权利和义务是对等的。
因此,每一个节点中缓存文件的存储和读取,就是节点能够获取和提供资源与服务的基石。一个好的节点缓存文件存储构架,不仅可以加快节点之间的数据交换速度,减少节点的硬件资源损耗,而且还能够使p2p网络内的数据更加安全可靠,用户体验更好。
在现有技术中,p2p软件使用的时候,都会在系统中固定位置(一般会在系统盘或软件安装目录所在盘中)生成一个大约8G的虚拟磁盘文件用来缓存和提供资源服务,且该文件创建以后会始终存在,很多软件制造者为了不使用户太反感,会将此文件隐藏起来,用户依旧会对此比较敏感。
现有方案的技术缺点:
1.单一文件,且文件比较大(大约8G),对于用户来说,开销很大。一般来说此文件都会创建在系统盘或者软件安装目录所在盘中,这些磁盘大都是用户软件数据比较多,空闲空间不多的磁盘。如果用户的硬盘空间不是很充裕的话,会影响用户的其他操作。
2.单一的缓存文件始终存在,且频繁读写,这就使得硬盘的某一块区域的读写次数远远超过其他区域,长时间使用,会影响硬盘寿命,特别是现在使用的越来越多的固态硬盘和闪盘,对读写次数都是明确的限制。
3.现有的技术中,一般都是在创建缓存文件的时候,一次性分配足够的磁盘空间作为虚拟磁盘使用。这就导致在用户初期使用的时候,会有很大的磁盘空间浪费。
4.单一大文件,容灾性很差。如果该文件被破坏,只能删除重新建立新的缓存文件,导致缓存数据全部丢失。如果损坏的缓存文件无法删除,会导致p2p无法正常工作。
5.大文件,用户体验比较差。
发明内容
本发明所要解决的技术问题是解决现有的基于单一缓存文件的缺点,为此,提供了一种p2p缓存文件管理方法和装置。
本发明解决上述技术问题所采取的技术方案如下:
一种p2p缓存文件管理方法,包括:
在p2p软件启动时,向用户所有的磁盘查询是否存在缓存文件;
其中,如果所有的磁盘中不存在缓存文件,则选取空余空间最大的磁盘,并在该磁盘中创建缓存文件;所述缓存文件存储于缓存容器中,缓存文件中存储着缓存数据;
一个磁盘容纳一个缓存容器,一个缓存容器中容纳有一个或者多个缓存文件。
进一步地,优选的结构是,所述选取空余空间最大的磁盘,并在该磁盘中创建缓存文件包括:
选取空闲空间最大的磁盘,创建缓存文件和缓存容器;
并根据后续接收的缓存数据大小和配置策略在所述缓存容器中创建后续的缓存文件。
进一步地,优选的结构是,所述缓存容器中存在标记缓存容器所处的磁盘位置的地址信息。
进一步地,优选的结构是,当向用户所有的磁盘查询是否存在缓存文件时已存在缓存文件;
判断所述缓存文件所在的磁盘空间是否足够缓存数据使用;
当磁盘空间不足时,则进一步检测所有的磁盘空间,并选取磁盘空闲空间最大的盘,并在该磁盘中创建相应的缓存容器和缓存文件。
优选的结构是,进一步包括:遍历用户所有的磁盘中的缓存文件并获取缓存数据信息;
根据所述缓存数据信息组成一个缓存信息哈希表,并根据所述缓存信息哈希表进行缓存文件的管理。
进一步地,优选的结构是,所述缓存数据信息包含以下信息:
缓存容器索引ID、缓存文件的索引ID、缓存数据的文件信息、状态、位图Bitmap以及读取数据的地址信息。
进一步地,优选的结构是,所述缓存文件的文件信息包括文件名称、大小、创建时间和更新时间信息;
所述数据文件的状态信息包括:文件是否完整、文件是否加密、是否能够用于上传信息。
优选的结构是,进一步还包括:
定期或者当p2p缓存文件的大小达到上限的时候,对所述缓存文件中的缓存数据或者整个缓存文件进行资源回收。
一种p2p缓存文件管理装置,包括:
文件查询单元,用于在p2p软件启动时,向用户所有的磁盘查询是否存在缓存文件;
缓存管理单元,用于在如果所有的磁盘中不存在缓存文件,则选取空余空间最大的磁盘,并在该磁盘中创建缓存文件;
所述缓存文件存储于缓存容器中,缓存文件中存储着缓存数据;
一个磁盘容纳一个缓存容器,一个缓存容器中容纳有一个或者多个缓存文件。
优选的是,所述缓存管理单元,选取空余空间最大的磁盘,并在该磁盘中创建缓存文件进一步包括:选取空闲空间最大的磁盘,创建缓存文件和缓存容器;
并根据后续接收的缓存数据大小和配置策略在所述缓存容器中创建后续的缓存文件。
优选的是,所述缓存容器中存在标记缓存容器所处的磁盘位置的地址信息。
优选的是,所述缓存管理单元,进一步用于当向用户所有的磁盘查询是否存在缓存文件时已存在缓存文件;
判断所述缓存文件所在的磁盘空间是否足够缓存数据使用;
当磁盘空间不足时,则进一步检测所有的磁盘空间,并选取磁盘空闲空间最大的盘,并在该磁盘中创建相应的缓存容器和缓存文件。
优选的是,还包括:文件管理单元,进一步用于遍历用户所有的磁盘中的缓存文件并获取缓存数据信息;
根据所述缓存数据信息组成一个缓存信息哈希表,并根据所述缓存信息哈希表进行缓存文件的管理。
优选的是,所述缓存数据信息包含以下信息:
缓存容器索引ID、缓存文件的索引ID、缓存数据的文件信息、状态、位图Bitmap以及读取数据的地址信息。
优选的是,所述缓存文件的文件信息包括文件名称、大小、创建时间和更新时间信息;
所述数据文件的状态信息包括:文件是否完整、文件是否加密、是否能够用于上传信息。
优选的是,还包括缓存清理单元,进一步用于定期或者当p2p缓存文件的大小达到上限的时候,对所述缓存文件中的缓存数据或者整个缓存文件进行资源回收。
本发明的有益效果如下:
本发明基于用户磁盘使用情况,挑选用户最空闲的磁盘建立缓存文件,不会对用户的其他操作造成任何影响,且这种分配方法避免了用户磁盘空间的浪费,不会造成用户磁盘单一区域频繁读写,使得读写压力分散,使用户磁盘更长寿;此外,该方法容灾性能高。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
下面结合附图对本发明进行详细的描述,以使得本发明的上述优点更加明确。其中,
图1是本发明实施例p2p缓存文件管理方法的示意图;
图2是本发明实施例p2p缓存文件管理方法中缓存文件的存储结构图;
图3是本发明实施例p2p缓存文件管理方法的示意图;
图4是本发明实施例p2p缓存文件管理方法的实例示意图;
图5是本发明实施例p2p缓存文件管理方法的示意图;
图6是本发明实施例p2p缓存文件管理装置的结构示意图。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
为了克服现有技术,使用单一的大文件缓存的问题,本发明实施例提出了一个分布式文件存储的方法,其主要借助于多个小的缓存文件,分级分层的管理整个缓存数据,如图1所示,该方法包括:
S101:向用户所有的磁盘查询是否存在缓存文件;
即在p2p软件启动的同时,启动本发明实施例方法,向用户的所有的磁盘查询是否存在相应的缓存文件,
其中,这里的磁盘并非物理上的磁盘,而是由操作系统(如windows)根据硬盘分区表将物理磁盘所分割的磁盘(如c盘、d盘、e盘),当然,这里的磁盘也可以与物理上的磁盘相对应,即每一个单独的物理磁盘即为一个盘符所对应的磁盘,且根据不同的操作系统其盘符各不相同。
S102:如果所有的磁盘中不存在缓存文件;
S103:选取空余空间最大的磁盘,并在该磁盘中创建缓存文件,即选择一个空余空间最大的磁盘,并在该磁盘中创建相应的缓存文件。
现有技术为使用单一的大文件存储,且其硬盘空间相固定,而本实施例则与其不相同。具体来说,所述缓存文件存储于缓存容器中,缓存文件中存储着缓存数据,缓存数据以数据块的形式存在于缓存文件中,一个缓存容器中容纳有一个或者多个缓存文件。
这里的缓存容器是类似于一个虚拟磁盘文件,该虚拟磁盘文件存储于一个单独的磁盘中,并存储着一个或者多个缓存文件。
为了提高读取效率,一个磁盘容纳一个缓存容器,即一个磁盘中不会存在两个缓存容器,防止同时读取相同的磁盘时降低磁盘读写效率。
其中,缓存文件的大小不固定,从20M到2G之间不等,会根据用户实际环境,p2p缓存创建策略等因素灵活调整,且所述缓存容器的大小也会根据缓存文件的大小或者多少而动态进行调整。
通常初始创建的第一个缓存文件大小是128MB。后续创建的缓存文件根据容器的限制和磁盘空闲空间情况,决定文件的大小。创建缓存文件时,是一次性分配好空间,创建完成后,该缓存文件的大小将不会随着缓存数据的大小变更而变更,直到此缓存文件被删除,下一次创建。
缓存容器有最大值限制。如果达到最大值,则容器内不再增加新的缓存文件,而是增加新的缓存容器,清除旧的缓存数据,再接收新的缓存数据。容器的最大值也是通过服务器配置策略的设定进行设置的。
如图2所示,是本申请方法的缓存文件的存储结构,其中,在用户的磁盘中会存在m个缓存容器(0<m<用户的磁盘数),每一个缓存容器有单独的地址,标记缓存容器的位置。实际上在用户看到的就是一个目录。缓存容器中会容纳n个缓存文件(0<n)。
其中,在具体的实施例中,缓存文件的存储结构中还可以包括其他信息,例如,文件的打开方式,文件编码方式等,在此不详细说明。
本发明实施例采取了上述方案以后,由于是基于用户磁盘使用情况,挑选用户最空闲的磁盘建立缓存文件,避免了用户磁盘空间的浪费。
其中,如图3所示,本发明实施例进一步包括在步骤S102中,当向用户所有的磁盘查询是否存在缓存文件时已存在缓存文件;
则步骤S104:判断所述缓存文件所在的磁盘空间是否足够缓存数据使用;
当磁盘空间不足时,则步骤S105:
进一步检测所有的磁盘空间,并选取磁盘空闲空间最大的盘,并在该磁盘中创建相应的缓存容器和缓存文件。
其中,如果均不满足,则提出磁盘空间不足的报警信息。
通过该方法,能够进一步地优化本实施例方法的读写,避免用户磁盘空间的浪费,且不会造成用户磁盘单一区域频繁读写,使得读写压力分散,使用户磁盘更长寿;此外,该方法容灾性能高。
图4是本发明实施例p2p缓存文件管理方法的实例示意图,如图4所示,根据本发明实施例,在实例中,每次p2p软件启动的时候执行,对用户磁盘空间进行探测,其中,主要执行以下操作:
检测是否已经存在缓存容器和缓存文件
如果存在则探测缓存文件所在的磁盘空间是否足够缓存使用;如果足够缓存使用,则探测结束。
其中,如果不存在缓存容器和缓存文件,或者存在缓存文件,但是所在磁盘空间不足,则进一步检测用户所有磁盘空间,选取磁盘空闲空间最大的盘,判断这个盘中是否有足够的空间存储缓存文件。
如果空间足够,则创建缓存容器和缓存文件,探测结束。
如果空间不足,则表示用户整体的磁盘空间都比较小,不适合创建缓存文件,返回对应的返回值,探测结束。
如图5所示,该方法还进一步包括对缓存文件进行管理,具体来说,所述缓存容器中存在标记缓存容器所处的磁盘位置的地址信息,用以快速定位到缓存文件。
根据图5,该实施例的p2p缓存文件管理方法包括:
S501:遍历用户所有的磁盘中的缓存文件并获取缓存数据信息;
S502:根据所述缓存数据信息组成一个缓存信息哈希表,并根据所述缓存信息哈希表进行缓存文件的管理。
具体来说,在实施例中,所述缓存数据信息包含以下信息:
缓存容器索引ID、缓存文件的索引ID、缓存数据的文件、状态、位图Bitmap以及读取地址信息,其中,上述的读取地址信息可以为数据块的首指针信息,如图2所示。
其中,所述缓存文件的文件信息包括文件名称、大小、创建时间和更新时间信息;所述数据文件的状态信息包括:文件是否完整、文件是否加密、是否能够用于上传信息。
由此,在p2p软件进行相应的文件管理时,可以根据上述信息进行相应的数据操作和读写。
更具体来说,在本方法实施例中,会把所有的缓存容器中的缓存文件遍历,取得缓存文件中存储数据的信息,组成一个缓存信息哈希hash表,用于缓存文件的管理,这些信息在实施例中包括:
所在缓存容器的索引ID;
所在缓存文件的索引ID;
当前数据文件的信息(文件名称,大小,创建时间,更新时间等);
当前数据文件的状态(是否完整,加解密状态,是否能够用于上传等);当前数据文件的Bitmap(用于标识数据中哪些内容存在,哪些内容缺失);数据文件存储的缓存数据块的首指针(用于读取数据)等等。
由此,通过上面的哈希表,可以快速定位所需要的资源在哪个缓存容器的缓存文件中的位置,并对资源进行增删改查等操作,即通过所述数据文件的缓存文件的首指针,能够快速定位和进行相关操作。
其中,单一文件的创建,修改,信息状态更新,读取,删除等操作,与现有技术相同,缓存文件的加密解密和检查,也可以采取现有的技术,因此,本申请实施例中不在赘述。
其中,本实施例进一步包括:
定期或者当p2p缓存文件的大小达到上限的时候,对所述缓存文件中的缓存数据或者整个缓存文件进行资源回收。
具体来说,本申请实施例有两种资源回收的模式,一种是p2p缓存文件的大小达到上限的时候(上限值根据用户环境,p2p服务器配置策略,网络环境等决策出来,一般在2G-8G之间)时的强制资源回收,另外一种是定期的资源回收(间隔时间也是通过配置策略决定的)。
这里的资源回收的含义是把p2p缓存中,时间最久,使用频度最低的数据清除,空余出空间用来存储新的数据,例如,首先判断整个缓存文件,如果文件整体都时间比较久,使用频度比较低,就直接删除这个缓存文件。
如果这样的缓存文件不存在,则遍历所有缓存文件,检测其中的数据文件,把时间最久,使用频度最低的数据文件清除,用空余出空间用来存储新的数据。
由此,该方法不只能够实现分布式文件存储,且定时资源回收,不会造成用户磁盘单一区域频繁读写,使得读写压力分散,使用户磁盘更长寿。
并且,这种方法的容灾性能高,单一文件损坏,只会丢失少量数据,对其他数据不会造成影响。不会出现p2p无法工作的现象。
如图6所示,是本发明p2p缓存文件管理装置的结构示意图,其中,所述p2缓存文件管理装置,包括:
文件查询单元,用于在p2p软件启动时,向用户所有的磁盘查询是否存在缓存文件;
缓存管理单元,用于在如果所有的磁盘中不存在缓存文件,则选取空余空间最大的磁盘,并在该磁盘中创建缓存文件;
所述缓存文件存储于缓存容器中,缓存文件中存储着缓存数据;
一个磁盘容纳一个缓存容器,一个缓存容器中容纳有一个或者多个缓存文件。
其中,所述缓存管理单元,选取空余空间最大的磁盘,并在该磁盘中创建缓存文件进一步包括:选取空闲空间最大的磁盘,创建缓存文件和缓存容器;
并根据后续接收的缓存数据大小和配置策略在所述缓存容器中创建后续的缓存文件。
所述缓存容器中存在标记缓存容器所处的磁盘位置的地址信息。
其中,所述缓存管理单元,进一步用于当向用户所有的磁盘查询是否存在缓存文件时已存在缓存文件;
判断所述缓存文件所在的磁盘空间是否足够缓存数据使用;
当磁盘空间不足时,则进一步检测所有的磁盘空间,并选取磁盘空闲空间最大的盘,并在该磁盘中创建相应的缓存容器和缓存文件。
还包括:文件管理单元,进一步用于遍历用户所有的磁盘中的缓存文件并获取缓存数据信息;
根据所述缓存数据信息组成一个缓存信息哈希表,并根据所述缓存信息哈希表进行缓存文件的管理。
所述缓存数据信息包含以下信息:
缓存容器索引ID、缓存文件的索引ID、缓存数据的文件信息、状态、位图Bitmap以及读取数据的地址信息。
所述缓存文件的文件信息包括文件名称、大小、创建时间和更新时间信息;所述数据文件的状态信息包括:文件是否完整、文件是否加密、是否能够用于上传信息。
其中,还包括缓存清理单元,进一步用于定期或者当p2p缓存文件的大小达到上限的时候,对所述缓存文件中的缓存数据或者整个缓存文件进行资源回收。
本发明装置具有上述方法实施例具有的任何效果,也就是说,其能够基于用户磁盘使用情况,挑选用户最空闲的磁盘建立缓存文件,不会对用户的其他操作造成任何影响,且这种分配方法避免了用户磁盘空间的浪费,不会造成用户磁盘单一区域频繁读写,使得读写压力分散,使用户磁盘更长寿,且其容灾性能高。
需要说明的是,对于上述方法实施例而言,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。
而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。