1.大文件生成
生成size很大的文件的代码:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
int main(int argc,char** argv)
{
if(argc < 0)
{
printf("please input filename.\n");
exit(1);
}
int fd = open(argv[1],O_WRONLY|O_CREAT|O_TRUNC,0600);
if(fd < 0)
{
perror("opne()");
exit(1);
}
lseek(fd,5LL*1024LL*1024LL*1024-1LL,SEEK_SET);//没有判返回值,将就以下
write(fd,"1",5LL*1024LL*1024*1024LL-1LL);
close(fd);
exit(0);
}
2.查看测试文件的参数
3.为什么?
傻瓜,当然是因为没有真正开始写东西,没有用到磁盘中的block,可以再进行测试.
代码中只是写了1.
在此,您需要知道:
在Linux的世界中,经典unix的fs以及后来的在此基础上演变的各种文件系统中,文件size的大小和占用磁盘大小仅仅在很少情况下是相同的:
当您的文件size特别小的时候,可能文件大小没有占用磁盘的空间大,
当您的文件size特别大但是又有很多地方没有真正写入内容的时候,您的文件仅仅占用了相对很小的磁盘空间.
偶然的情况,两者是相同大小的.
4.centos7查看文件系统
这里我的测试系统是centos7,用的xfs的文件系统.
5. cenots6.10查看文件系统及测试结果