我的程序创建了许多小的短期文件.它们通常在创建后的一秒内被删除.这些文件位于由真实硬盘支持的ext4文件系统中.我知道Linux会定期将(pdflush)脏页刷新到磁盘.由于我的文件是短暂的,很可能它们不是由pdflush缓存的.我的问题是,我的程序是否会导致大量磁盘写入?我担心的是我硬盘的生命.
由于文件很小,我们假设它们的大小总和小于dirty_bytes和dirty_background_bytes.
Ext4打开了默认日志,即元数据日志.我还想知道元数据或数据是否写入磁盘.
解决方法:
使用ext4的简单实验:
创建一个100MB的图像……
# dd if=/dev/zero of=image bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.0533049 s, 2.0 GB/s
使它成为一个循环设备……
# losetup -f --show image
/dev/loop0
制作文件系统并挂载……
# mkfs.ext4 /dev/loop0
# mount /dev/loop0 /mnt/tmp
使用短期文件进行某种运行. (将此更改为您喜欢的任何方法.)
for ((x=0; x<1000; x++))
do
(echo short-lived-content-$x > /mnt/tmp/short-lived-file-$x
sleep 1
rm /mnt/tmp/short-lived-file-$x ) &
done
Umount,sync,unloop.
# umount /mnt/tmp
# sync
# losetup -d /dev/loop0
检查图像内容.
# strings image | grep short-lived-file | tail -n 3
short-lived-file-266
short-lived-file-895
short-lived-file-909
# strings image | grep short-lived-content | tail -n 3
在我的例子中,它列出了所有文件名,但没有列出文件内容.所以只写了内容.
标签:disk,linux,ext4
来源: https://codeday.me/bug/20190809/1630806.html