我正在将多个目录从centos 6复制到centos 7,源系统中的文件系统是NFS,而目标系统中的文件系统是NFS4,我注意到目标系统中的目录大小较小?这是正常现象吗?为什么会发生这种情况?
答案1
NFS 并不是真正的文件系统类型:它是一种用于共享文件和目录的网络协议,但 NFS 客户端像文件系统一样插入内核(其余部分)。本质上,NFS 客户端伪装成文件系统驱动程序,而实际文件系统位于 NFS 服务器上,使用服务器内核支持的任何文件系统类型。
RHEL/CentOS 6 和 7 具有不同的默认文件系统类型:虽然 RHEL/CentOS 6 系统可能使用ext4
文件系统,但 RHEL/CentOS 7 系统最有可能使用xfs
.
不同的文件系统类型使用不同的元数据结构,因此即使包含完全相同的文件,目录的大小也可能不同。
此外,在某些文件系统(如ext4
)中,目录的大小(如 所示ls -ld
)不仅可以反映该目录当前拥有的文件数量,还可以反映该目录过去包含的文件数量。如果您将大量文件写入单个目录,文件系统会自动为目录元数据分配更多空间 - 但当您删除文件时,这些分配并不总是立即释放,假设您可能很快会向该目录写入更多文件再次目录。这部分是性能优化,部分是为了最大限度地减少目录元数据碎片。
在极端情况下,您可能希望显式收缩目录以匹配它们当前拥有的文件数量,例如通过在文件系统e2fsck -D
上运行“优化目录”操作ext4
(需要卸载),或者只是将您希望保留的所有内容移动到一个新目录,删除旧目录,并将新目录重命名为与旧目录相同。如果例如发生故障的程序将数以万计的文件注入到通常仅包含少数文件的目录中,则后一种方法可能会很方便。