![为什么两个目录的内容相同但大小却不同?](https://linux22.com/image/1019188/%E4%B8%BA%E4%BB%80%E4%B9%88%E4%B8%A4%E4%B8%AA%E7%9B%AE%E5%BD%95%E7%9A%84%E5%86%85%E5%AE%B9%E7%9B%B8%E5%90%8C%E4%BD%86%E5%A4%A7%E5%B0%8F%E5%8D%B4%E4%B8%8D%E5%90%8C%EF%BC%9F.png)
我有两个资源相同的虚拟机。有人能解释一下为什么下面的目录大小不同,尽管它们的内容相同吗?
VM1
root@vrni-platform:/usr/share/elasticsearch# ls -lah
total 560K
drwxr-xr-x 7 root root 4.0K Jul 29 13:59 .
drwxr-xr-x 141 root root 4.0K Jul 29 13:59 ..
drwxr-xr-x 2 root root 4.0K Jul 29 14:37 bin
drwxr-xr-x 9 root root 4.0K Jul 29 13:59 jdk
drwxr-xr-x 3 root root 4.0K Jul 29 13:59 lib
drwxr-xr-x 46 root root 4.0K Jul 29 13:59 modules
-rw-rw-r-- 1 root root 523K May 28 16:35 NOTICE.txt
drwxr-xr-x 2 root root 4.0K May 28 16:35 plugins
-rw-r--r-- 1 root root 8.0K May 28 16:35 README.asciidoc
VM2
root@vrni-platform:/usr/share/elasticsearch# ls -lah
total 568K
drwxr-xr-x 7 root root 4.0K Jul 28 13:50 .
drwxr-xr-x 141 root root 4.0K Jul 28 10:35 ..
drwxr-xr-x 2 root root 4.0K Jul 29 07:20 bin
drwxr-xr-x 9 root root 4.0K Jul 28 13:50 jdk
drwxr-xr-x 3 root root 12K Jul 28 13:50 lib
drwxr-xr-x 46 root root 4.0K Jul 28 10:35 modules
-rw-rw-r-- 1 root root 523K May 28 16:35 NOTICE.txt
drwxr-xr-x 2 root root 4.0K May 28 16:35 plugins
-rw-r--r-- 1 root root 8.0K May 28 16:35 README.asciidoc
VM2 中的大小为lib
12K,而 VM1 中的大小为lib
4K。
lib
VM1 中的内容
root@vrni-platform:/usr/share/elasticsearch/lib# ls -lah
total 26M
drwxr-xr-x 3 root root 4.0K Jul 29 13:59 .
drwxr-xr-x 7 root root 4.0K Jul 29 13:59 ..
-rw-r--r-- 1 root root 12M May 28 16:35 elasticsearch-7.7.1.jar
-rw-r--r-- 1 root root 18K May 28 16:35 elasticsearch-cli-7.7.1.jar
-rw-r--r-- 1 root root 44K May 28 16:35 elasticsearch-core-7.7.1.jar
-rw-r--r-- 1 root root 44K May 28 16:35 elasticsearch-geo-7.7.1.jar
-rw-r--r-- 1 root root 21K May 28 16:35 elasticsearch-launchers-7.7.1.jar
-rw-r--r-- 1 root root 6.4K May 28 16:35 elasticsearch-plugin-classloader-7.7.1.jar
-rw-r--r-- 1 root root 11K May 28 16:35 elasticsearch-secure-sm-7.7.1.jar
-rw-r--r-- 1 root root 135K May 28 16:35 elasticsearch-x-content-7.7.1.jar
-rw-r--r-- 1 root root 112K May 28 16:35 HdrHistogram-2.1.9.jar
-rw-r--r-- 1 root root 1.2M May 28 16:35 hppc-0.8.1.jar
-rw-r--r-- 1 root root 342K May 28 16:35 jackson-core-2.10.4.jar
-rw-r--r-- 1 root root 58K May 28 16:35 jackson-dataformat-cbor-2.10.4.jar
-rw-r--r-- 1 root root 89K May 28 16:35 jackson-dataformat-smile-2.10.4.jar
-rw-r--r-- 1 root root 46K May 28 16:35 jackson-dataformat-yaml-2.10.4.jar
-rw-r--r-- 1 root root 8.6K May 28 16:35 java-version-checker-7.7.1.jar
-rw-r--r-- 1 root root 865K May 28 16:35 jna-4.5.1.jar
-rw-r--r-- 1 root root 628K May 28 16:35 joda-time-2.10.4.jar
-rw-r--r-- 1 root root 77K May 28 16:35 jopt-simple-5.0.2.jar
-rw-r--r-- 1 root root 780K May 28 16:35 jts-core-1.15.0.jar
-rw-r--r-- 1 root root 258K May 28 16:35 log4j-api-2.11.1.jar
-rw-r--r-- 1 root root 1.6M May 28 16:35 log4j-core-2.11.1.jar
-rw-r--r-- 1 root root 1.7M May 28 16:35 lucene-analyzers-common-8.5.1.jar
-rw-r--r-- 1 root root 137K May 28 16:35 lucene-backward-codecs-8.5.1.jar
-rw-r--r-- 1 root root 3.4M May 28 16:35 lucene-core-8.5.1.jar
-rw-r--r-- 1 root root 89K May 28 16:35 lucene-grouping-8.5.1.jar
-rw-r--r-- 1 root root 205K May 28 16:35 lucene-highlighter-8.5.1.jar
-rw-r--r-- 1 root root 146K May 28 16:35 lucene-join-8.5.1.jar
-rw-r--r-- 1 root root 51K May 28 16:35 lucene-memory-8.5.1.jar
-rw-r--r-- 1 root root 97K May 28 16:35 lucene-misc-8.5.1.jar
-rw-r--r-- 1 root root 372K May 28 16:35 lucene-queries-8.5.1.jar
-rw-r--r-- 1 root root 374K May 28 16:35 lucene-queryparser-8.5.1.jar
-rw-r--r-- 1 root root 219K May 28 16:35 lucene-sandbox-8.5.1.jar
-rw-r--r-- 1 root root 303K May 28 16:35 lucene-spatial3d-8.5.1.jar
-rw-r--r-- 1 root root 236K May 28 16:35 lucene-spatial-extras-8.5.1.jar
-rw-r--r-- 1 root root 244K May 28 16:35 lucene-suggest-8.5.1.jar
-rw-r--r-- 1 root root 302K May 28 16:35 snakeyaml-1.26.jar
-rw-r--r-- 1 root root 201K May 28 16:35 spatial4j-0.7.jar
-rw-r--r-- 1 root root 51K May 28 16:35 t-digest-3.2.jar
drwxr-xr-x 4 root root 4.0K Jul 29 13:59 tools
lib
VM2 中的内容
root@vrni-platform:/usr/share/elasticsearch/lib# ls -lah
total 26M
drwxr-xr-x 3 root root 12K Jul 28 13:50 .
drwxr-xr-x 7 root root 4.0K Jul 28 13:50 ..
-rw-r--r-- 1 root root 12M May 28 16:35 elasticsearch-7.7.1.jar
-rw-r--r-- 1 root root 18K May 28 16:35 elasticsearch-cli-7.7.1.jar
-rw-r--r-- 1 root root 44K May 28 16:35 elasticsearch-core-7.7.1.jar
-rw-r--r-- 1 root root 44K May 28 16:35 elasticsearch-geo-7.7.1.jar
-rw-r--r-- 1 root root 21K May 28 16:35 elasticsearch-launchers-7.7.1.jar
-rw-r--r-- 1 root root 6.4K May 28 16:35 elasticsearch-plugin-classloader-7.7.1.jar
-rw-r--r-- 1 root root 11K May 28 16:35 elasticsearch-secure-sm-7.7.1.jar
-rw-r--r-- 1 root root 135K May 28 16:35 elasticsearch-x-content-7.7.1.jar
-rw-r--r-- 1 root root 112K May 28 16:35 HdrHistogram-2.1.9.jar
-rw-r--r-- 1 root root 1.2M May 28 16:35 hppc-0.8.1.jar
-rw-r--r-- 1 root root 342K May 28 16:35 jackson-core-2.10.4.jar
-rw-r--r-- 1 root root 58K May 28 16:35 jackson-dataformat-cbor-2.10.4.jar
-rw-r--r-- 1 root root 89K May 28 16:35 jackson-dataformat-smile-2.10.4.jar
-rw-r--r-- 1 root root 46K May 28 16:35 jackson-dataformat-yaml-2.10.4.jar
-rw-r--r-- 1 root root 8.6K May 28 16:35 java-version-checker-7.7.1.jar
-rw-r--r-- 1 root root 865K May 28 16:35 jna-4.5.1.jar
-rw-r--r-- 1 root root 628K May 28 16:35 joda-time-2.10.4.jar
-rw-r--r-- 1 root root 77K May 28 16:35 jopt-simple-5.0.2.jar
-rw-r--r-- 1 root root 780K May 28 16:35 jts-core-1.15.0.jar
-rw-r--r-- 1 root root 258K May 28 16:35 log4j-api-2.11.1.jar
-rw-r--r-- 1 root root 1.6M May 28 16:35 log4j-core-2.11.1.jar
-rw-r--r-- 1 root root 1.7M May 28 16:35 lucene-analyzers-common-8.5.1.jar
-rw-r--r-- 1 root root 137K May 28 16:35 lucene-backward-codecs-8.5.1.jar
-rw-r--r-- 1 root root 3.4M May 28 16:35 lucene-core-8.5.1.jar
-rw-r--r-- 1 root root 89K May 28 16:35 lucene-grouping-8.5.1.jar
-rw-r--r-- 1 root root 205K May 28 16:35 lucene-highlighter-8.5.1.jar
-rw-r--r-- 1 root root 146K May 28 16:35 lucene-join-8.5.1.jar
-rw-r--r-- 1 root root 51K May 28 16:35 lucene-memory-8.5.1.jar
-rw-r--r-- 1 root root 97K May 28 16:35 lucene-misc-8.5.1.jar
-rw-r--r-- 1 root root 372K May 28 16:35 lucene-queries-8.5.1.jar
-rw-r--r-- 1 root root 374K May 28 16:35 lucene-queryparser-8.5.1.jar
-rw-r--r-- 1 root root 219K May 28 16:35 lucene-sandbox-8.5.1.jar
-rw-r--r-- 1 root root 303K May 28 16:35 lucene-spatial3d-8.5.1.jar
-rw-r--r-- 1 root root 236K May 28 16:35 lucene-spatial-extras-8.5.1.jar
-rw-r--r-- 1 root root 244K May 28 16:35 lucene-suggest-8.5.1.jar
-rw-r--r-- 1 root root 302K May 28 16:35 snakeyaml-1.26.jar
-rw-r--r-- 1 root root 201K May 28 16:35 spatial4j-0.7.jar
-rw-r--r-- 1 root root 51K May 28 16:35 t-digest-3.2.jar
drwxr-xr-x 4 root root 4.0K Jul 28 10:35 tools
正如解释的那样这里在 Linux 中,目录的大小通常为 4K,其中包含指向目录中文件列表的链接。那么有人能告诉我为什么上述两种情况下报告的目录大小不同吗?
操作系统 - Ubuntu 16.04.6
答案1
VM1 和 VM2 中 lib 的大小是保存了名称和指定目录内容的 inode 数组的文件的大小。目录是一种特殊文件,具有自己的 inode。
这种类型(目录)的特殊文件预期大小为 4096 字节 - 4k 字节,但是,如果 shell 认为有必要、为了存储更多数据或者可能由于某些内部原因(这里似乎是这种情况),则预期大小可以增大到更大的。
中的一个ext4 的特性是当文件被删除时或者在 shell 决定将该大小扩展为超过 4096 之后,该大小不会减少。
我希望我能帮你阐明一些问题,尽管我也记不清楚全部细节。