簡體   English   中英

如何使用CentOS5.8在XFS中保留連續塊?

[英]How to reserve continuous blocks in XFS with CentOS5.8?

我正在使用CentOS5.8XFS文件系統擴展存儲磁盤。 我想做的是,預分配許多文件,並在文件系統中使用連續塊,包括單個文件和交叉文件。

我可以通過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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM