我继承了一个研究集群,该集群在三个文件系统中拥有约40TB的数据。数据可以追溯到将近15年,而且由于研究人员出于不同的原因互相复制数据,然后挂在副本上,因此很可能存在大量重复数据。
我知道有关fdupes和rmlint的重复数据删除工具。我正在尝试找到一个适用于如此大的数据集的数据库。我不在乎是否需要数周(甚至数月)来爬网所有数据-无论如何,我可能都会限制它以方便在文件系统上使用。但是我需要找到一种在某种程度上对RAM超高效的工具,或者可以将所需的所有中间数据存储在文件中,而不是RAM中。我假设如果我将所有这些数据作为一组爬网,我的RAM(64GB)将用光。
我现在正在900GB树上试验fdupes。这是整个过程的25%,RAM使用率一直在缓慢增长,现在达到700MB。
或者,是否有一种方法可以指导进程使用磁盘映射的RAM,以便有更多可用空间,并且不使用系统RAM?
我正在运行CentOS 6。
如果相关的话,文件系统是XFS。也就是说,我知道它不是具有像XFS这样的重复数据删除功能的fs。
—
Michael Stauffer 2014年
您为什么首先担心RAM?操作系统具有自己的内存管理算法,并且RAM使用率正在“上升”这一事实并不意味着它最终会耗尽所有RAM。我很确定不会发生。
—
Art Gertner
我不知道专用工具的工作方式,但是您可以计算每个文件的哈希值并将其与文件路径一起记录,然后按哈希排序和重复数据删除进行排序。它应该可以通过简单的Python脚本甚至在Bash中实现。除排序步骤外,RAM的使用应该最少,但是我想您可以使用某种修改的mergesort使其保持合理的低水平。
—
gronostaj
是的,专用工具可以计算哈希值,但是首先要做的事情是查看文件大小,然后仅哈希文件的开头以限制需要计算的完整哈希值。
—
Michael Stauffer 2014年
至于RAM,我担心降低文件服务器的速度-请参阅下面对“答案”的评论。
—
Michael Stauffer 2014年