5
ll /srv/node/dcodxx/test.sh
-rw-r--r--. 1 root root 7 Nov  5 11:18 /srv/node/dcodxx/test.sh

文件的大小以字节为单位。该文件存储在 xfs 文件系统中,块大小为 4096 字节。

xfs_info /srv/node/sdaxx/
meta-data=/dev/sda               isize=256    agcount=32, agsize=7630958 blks
         =                       sectsz=4096  attr=2, projid32bit=0
data     =                       bsize=4096   blocks=244190646, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal               bsize=4096   blocks=119233, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

这是否意味着一个块可以容纳多个文件,如果不是,其余字节(4096-7)会发生什么?此外,为存储的 inode 保留的 256 字节在哪里存储,如果它与文件存储在同一块中,文件大小不应该更大(256 + 7)吗?

4

2 回答 2

5

文件数据以文件系统块大小为单位存储,目前 XFS 上的多个文件之间无法进行块共享。因此,已用磁盘空间始终是文件中四舍五入到下一个块大小的字节数——一个 1 字节的文件将在 4k 块大小的文件系统上消耗 4k 的磁盘空间。

inode 本身包含文件元数据,例如大小、时间戳、范围数据等 - 在 xfs 上,它还可以包含扩展属性信息。

磁盘上的 inode 与文件数据块是分开的,并且在具有 256 字节 inode 的文件系统上总是会消耗 256 字节,而与使用的元数据量无关。如果需要超过 256 个字节来存储额外的扩展信息或扩展属性数据,则将分配额外的文件系统块大小的元数据块。

于 2016-06-25T18:18:03.720 回答
4

这是否意味着一个块可以容纳多个文件,如果不是,其余字节(4096-7)会发生什么?

一个块不能包含多个文件。如果文件大于一个块,则使用多个块。

像 XFS 这样的现代文件系统有一个称为“内联”的功能,其中足够小的文件(不超过 60 字节)可以存储在 inode 中,在存储块指针的空间中。

为存储的 inode 保留的 256 个字节在哪里存储,如果它与文件存储在同一块中,文件大小不应该更大(256+7)吗?

inode 信息存储在 inode 表中。

于 2014-11-06T21:14:24.097 回答