tmpfs - 卸载后文件仍然存在

tmpfs - 卸载后文件仍然存在

我正在学习有关tmpfs.这手册页因为tmpfs说-

tmpfs 工具允许创建其内容驻留在虚拟内存中的文件系统。

和 -

如果卸载 tmpfs 文件系统,其内容将被丢弃(丢失)。

但即使卸载后我也可以看到文件 -

mediumone@ubuntu:~$ mkdir tmpfsdir
mediumone@ubuntu:~$ cd tmpfsdir/

mediumone@ubuntu:~/tmpfsdir$ sudo mount -t tmpfs tmpfs ~/tmpfsdir/

mediumone@ubuntu:~/tmpfsdir$ findmnt
TARGET                                SOURCE         FSTYPE              OPTIONS
/                                     /dev/sda1      ext4                rw,relatime,errors=remount-ro
├─/sys                                sysfs          sysfs               rw,nosuid,nodev,noexec,relatime
│ ├─/sys/kernel/security              securityfs     securityfs          rw,nosuid,nodev,noexec,relatime
│ ├─/sys/fs/cgroup                    tmpfs          tmpfs               ro,nosuid,nodev,noexec,mode=755
..snip
├─/snap/gnome-3-28-1804/116           /dev/loop15    squashfs            ro,nodev,relatime
└─/home/mediumone/tmpfsdir            tmpfs          tmpfs               rw,relatime

mediumone@ubuntu:~/tmpfsdir$ echo "hello world" >> hello
mediumone@ubuntu:~/tmpfsdir$ ls -l
total 4
-rw-r--r-- 1 mediumone mediumone 12 Feb 17 02:15 hello

mediumone@ubuntu:~/tmpfsdir$ sudo umount -l ~/tmpfsdir/

mediumone@ubuntu:~/tmpfsdir$ findmnt
TARGET                                SOURCE         FSTYPE              OPTIONS
/                                     /dev/sda1      ext4                rw,relatime,errors=remount-ro
├─/sys                                sysfs          sysfs               rw,nosuid,nodev,noexec,relatime
│ ├─/sys/kernel/security              securityfs     securityfs          rw,nosuid,nodev,noexec,relatime
│ ├─/sys/fs/cgroup                    tmpfs          tmpfs               ro,nosuid,nodev,noexec,mode=755
..snip
└─/snap/gnome-3-28-1804/116           /dev/loop15    squashfs            ro,nodev,relatime

mediumone@ubuntu:~/tmpfsdir$ ls -l
total 4
-rw-r--r-- 1 mediumone mediumone 12 Feb 17 02:15 hello
mediumone@ubuntu:~/tmpfsdir$ cat hello 
hello world
mediumone@ubuntu:~/tmpfsdir$ 

我也尝试过sudo umount -f ~/tmpfsdir/,得到了相同的结果。

有人可以解释出了什么问题吗?

答案1

您安装在当前目录上。您的 shell 将继续使用原始目录而不是已安装的目录,直到您cd返回该目录。其他命令也会继承原来的目录:

% mkdir foo
% cd foo
~/foo
% df -h .
Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu-vg-root  1.8T   77G  1.7T   5% /
% sudo mount  -t tmpfs tmpfs ~/foo
% df -h .
Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu-vg-root  1.8T   77G  1.7T   5% /

不过,对该目录的新访问将使用已安装的目录:

% df -h . ~/foo
Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu-vg-root  1.8T   77G  1.7T   5% /
tmpfs                       3.9G     0  3.9G   0% /home/muru/foo

如果你cd再次这样做:

% cd .
% df -h . ~/foo
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           3.9G     0  3.9G   0% /home/muru/foo
tmpfs           3.9G     0  3.9G   0% /home/muru/foo

答案2

cd第一次时tmpfsdir,您的 shell 的工作目录位于现有文件系统上。mount不会更改您的工作目录,并且新文件是在您的工作目录所在的底层文件系统上创建的,而不是在tmpfs文件系统上创建的。

挂载后更改目录,您将得到您期望的结果。

相关内容