/dev/shm

/dev/shm

我正在运行 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

我不知道为什么有这么几个tmpfsdevtmpfs为什么它们在这里?我可以删除它们并恢复这些磁盘空间吗?

答案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。不同之处在于,前者由内核本身自动填充和取消填充设备文件条目,因为设备在内核中加载/启用和禁用/卸载。

进一步阅读

答案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)

内核 - tmpfs

相关内容