发明内容
本发明的目的在于提供一种防止缓存溢出的设备和方法,在UNIX或Linux***中,通过预测可能的缓存***溢出将临时文件迁移到网络文件***中来防止缓存溢出的设备和方法,由于迁移/挂载的不是整个文件***,所以能够确保作业的运行不明显劣化。
根据本发明的一方面,提供一种防止缓存溢出的设备,包括:迁移判断模块,用于根据所述临时文件的大小,按照预定的算法计算本地缓冲区中剩余空间大小的阈值,计算当前本地缓冲区中实际的剩余空间大小,将剩余空间大小的阈值与实际的剩余空间大小进行比较,如果剩余空间大小的阈值大于实际的剩余空间大小,则确定需要进行临时文件迁移;文件迁移模块,将临时文件迁移到预定的目标目录下,并且在本地缓冲区的目录下建立到迁移的临时文件的软链接;缓存监控模块,监控应用作业对本地缓冲区中临时文件的操作,当检测到对本地缓冲区的临时文件进行写操作时,控制迁移判断模块确定是否需要进行临时文件迁移,如果确定需要进行临时文件迁移,则控制文件迁移模块进行临时文件迁移。
在所述设备上可运行UNIX或Linux***,并且所述预定的目标目录优选为网络文件***中的预定文件目录。
迁移判断模块可按照以下算式计算剩余空间大小的阈值Φ:Φ=k×a,其中,a为单个临时文件的大小,k是加权系数,值为大于1的整数。
所述设备可根据***I/O的速率确定k的值。
本地缓冲区中可有至少一个大小相等的临时文件,并且如果迁移判断模块确定剩余空间大小的阈值小于实际的剩余空间大小,则迁移判断模块基于剩余空间大小的阈值确定要迁移的临时文件的个数,并且根据先进先出的原则确定要迁移的文件。
优选地,所述设备还包括迁移记录模块,用于记录临时文件迁移的状态信息,所述状态信息包括迁移的临时文件的文件名、访问权限、目标位置以及使用状态。
优选地,所述设备还包括清理模块,用于当缓存监控模块确定在完成应用作业后,根据记录的状态信息清除目标目录下的临时文件。
根据本发明的另一方面,提供一种防止缓存溢出的方法,包括监控应用作业对本地缓冲区中临时文件的操作,当检测到对本地缓冲区的临时文件进行写操作时执行以下步骤:根据所述临时文件的大小,按照预定的算法计算本地缓冲区中剩余空间大小的阈值;计算当前本地缓冲区中实际的剩余空间大小;将剩余空间大小的阈值与实际的剩余空间大小进行比较;如果剩余空间大小的阈值大于实际的剩余空间大小,则将临时文件迁移到预定的目标目录下,并且在本地缓冲区的目录下建立到迁移的临时文件的软链接。
可在UNIX或Linux环境下执行所述方法,并且所述预定的目标目录优选为网络文件***中的预定文件目录。
可按照以下算式计算剩余空间大小的阈值Φ:Φ=k×a,其中,a为单个临时文件的大小,k是加权系数,值为大于1的整数。
可根据***I/O的速率确定k的值。
本地缓冲区中可有至少一个大小相等的临时文件,并且如果剩余空间大小的阈值小于实际的剩余空间大小,则基于剩余空间大小的阈值确定要迁移的临时文件的个数,并且根据先进先出的原则确定要迁移的文件。
可还记录临时文件迁移的状态信息,所述状态信息包括迁移的临时文件的文件名、访问权限、目标位置以及使用状态。
在完成应用作业后,可根据记录的状态信息清除目标目录下的临时文件。
具体实施方式
以下,参照附图来详细说明本发明的实施例。
通常,操作***在本地文件***中分配预定大小的缓冲区作为应用程序存放其中间数据的存储空间,在此称为本地缓冲区。本发明的防止缓存溢出的设备和方法可实现为计算机***的后台程序,其监控本地缓冲区的访问和使用。当检测到对本地缓冲区中的临时文件的写操作时,基于临时文件的大小计算一个本地缓冲区剩余空间大小的阈值,当确定本地缓冲区实际的剩余空间的大小小于剩余空间大小的阈值时,将本地缓冲区的临时文件迁移到网络文件***中预定的目标目录下,并且建立与迁移的所述目标目录下的临时文件的链接,从而进行写操作的作业对网络文件***下的临时文件进行操作。
图1是示出根据本发明的防止缓存溢出的设备的逻辑框图。
参照图1,根据本发明的用于防止缓存移除的设备包括缓存监控模块110、迁移设置模块120、迁移判断模块130和文件迁移模块140。
缓存监控模块110监控应用作业对本地缓冲区的操作。缓存监控模块110在检测到对本地缓冲区中临时文件的写操作时,通过迁移判断模块130确定是否需要进行临时文件的迁移。当迁移判断模块130确定需要迁移临时文件时,缓存监控模块110控制文件迁移模块140将临时文件迁移到指定的网络文件***中的目标目录下,并且建立与目标目录下的临时文件的软链接,从而应用作业的写操作得以继续执行。
迁移设置模块120用于存储和设置临时文件迁移相关的信息。所述临时文件迁移相关的信息包括但不限于,临时文件迁移判断相关的参数以及作为迁移目标目录的网络文件***下指定目录的信息。但是,根据本发明的示例性实施例,所述临时文件迁移相关的信息可以是预先设定的常量,在此情况下,本发明的防止缓存溢出的设备可不包括迁移设置模块120。
迁移判断模块130用于判断当前是否需要进行临时文件的迁移。具体地说,迁移判断模块130根据临时文件的大小,按照预定的算法计算本地缓冲区中剩余空间大小的阈值(也就是,预测的最低的不会导致缓存溢出的剩余空间大小),计算当前本地缓冲区中实际的剩余空间大小,然后将剩余空间大小的阈值与实际的剩余空间大小进行比较。如果剩余空间大小的阈值大于实际的剩余空间大小,则迁移判断模块130确定需要进行临时文件的迁移。
针对上述的本地缓冲区中剩余空间大小的阈值的计算,根据本发明的示例性实施例,可根据以下算法来确定所述剩余空间大小的阈值Φ:
Φ=k×a,
其中,a为单个临时文件的大小,k是加权系数,并且k的值为大于1的整数(如3或5)。参数k的值主要决定了Φ的大小。可以根据***或文件***的I/O速率来确定k的值,也可以根据实验得出的经验值为k赋值。当然k越大,防止本地缓存溢出的安全性提高,但是在产生频繁的临时文件迁移的情况下,应用作业的运行响应将劣化。可固定地使用常量的k值,也通过迁移设置模块120存储k值。在此情况下,迁移判断模块130从迁移设置模块120调取k值。
文件迁移模块140根据迁移设置模块120的目标目录信息,将临时文件迁移到网络文件***中的所述目标目录下。所述迁移操作是指将临时文件复制到目标目录下,并且删除临时文件原文件。在此基础上,文件迁移模块140在本地缓冲区的目录下为所述临时文件建立已迁移到目标目录下的临时文件的信息。在UNIX或Linux环境下,使用ln命令建立所述软链接。
根据本发明的示例性实施例,当处理超大量中间数据时,往往在本地缓冲区创建多个大小相等的临时文件(根据临时文件大小的配置以及本地缓冲区的大小,所述多个临时文件的最后一个可能小于其他的临时文件)。此时,当确定需要进行临时文件迁移时,需确定迁移几个临时文件以及迁移哪些临时文件。此时,迁移判断模块130基于计算的剩余空间大小的阈值确定要迁移的临时文件的个数,并且根据先进先出的原则确定具体要迁移的文件。例如,如果本地缓冲区有10G的空间,已有4个临时文件,每个临时文件为2G大小,而上述公式中的k是3,则计算的剩余空间大小的阈值是6G。当前实际的剩余空间是2G,那么根据本发明的示例性实施例,可确定迁移2个临时文件。根据本发明的另一示例性实施例,也可确定迁移3个临时文件。
根据本发明的优选实施例,本发明的防止缓存溢出的设备还包括迁移记录模块150。当文件迁移模块140执行临时文件迁移操作时,迁移记录模块150记录临时文件迁移的状态信息,包括迁移的每个临时文件的文件名、访问权限、目标位置以及使用状态等信息。
根据本发明的另一优选实施例,本发明的防止缓存溢出的设备还包括清理模块160。当缓存监控模块110确定应用作业已完成时,清理模块160在缓存监控模块110的控制下,根据迁移记录模块150记录的临时文件迁移的状态信息,删除本地缓冲区目录下的相应软链接以及目标目录下的相应临时文件,并且通过迁移记录模块150删除相应的状态信息。
由此可见,根据本发明的防止缓存溢出的设备在应用作业需要进行写操作时,根据预定的算法计算最小的安全剩余空间大小,通过将所述最小的安全剩余空间大小和实际剩余空间的大小进行比较来确定本地缓冲区是否有足够的空间用于作业,如果确定当前没有足够大的缓存空间,则将部分或全部(当只有一个临时文件时)临时文件临时迁移到网络文件***中的指定目标目录下并建立到已迁移文件的相关链接,应用作业通过所述链接访问已迁移的临时文件。这样,确保本地缓存不溢出,同时也不明显劣化应用作业的响应。
图2是示出根据本发明的防止缓存溢出的方法的流程图。
参照图2,根据本发明的防止缓存溢出的设备监测应用作业对本地缓冲区的临时文件的访问和操作。在步骤S210,确定是否将对本地缓冲区的临时文件进行写操作。如果确定将对本地缓冲区的临时文件进行写操作,则在步骤S220,所述设备根据临时文件的大小,按照预定的算法计算本地缓冲区中剩余空间大小的阈值(也就是,预测的最低的不会导致缓存溢出的剩余空间大小)。根据本发明的示例性实施例,可根据以下算法来确定所述剩余空间大小的阈值Φ:
Φ=k×a,
其中,a为单个临时文件的大小,k是加权系数,并且k的值为大于1的整数(如3或5)。参数k的值主要决定了Φ的大小。可以根据***或文件***的I/O速率来确定k的值,也可以根据实验得出的经验值为k赋值。当然k越大,防止本地缓存溢出的安全性提高,但是在产生频繁的临时文件迁移的情况下,应用作业的运行响应将劣化。可固定地使用常量的k值,也通过迁移设置模块120存储k值。在此情况下,迁移判断模块130从迁移设置模块120调取k值。
在步骤S230,所述设备计算当前本地缓冲区中实际的剩余空间大小。
在步骤S240,所述设备通过将剩余空间大小的阈值与实际的剩余空间大小进行比较来确定是否需要进行临时文件迁移。如果确定剩余空间大小的阈值大于实际的剩余空间大小(需要进行临时文件迁移),则在步骤S250,将临时文件迁移到预定的目标目录下,并且步骤S260,在本地缓冲区的目录下建立到迁移的临时文件的软链接。
在本地缓冲区存在多个临时文件的情况下,当在步骤S240确定选用进行临时文件的迁移时,还确定迁移几个临时文件以及迁移哪些临时文件。此时,基于计算的剩余空间大小的阈值确定要迁移的临时文件的个数,并且根据先进先出的原则确定具体要迁移的文件。在步骤S250和S260,将确定迁移的临时文件迁移到目标目录下,并且为所述迁移的临时文件建立软链接。
根据本发明的优选实施例,当在步骤S250和S260执行临时文件的迁移并建立软链接时,还记录临时文件迁移的状态信息,包括迁移的每个临时文件的文件名、访问权限、目标位置以及使用状态等信息。根据本发明的另一优选实施例,当确定应用作业已完成时,还根据记录的临时文件迁移的状态信息,删除本地缓冲区目录下的相应软链接以及目标目录下的相应临时文件,并且删除记录的相应的状态信息。
根据本发明的防止缓存溢出的方法在应用作业需要进行写操作时,通过确保本地缓冲区有足够的空间,并且必要时将部分或全部(当只有一个临时文件时)临时文件临时迁移到网络文件***中的指定目标目录下并建立到已迁移文件的相关链接,应用作业通过所述链接访问已迁移的临时文件。这样,确保本地缓存不溢出,同时也不明显劣化应用作业的响应。
尽管已参照优选实施例表示和描述了本发明,但本领域技术人员应该理解,在不脱离由权利要求限定的本发明的精神和范围的情况下,可以对这些实施例进行各种修改和变换。