我正在运行 Fedora 20。我得到了以下输出$df -h
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/fedora-root 11G 8.0G 2.1G 80% /
devtmpfs 3.5G 0 3.5G 0% /dev
tmpfs 3.5G 76K 3.5G 1% /dev/shm
tmpfs 3.5G 676K 3.5G 1% /run
tmpfs 3.5G 0 3.5G 0% /sys/fs/cgroup
tmpfs 3.5G 164K 3.5G 1% /tmp
/dev/sda1 477M 90M 358M 20% /boot
/dev/mapper/fedora-home 45G 26G 17G 60% /home
none 224G 114G 111G 51% /media/sf_VBShared
我不知道为什么有这么几个tmpfs
。devtmpfs
为什么它们在这里?我可以删除它们并恢复这些磁盘空间吗?
答案1
评论和其他答案已经解决了你对 tmpfs 的误解。在这里,我要解决
他们为什么在这里?和
我可以把它们除去吗?按照要求。
用 systemd 的俚语来说,这些都是API 文件系统。它们是基于 systemd 的系统运行的基础,systemd 程序在系统初始化时会先挂载它们,然后再执行其他操作system-manager
。小吃功能大致相同,但目前除外/sys/fs/cgroup
和/tmp
。
/dev/shm
在(仅限)Debian Linux 操作系统上,这实际上是/run/shm
。此 tmpfs 的特定目的是实现POSIX 共享内存在您的操作系统上。删除它将导致使用 POSIX 共享内存的应用程序失败。
/sys/fs/cgroup
这是 systemd(和其他程序)安装各种控制组操作系统上可用的控制层次结构。删除它将停止操作系统中依赖于控制组的部分工作。
/tmp
这当然是用户期望放置短期临时文件的地方。删除它将使相当多使用临时文件的应用程序感到不高兴。
/run
这曾经是/var/run
。它是放置(特定类型的)临时文件的地方,这些文件可能会持续到下一次系统引导。您会发现它充满了 PID 文件、systemd 非持久性日志、UNIX 域套接字、FIFO 和其他类似的东西。删除它将使 systemd 日志崩溃;打破令人沮丧的大量守护进程的(错误)管理,这些守护进程至今仍在使用 PID 文件;并破坏 udev、systemd“多席位”系统和一大堆其他子系统。
在 nosh 系统上,删除它会同样破坏所有相同的子系统及其 FIFO 和套接字。它还会破坏服务管理器的控制 API、服务管理器关联的记录器守护程序以及任何“早期监督”守护程序的控制/状态 API。
/dev
按照惯例,这是 Unices 和 Linux 上所有字符设备和块设备的设备文件存储的位置。许多程序和子系统都希望使用诸如/dev/tty
、/dev/null
、/dev/zero
、/dev/console
、/dev/fd/0
、/dev/sda
等常规名称。删除它会破坏您的系统的大部分功能,我怀疑它是否完全可用。这是一个devtmpfs
而不是tmpfs
。不同之处在于,前者由内核本身自动填充和取消填充设备文件条目,因为设备在内核中加载/启用和禁用/卸载。
进一步阅读
system-manager
. 第 8 节. nosh 手册页。- API 文件系统。 Freedesktop.org。
- 文件系统层次概述。 Freedesktop.org。
- 伦纳特·波特林(Lennart Poettering)(2011年)。 tmpfs 上的 /var/run 和 /var/lock. Fedora 项目。
- Lennart Poettering(2011-03-30)。这个 /run 目录在我的系统上起什么作用以及它来自哪里? Fedora 开发邮件列表。
/var/run
. 文件系统层次结构标准。2.3. pathname.com。/tmp
. Linux 文件系统层次结构。Linux 文档项目。- 为什么把
/dev/shm
和/tmp
放在 之下/run
?. 发布目标. Debian.
答案2
tmpfs 简而言之就是(一种)ramdisk。其理念是不要用小的临时内容来破坏硬盘,如今内存不再是必需品,因为基于 RAM 的块设备具有额外的速度优势。
例如你可以长读http://en.wikipedia.org/wiki/Tmpfs
引用本文
存储在 tmpfs 中的所有内容都是临时的,因为不会在硬盘上创建任何文件;但是,在内存不足的情况下,交换空间可用作后备存储。重新启动后,tmpfs 中的所有内容都将丢失。
tmpfs 使用的内存会增加或减少以适应其包含的文件,并且可以换出到交换空间。
答案3
如果您想了解什么是 tmpfs,我建议您先检查 kernel.org(底部的链接)。
Tmpfs 是一个将所有文件保存在虚拟内存(物理内存+交换)中的文件系统。根据文档:如果删除 tmpfs 实例,则其中存储的所有内容都会丢失。
如果您尝试在挂载时强制卸载 fs,系统不会允许您这样做,正如以下示例所示,保存在 /dev/shm 中的文件属于操作系统,这意味着使用此资源的进程会崩溃。或者,注释掉 /etc/fstab 中的行也不是一个好主意,因为虚拟文件系统(如 procfs 或 sysfs)无法按预期工作,甚至无法挂载。
[root@client ~]# mount |egrep tmpfs
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
[root@client ~]# for pid in $(fuser -m /dev/shm 2>/dev/null|sed "s/m//g");do echo $pid--;pstree -p $pid ;done
2194--
gnome-settings-(2194)───{gnome-settings}(2197)
2210--
metacity(2210)───{metacity}(11132)
2253--
pulseaudio(2253)─┬─gconf-helper(2263)
├─{pulseaudio}(2260)
└─{pulseaudio}(2262)
2264--
gnome-volume-co(2264)
2267--
gpk-update-icon(2267)───{gpk-update-ico}(2870)