为了运行一些测试,我需要运行一个删除文件的应用程序
由于每次我需要运行另一个测试时重新创建此文件(> 40 GB)都很昂贵,我想模拟删除此文件.
但这必须对删除它的应用程序完全透明.这意味着创建一个符号链接不是一个好的解决方案([-L symlink]返回0而[-L file]返回1,所以这对于app来说不是完全透明的).
解决方法
有几种解决方案. dd喜欢解决方案可能需要一些时间,但使用搜索
dd of=mybigfile bs=1 count=0 seek=40G
是即时的.然而这个命令占用的40g空间在df中看不到…
所以最好的可能是
fallocate -l 40g mybigfile
这会立即创建mybigfile,并且该空间实际上是从FS保留的(并且在df中可见)
– 评论后编辑 –
硬链接怎么样?
cd data make 40g file "myfile"
然后进行每次测试
cd ../test ln ../data/myfile testfile command to unlink testfile
数据和测试目录在同一个FS(不同的目录,以防止错误等).
硬链接状态非常透明,不太可能被应用程序测试. unlink操作将删除与inode关联的名称,然后递减inode中的链接计数器,并且应该非常快(仅当inode计数器降至零时才会释放文件及其数据 – 这不会发生除非你取消链接data / myfile).