为什么“tmpfs”在文件创建/删除时读取/写入磁盘?

为什么“tmpfs”在文件创建/删除时读取/写入磁盘?

问题:为什么当我在上创建或删除文件时会同时进行磁盘读取和写入tmpfs

使用intmpfs进行安装(添加到,运行,然后重新启动计算机以安装)。据我所知,文件内容存储在RAM中,文件inode/元数据也存储在RAM中mount -t tmpfs -o size=1G tmpfs "/SCRATCHSPACE"/etc/rc.local/etc/rc.localmkdir /SCRATCHSPACEtmpfs

用于文件创建、写入和删除的 Bash 脚本:

cd /SCRATCHSPACE
for i in {0..10000}; do echo foobar > $i; rm $i; done

或者

cd /SCRATCHSPACE
touch {0..10000} && rm {0..10000}

运行上述代码后,硬盘使用情况指示器立即启动。为了确保我不仅仅是想象它,我还使用:

grep -e Dirty: -e Writeback: /proc/meminfo

这与文件创建/删除相关。脏和写回从0 KB500 KB一致地跳跃。如果我增加在 Bash 脚本中创建的文件数量,文件Dirty数量会线性增加。要刷新写入(不必要),请运行sync.当我运行 Bash 脚本(即使没有sync)后等待时,我可以听到硬盘驱动器移动的声音

这在关闭交换的 Ubuntu 16.04 和 Ubuntu 20.04 上都可以重现

附加信息:

$ df -h /SCRATCHSPACE
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           1.0G  10M  1.0G  0% /SCRATCHSPACE

$ cat /proc/swaps
Filename                Type        Size    Used    Priority

$ cat /etc/fstab
UUID=<36 characters for UUID> /               ext4    errors=remount-ro 0       1
UUID=<10 characters for UUID>  /boot/efi       vfat    umask=0077      0       1

没有安装防病毒软件、记录器或任何类似的东西(仅安装 Ubuntu 附带的任何东西)

操作系统(16.04 和 20.04)是通过 live USB(全新安装)安装的。它没有从一个版本升级到另一版本

相关内容