确定极大数据集的磁盘空间使用情况和文件数量(有什么技巧吗?)

确定极大数据集的磁盘空间使用情况和文件数量(有什么技巧吗?)

长期读者,首次提问:

我是一名初级 Linux 管理员,越来越多地支持本地和 NFS 存储上的超大数据集/存储。数据通常以任意名称的海量文件夹和文件树的形式出现。举个挑战的例子,我正在处理 20+ TB 的分区,其中包含数十万个嵌套目录和数千万个文件。

由于这些分区/导出是共享资源,当它们开始耗尽空间或 inode 时,我通常必须扮演侦探的角色,以确定哪些文件夹是最大的罪魁祸首。

我发现“du -s”太慢并且需要手动完成工作,并希望看看其他人使用什么技巧来确定非常大的分区中最大或最多的文件数目录。

我关心的进行这些搜索的唯一操作系统是 RHEL 5/6,因此任何标准 CLI Linux 工具的组合都可以。

谢谢!

答案1

如果可行的话,我建议将数据分成多个分区。无论使用什么工具,扫描这么多文件都需要时间。如果数据在不同的分区上,至少可以先将问题缩小到单个分区。但这可能不适合你正在做的事情。

du 可能是您正在寻找的最佳工具。以下是我使用它的方式:

如果您的目录结构如下:

/mount/1/abc/123/456/789, 
/mount/1/def/stuff/morestuff/evenmorestuff
/mount/2/qwer/wer/erty

我会跑:

du -s /mount/*/* | sort -n

这将为您提供每个二级目录的总使用情况,按大小排序。如果运行时间较长,请将其定向到文件并运行一整夜。

您的输出将如下所示:

10000 /mount/1/abc
20000 /mount/1/def
23452 /mount/2/qwer

然后你只希望它能够充分分解,以便看到问题所在。

如果这是一个常见问题,您可以让它在系统不太忙的时候每晚运行该命令,并将输出保存到文件中。这样,当您注意到问题时,您就会立即有一些最近的数据可供查看。

您可能希望查看的另一个选项是配额 - 如果这是共享存储并且它们都使用不同的用户帐户,则设置非常高的配额可能会防止失控进程使用大量存储空间。

答案2

我经常提出这个建议来增强通常的df -i解决du -skh方案......

看看ncdu 实用程序。这是一个基于 ncurses 的磁盘利用率绘图工具。您将获得类似于下面的输出,其中包含文件计数和目录大小摘要。它适用于 CentOS/RHEL。

另请参阅:https://serverfault.com/questions/412651/console-utility-to-know-how-disk-space-is-distributed/412655#412655

ncdu 1.7 ~ Use the arrow keys to navigate, press ? for help                                                         
--- /data ----------------------------------------------------------------------------------------------------------
  163.3GiB [##########] /docimages                                                                                  
   84.4GiB [#####     ] /data
   82.0GiB [#####     ] /sldata
   56.2GiB [###       ] /prt
   40.1GiB [##        ] /slisam
   30.8GiB [#         ] /isam
   18.3GiB [#         ] /mail
   10.2GiB [          ] /export
    3.9GiB [          ] /edi   
    1.7GiB [          ] /io     

答案3

我使用此命令检查系统中目录 / 中最大的文件是什么。但我不确定这在您使用的环境中是否可扩展:

find / -type f -size +100000k -exec ls -lh {} \; 2>/dev/null| awk '{ print $8 " : " $5}'

如果您愿意,可以省略 awk 语句(我只是用它来清理输出)。 find 命令将递归遍历目录,搜索大于给定数量 k 的文件。然后它将对该文件执行 ls -lh,给出类似以下内容:

-rw-r--r-- 1 username group 310K Feb 25  2011 filename

AWK 语句以以下形式清理输出:

filename : 310K

我发现这个命令最有用的一点是你可以指定文件的最小大小。如前所述,我不知道这对你的环境的 CPU/时间有多大影响。

答案4

duc - index, query and graph disk usage

我喜欢它,因为索引数据库文件较小,看看吧!

运行命令示例:

duc index /var/backup -d /var/backup/statistics/duc.db -m7 -p --uncompressed

https://duc.zevv.nl/

相关内容