[英]How to reserve continuous blocks in XFS with CentOS5.8?
我正在使用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);
我的問題是,如何保證文件系統對文件的連續阻止? 感謝您的寶貴時間,感謝您的答復。
從XFS郵件列表中得到了答案,事實證明這是默認inode分配器的問題。 使用inode64掛載,如果AG中有足夠的磁盤空間,則文件在內部和外部都是連續的。 由於使用默認的inode32分配器,因此請始終嘗試在每個分配的AG之間輪換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.