情况:服务器使用XFS文件系统,块大小为4kB。有很多小文件。
结果:有些目录占用2 GB以上的空间,但实际文件大小小于200MB。
解决方案:将XFS块大小更改为尽可能小的512B。我知道这意味着更多的开销和一些性能损失,我还不知道有多少。
问题:怎么做?
我知道XFS使用xfsdump来备份数据。因此,假设/dev/sda2是我想要更改的实际XFS文件系统,/mnt/export是我想要使用xfsdump转储它的地方。Manual说转储的块大小必须与恢复的块大小相同;指定要用于转储的块大小(以字节为单位(&"。我有点担心,因为手册上也写着";默认块大小是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,但除此之外,完全成功。我没有意识到我必须先卸载文件系统。如果你以homedir在/home中的用户身份登录,你将无法做到这一点,所以以root用户身份登录。