如何更改 XFS 上的块大小
How to change block size on XFS
情况:服务器使用XFS文件系统,块大小4kB。有很多小文件。
结果:某些目录占用 2+GB space,但实际文件大小小于 200MB。
解决方案:将 XFS 块大小更改为尽可能小的 512B。我知道这意味着更多的开销和一些性能损失,我一直没能知道有多少。
问:怎么做?
我知道 XFS 使用 xfsdump 来备份数据。所以让我们假设 /dev/sda2 是我想要更改的实际 XFS 文件系统,而 /mnt/export 是我想使用 xfsdump 转储它的地方。手册说转储的块大小必须与恢复的块大小相同,并且 -b 参数“指定要用于转储的块大小(以字节为单位)。” .我有点担心,因为手册还说“默认块大小为 1Mb”
这是转储完整文件系统的正确方法吗(在本例中,/dev/sda2 挂载到 /home)?
xfsdump -b 512 -f /mnt/export /home
如果上述命令正确,我需要做什么才能正确取回我的文件,只有 512B 块大小?我的猜测是使用
将 /dev/sda2 重新格式化为 512B 块大小
mkfs.xfs /dev/sda2 -b 512
然后使用
xfsrestore -f /mnt/export /home
但我不确定如何做,也没有好的方法来测试我是否正确。
所以我做了更多研究并得出了这个:
xfsdump -f /mnt/export_file /home
umount /home
mkfs.xfs -b size=1024 /dev/sda2 -f
#Minimum block size for CRC enabled filesystems is 1024 bytes.
mount /home
xfsrestore -f /mnt/export_file /home
如您所见,由于启用 CRC 的文件系统的最低要求,我无法将块大小更改为 512B,但除此之外,完全成功。
我没想到我必须先卸载文件系统。如果您以在 /home 中拥有 homedir 的身份登录,您将无法执行此操作,因此请以 root 身份登录。
情况:服务器使用XFS文件系统,块大小4kB。有很多小文件。
结果:某些目录占用 2+GB space,但实际文件大小小于 200MB。
解决方案:将 XFS 块大小更改为尽可能小的 512B。我知道这意味着更多的开销和一些性能损失,我一直没能知道有多少。
问:怎么做?
我知道 XFS 使用 xfsdump 来备份数据。所以让我们假设 /dev/sda2 是我想要更改的实际 XFS 文件系统,而 /mnt/export 是我想使用 xfsdump 转储它的地方。手册说转储的块大小必须与恢复的块大小相同,并且 -b 参数“指定要用于转储的块大小(以字节为单位)。” .我有点担心,因为手册还说“默认块大小为 1Mb”
这是转储完整文件系统的正确方法吗(在本例中,/dev/sda2 挂载到 /home)?
xfsdump -b 512 -f /mnt/export /home
如果上述命令正确,我需要做什么才能正确取回我的文件,只有 512B 块大小?我的猜测是使用
将 /dev/sda2 重新格式化为 512B 块大小mkfs.xfs /dev/sda2 -b 512
然后使用
xfsrestore -f /mnt/export /home
但我不确定如何做,也没有好的方法来测试我是否正确。
所以我做了更多研究并得出了这个:
xfsdump -f /mnt/export_file /home
umount /home
mkfs.xfs -b size=1024 /dev/sda2 -f
#Minimum block size for CRC enabled filesystems is 1024 bytes.
mount /home
xfsrestore -f /mnt/export_file /home
如您所见,由于启用 CRC 的文件系统的最低要求,我无法将块大小更改为 512B,但除此之外,完全成功。 我没想到我必须先卸载文件系统。如果您以在 /home 中拥有 homedir 的身份登录,您将无法执行此操作,因此请以 root 身份登录。