长时间的读者,首次提问:
我是初级Linuxpipe理员,他们越来越多地支持本地和NFS存储上非常大的数据集/存储。 数据通常是以任意名称的大量文件夹和文件树的forms。 为了举一个这个挑战的例子,我正在处理20多个包含数十万个嵌套目录和数千万个文件的TB分区。
由于这些分区/出口是共享资源,我通常不得不在空间或inode耗尽时发挥侦探作用,以确定哪些文件夹是最大的罪犯。
我发现'du-s'太慢了,而且手动做这个工作,希望看看别人用什么技巧来确定最大或者最多的文件数dir是非常大的分区。
我关心的唯一操作系统是RHEL 5/6,所以任何标准CLI Linux工具的混合都是好的。
谢谢!
如果可行,我build议将数据分成多个分区。 无论使用什么工具,扫描多个文件都需要时间。 如果它位于不同的分区上,至less可以将问题缩小到一个分区。 但是,这可能不是你正在做的一个select。
杜可能是你正在寻找的最好的工具。 以下是我如何使用它:
如果你的目录结构如下所示:
/mount/1/abc/123/456/789, /mount/1/def/stuff/morestuff/evenmorestuff /mount/2/qwer/wer/erty
我会跑:
du -s /mount/*/* | sort -n
这会给你每个二级目录的总使用量,按大小sorting。 如果运行需要很长时间,请将其导入文件并在一夜之间运行。
您的输出将如下所示:
10000 /mount/1/abc 20000 /mount/1/def 23452 /mount/2/qwer
那么你只是希望能把它分解得足够清楚问题点在哪里。
如果这是一个常见的问题,那么您可以在系统不繁忙时每天晚上运行该命令,并将输出保存到文件中。 那么当你注意到这个问题的时候,你马上会看到一些最新的数据。
您可能希望看到的另一个选项是配额 – 如果这是共享存储,并且它们都使用不同的用户帐户,那么设置非常高的配额可能会起到防止使用存储空间的失控进程的作用。
我经常提出这个build议来扩大通常的df -i和du -skh解决scheme。
看看ncdu实用程序 。 这是一个基于ncurses的磁盘利用率graphics工具。 您将得到类似于下面的输出文件计数和目录大小的摘要。 它适用于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
我使用这个命令来检查系统上目录/最大的文件是什么。 但是我不确定这是否可以在您使用的环境中进行扩展:
find / -type f -size +100000k -exec ls -lh {} \; 2>/dev/null| awk '{ print $8 " : " $5}'
如果你想,你可以省略awk语句(我只是用它来清理输出)。 find命令将recursionsearch大于给定量k的文件的槽目录。 然后它会在该文件上执行ls -lh,如下所示:
-rw-r--r-- 1 username group 310K Feb 25 2011 filename
AWK语句以下列forms清除输出:
filename : 310K
我觉得这个命令最有用的事情是,你可以指定文件的最小尺寸。 如前所述,我不知道这是如何CPU /时间密集型的,你的环境。