gpt4 book ai didi

linux - 在 ext3 和 XFS 上创建具有备用数据和空洞的稀疏文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:10:29 27 4
gpt4 key购买 nike

我创建了 1 个程序来创建包含备用空 block 和数据 block 的稀疏文件。例如block1=empty, block2=data, block3=empty .....

#define BLOCK_SIZE 4096
void *buf;
int main(int argc, char **argv)
{
buf=malloc(512);
memset(buf,"a",512);
int fd=0;
int i;
int sector_per_block=BLOCK_SIZE/512;
int block_count=4;
if(argc !=2 ){
printf("Wrong usage\n USAGE: program absolute_path_to_write\n");
_exit(-1);
}
fd=open(argv[1],O_RDWR | O_CREAT,0666);
if(fd <= 0){
printf("file open failed\n");
_exit(0);
}
while(block_count > 0){
lseek(fd,BLOCK_SIZE,SEEK_CUR);
block_count--;
for(i=0;i<sector_per_block;i++)
write(fd,buf,512);
block_count--;
}
close(fd);
return 0;
}

假设,我使用上面的代码创建了一个 new_sparse_file。

当我运行这个程序时,在 block 大小为 4KB 的 ext3 FS 上,ls -lh 显示 new_sparse_file 的大小为 16KB,而 du -h 显示为 8 kb,这,我认为是正确的。

在 xfs 上, block 大小为 4kb,ls -lh 显示 16KB,但 `du -h* 显示 12kb。

为什么会有不同种类的行为?

最佳答案

关于linux - 在 ext3 和 XFS 上创建具有备用数据和空洞的稀疏文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6940516/

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