linux下的虚拟文件系统

发布: 2009-01-10 13:44

(以下内容来自网上收集)
系统默认加载的/dev/shm ,它就是一个虚拟文件系统tmpfs,他跟ramdisk(虚拟磁盘)不一样。tmpfs 可以使用RAM,也可以使用您的swap分区来存储数据。而且传统的虚拟磁盘是个块设备,并需要mkfs将其格式化才能真正地使用它,tmpfs 是一个文件系统,而不是块设备;只要安装它,就可以使用了。

tmpfs的存储空间在VM(virtual memory),,VM是由linux内核里面的vm子系统管理的东西,linux下面VM的大小由RM(Real Memory)和swap组成(VM=RM+Swap),RM的大小就是物理内存的大小,而Swap就是交换分区。Swap是通过硬盘虚拟出来的内存空间,因此它的读写速度相对RM(Real Memory)要慢许多,当一个进程申请一定数量的内存时,如内核的vm子系统发现没有足够的RM时,就会把RM里面的一些不常用的数据交换到Swap里面,如果需要重新使用这些数据再把它们从Swap交换到RM里面。 如果有足够大的物理内存,根本不需要划分Swap分区。tmpfs最大的存储空间可达RM+Swap大小 但是对于tmpfs本身而言,它并不知道自己使用的空间是RM还是Swap,这一切都是由内核的vm子系统管理的。
====================================
mount -t tmpfs -o size=20m tmpfs /mnt/tmp

分配了上限为20m的VM到/mnt/tmp目录下,tmpfs一个优点就是它的大小是随着实际存储的容量而变化的,换句话说,假如/mnt/tmp目录下什么也没有,tmpfs并不占用VM。上面的参数20m只是告诉内核这个挂载点最大可用的VM为20m,如果不加上这个参数,tmpfs默认的大小是RM的一半,假如你的物理内存是128M,那么tmpfs默认的大小就是64M,
  tmpfs有以下优势:
  1,动态文件系统的大小。
  2,典型的 tmpfs 文件系统会完全驻留在 RAM 中,读写几乎可以是瞬间的。
  3,tmpfs 数据在重新启动之后不会保留,因为虚拟内存本质上就是易失的。

 ===============加载方法:===========
假如有一个 tmpfs 文件系统安装在它的传统位置 /dev/shm,您决定要开始在/tmp 使用 tmpfs。虽然可以在 /tmp安装一个新的 tmpfs 文件系统,但也可以让新的 /tmp 共享当前安装的 /dev/shm 文件系统。然而,虽然您可以在 /tmp 绑定安装 /dev/shm 就完成了,但您的 /dev/shm 还包含一些您不想在 /tmp 出现的目录,可以这么做:
  首先在/dev/stm建个tmp文件夹,然后与实际/tmp绑定
  mkdir /dev/shm/tmp
  chmod 1777 /dev/shm/tmp
  mount --bind /dev/shm/tmp /tmp(--bind )

  在使用mount --bind olderdir newerdir命令来挂载一个目录到另一个目录后,newerdir的权限和所有者等所有信息会发生变化。挂载后的目录继承了被挂载目录的所有属性,除了名称。
=================修改/etc/fstab文件==========
/etc/fstab中的记录:(默认大小是系统RAM的一半)
none /dev/shm tmpfs defaults,size=1024M 0 0

size参数也可以用G作单位:size=1G
重新mount /dev/shm使之生效:
# mount -o remount /dev/shm


原文: http://qtchina.tk/?q=node/270

Powered by zexport