gpt4 book ai didi

linux - 如何使用CentOS5.8在XFS中保留连续 block ?

转载 作者:太空宇宙 更新时间:2023-11-04 04:21:02 25 4
gpt4 key购买 nike

我使用的是CentOS5.8,带有XFS文件系统扩展存储磁盘。我想要做的是,预先分配许多文件,在文件系统中使用连续的 block ,包括单个文件和交叉文件。

我可以通过posix_allocate()进行分配,问题是API将所有磁盘空间清零,我无法承受耗时。然后我尝试了 XFS 指定 API xfsctl() ,使用 XFS_IOC_RESVSP" 标志,我可以更快地预留空间。

xfsctl() 的问题是,它可以使单个文件的 block 连续,但文件上的 block 连续。例如10个文件,a/b/c/d/e/f...保留。当我对这些文件进行真正的写入后,结果发现文件“b”并不位于文件“a”旁边,并且某些文件可能与前一个和下一个文件都相距很远,尽管其他文件可能彼此相邻,但这种情况很少见。

我使用以下代码进行预分配:

ftruncate(fd, FILE_SIZE);

xfs_flock_t flag = {0};
flag.l_whence = SEEK_SET;
flag.l_start = 0;
flag.l_len = 512*1024*1024;
xfsctl(fileName, fd, XFS_IOC_RESVSP64, &flag);

我的问题是,如何保证文件系统 block 上的文件连续?感谢您的宝贵时间并感谢您的回答。

最佳答案

从XFS邮件列表得到答案,原来是默认inode分配器的问题。使用inode64挂载,如果AG中有足够的可用磁盘空间,文件在内部和外部都是连续的。由于默认的 inode32 分配器,请始终尝试在每个分配的 AG 之间轮换。

关于linux - 如何使用CentOS5.8在XFS中保留连续 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13226790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com