我正在使用CentOS5.8,與XFS文件系統擴展存儲磁盤。我想要做的是,預先分配許多文件,連續的文件系統塊,包括單個文件和交叉文件。如何使用CentOS5.8在XFS中保留連續塊?
我可以通過來配置posix_allocate(),問題是所有的磁盤空間的API爲零,我不能耗費時間。然後,我嘗試了XFS指定API xfsctl(),與XFS_IOC_RESVSP」標誌,我可以更快地預留空間。
的問題xfsctl()是,它可以使連續的單個文件塊,但塊以上文件是而不是連續的。例如,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);
我的問題是,我怎麼能保證在文件的文件系統塊持續?感謝您的時間並感謝您的回答。