-1

如果没有,写一个有多可行?一个文件系统,它为每个目录递归地保持其内容的大小,并且不是通过重新计算文件系统上每次更改的大小来保持更新,而是例如在文件被删除或增长时更新目录大小。

4

2 回答 2

2

我不知道这样的文件系统。从文件系统的角度来看,目录就是文件。

您可以使用:

du -s -h <dir>

显示目录中所有文件的总大小。

于 2012-09-18T08:00:58.130 回答
1

从文件系统的角度来看,目录的大小是关于其存在的信息的大小,需要物理保存在介质上。请注意,包含总共 10GB 文件的目录的“大小”实际上与空目录的“大小”相同,因为标记其存在所需的信息将占用相同的存储空间。这就是为什么文件的大小(内部的套接字、链接和其他东西)实际上与“目录大小”不同。子目录可以从不同的位置挂载,包括远程挂载和递归挂载。目录大小只是人类的想象,因为真正的文件在物理上并不是“内部”目录 - 目录只是容器的标记,与特殊文件(例如设备文件)标记特殊文件的方式完全相同。重新计算和更新总目录大小更多地取决于其中的项目数量,而不是它们的大小总和,现代文件系统可以将数十万个文件(如果不是更多)“保存在”一个目录中,即使没有子目录,所以计算它们的大小与获得这些信息可能带来的利润相比,这可能是一项相当艰巨的任务。简而言之,当您执行例如“du”(磁盘使用)命令时,或者当您在 Windows 中计算目录大小时,实际上通过内核使用文件系统驱动程序执行此操作不会更快 - 计数就是计数。与获得此信息可能获得的利润相比。简而言之,当您执行例如“du”(磁盘使用)命令时,或者当您在 Windows 中计算目录大小时,实际上通过内核使用文件系统驱动程序执行此操作不会更快 - 计数就是计数。与获得此信息可能获得的利润相比。简而言之,当您执行例如“du”(磁盘使用)命令时,或者当您在 Windows 中计算目录大小时,实际上通过内核使用文件系统驱动程序执行此操作不会更快 - 计数就是计数。

有配额系统,它保存和更新有关特定用户或组拥有的文件的总大小的信息,但是,它们仅限于单独监视分区,因为特定分区配额可能启用或不启用。此外,正如您所说,当文件增长或删除时,配额使用情况会更新,这就是信息可能不准确的原因 - 因此配额会不时重建,例如使用 cron 作业,通过扫描所有目录中的所有文件“从头开始”,在启用它的分区上。

另请注意,IO 操作速度(包括读取有关文件的信息)的瓶颈通常是介质本身的速度,然后是通信总线,然后是 CPU,而您认为每个文件系统都快如 RAM FS。RAM FS 可能是最简单的文件系统,实际上保存在 RAM 中,这使得 IO 操作进行得非常快。您可以在模块中构建它并尝试添加您描述的功能,您将学到很多有趣的东西:)

FUSE 代表“用户空间中的文件系统”,使用 fuse 实现的 FS 通常很慢。当特定情况下的功能比速度更重要时,它们才有意义,例如,您可以根据新购买的电子温度计的温度读数创建一个伪文件系统,您通过 USB 连接到计算机,但是它们不是速度守护进程,您知道 :)

于 2012-09-18T08:00:48.530 回答