linux安装到内存中,Linux下使用内存盘和tempfs

编译内核的时候要有支持ramdisk,在/dev/有个 ramdisk文件!

在测试系统时我都用它(如果不成功也没关系,把它umount就可以了)!

------------------------------------------------------------------

执行的命令如下:

# mkfs -t ext3 /dev/ramdisk #格式化ramdisk使之可用

# mkdir /mnt/rd

# mount -t ext3 /dev/ramdisk /mnt/rd

以后访问/mnt/rd,可用了!!

-------------------------------------------------------------------

如果umount了/mnt/rd所有信息会消失!下次再mount前,仍要mkfs命令!

tmpfs,它是在虚存里分配空间,而且不用mkfs,即方便,又不会占用太多内存,tmpfs与ramfs还是有区别的,ramfs不会被移动到swap里面去,而tmpfs会.所以还是ramfs快

tmpfs 可以使用您的 RAM,但它也可以使用您的交换分区来存储。而且传统的虚拟磁盘是个块设备,并需要一个 mkfs 之类的命令才能真正地使用它,tmpfs 是一个文件系统,而不是块设备;您只是安装它,可以使用了。

tmpfs 也是我们知道的“虚拟内存文件系统”。Linux 内核的虚拟内存资源同时来源于您的 RAM 和交换分区。内核中的 VM

子系统将这些资源分配到系统中的其它部分,并负责在后台管理这些资源,通常是透明地将 RAM 页移动到交换分区或从交换分区到 RAM 页。

tmpfs 文件系统需要 VM 子系统的页面来存储文件。tmpfs 自己并不知道这些页面是在交换分区还是在 RAM 中;做这种决定是 VM 子系统的工作。tmpfs 文件系统所知道的就是它正在使用某种形式的虚拟内存。

tmpfs 是直接建立在 VM 之上的,您用一个简单的 mount 命令就可以创建 tmpfs 文件系统了。当然内核支持 tmpfs # mount tmpfs /mnt/tmpfs -t tmpfs

执行这个命令之后,一个新的 tmpfs 文件系统就安装在 /mnt/tmpfs,随时可以使用。

/mnt/tmpfs 最初会只有很小的空间,但随着文件的复制和创建,tmpfs 文件系统驱动程序会分配更多的

VM,并按照需求动态地增加文件系统的空间。而且,当 /mnt/tmpfs 中的文件被删除时,tmpfs

文件系统驱动程序会动态地减小文件系统并释放 VM 资源,这样做可以将 VM 返回到循环当中以供系统中其它部分按需要使用。tmpfs

的好处之一就在于这些都是自动处理的。

速度

tmpfs 的另一个主要的好处是它闪电般的速度。因为典型的 tmpfs 文件系统会完全驻留在 RAM

中,读写几乎可以是瞬间的。即使用了一些交换分区,性能仍然是卓越的,当更多空闲的 VM 资源可以使用时,这部分 tmpfs 文件系统会被移动到

RAM 中去。让 VM 子系统自动地移动部分 tmpfs 文件系统到交换分区实际上对性能上是好的,因为这样做可以让 VM 子系统为需要 RAM

的进程释放空间。这一点连同它动态调整大小的能力,比选择使用传统的 RAM 磁盘可以让操作系统有好得多的整体性能和灵活性。

tmpfs 数据在重新启动之后不会保留。让 tmpfs 成为一个保存您不需保留的数据(如临时文件,可以在 /tmp 中找到,还有 /var 文件系统树的某些部分)的卓越的文件系统。

使用 tmpfs

在您所有的 2.4 内核中都打开 tmpfs 选项是个好主意,不管您是否计划使用 tmpfs。这是因为您需要内核 tmpfs 支持来使用

POSIX 共享的内存。然而,System V 共享的内存不需要内核中有 tmpfs 就可以工作。注意,不需要为了让 POSIX

共享的内存工作而安装 tmpfs 文件系统;您只需要在内核中支持 tmpfs 就可以了。

避免低 VM 情况

tmpfs 允许您在安装或重新安装文件系统的时候指定文件系统容量的最大值上限。要防止一个完全使用资源的 tmpfs

文件系统耗尽所有虚拟内存结果导致我们前面谈到的糟糕的低 VM 情况。寻找好的 tmpfs 上限值的一个好方法是使用 top

来监控您系统的交换分区在高峰使用阶段的使用情况。然后,确保指定的 tmpfs 上限稍小于所有这些高峰使用时间内空闲交换分区和空闲 RAM

的总和。

要创建一个新的最大 32 MB 的 tmpfs 文件系统,请键入:

# mount tmpfs /dev/shm -t tmpfs -o size=32m

这次,我们没有把 tmpfs 文件系统安装在 /mnt/tmpfs,而是创建在 /dev/shm,这正好是 tmpfs 文件系统的“正式”安装点。如果您正好在使用 devfs,您会发现这个目录已经为您创建好了。

指定 size=512k 和 size=1g。除了限制容量,我们还可以通过指定 nr_inodes=x

参数限制索引节点(文件系统对象)。在使用 nr_inodes 时,x 可以是一个简单的整数,后面还可以跟一个 k、m 或 g

指定千、百万或十亿(!)个索引节点。 而且,如果您想把上面的 mount tmpfs 命令的等价功能添加到 /etc/fstab,应该是这样:

tmpfs /dev/shm tmpfs size=32m 0 0

假设我们有一个现存的文件系统安装在 /tmp。然而,我们决定要开始使用 tmpfs 进行 /tmp 的存储。过去,您唯一的选择就是卸载 /tmp 并在其位置重新安装您新的 tmpfs/tmp 文件系统,如下所示:

# umount /tmp

# mount tmpfs /tmp -t tmpfs -o size=64m

可是,这种解决方案也许对您不管用。可能有很多正在运行的进程在 /tmp 中有打开的文件;如果是这样,在试图卸载 /tmp 时,您就会遇到如下的错误:umount: /tmp: device is busy

然而,使用最近的 2.4 内核,您可以安装您新的 /tmp 文件系统,而不会遇到“device is busy”错误:

# mount tmpfs /tmp -t tmpfs -o size=64m

虽然您不能访问原来的 /tmp,任何在原文件系统上还有打开文件的进程都可以继续访问它们。而且,如果您 unmount 基于 tmpfs 的

/tmp,原来安装的 /tmp

文件系统会重新出现。实际上,您在相同的安装点上可以安装任意数目的文件系统,安装点就象一个堆栈;卸载当前的文件系统,上一个最近安装的文件系统就会重

新出现。

将所有甚至部分已经安装的文件系统安装到另一个位置,而在两个安装点可以同时访问该文件系统。例如,您可以使用绑定安装来安装您现存的根文件系统到 /home/drobbins/nifty,如下所示:

# mount --bind / /home/drobbins/nifty

现在,如果您观察 /home/drobbins/nifty

的内部,您就会看到您的根文件系统(/home/drobbins/nifty/etc、/home/drobbins/nifty/opt

等)。而且,如果您在根文件系统修改文件,您在 /home/drobbins/nifty

中也可以看到所作的改动。这是因为它们是同一个文件系统;内核只是简单地为我们将该文件系统映射到两个不同的安装点。注意,当您在另一处安装文件系统时,

任何安装在绑定安装文件系统内部的安装点的文件系统都不会随之移动。换句话说,如果您在单独的文件系统上有 /usr,我们前面执行的绑定安装就会让

/home/drobbins/nifty/usr 为空。您会需要附加的绑定安装命令来使您能够浏览位于

/home/drobbins/nifty/usr 的 /usr 的内容:

# mount --bind /usr /home/drobbins/nifty/usr

绑定安装部分文件系统

假设您有一个 tmpfs 文件系统安装在它的传统位置 /dev/shm,您决定要开始在当前位于根文件系统的 /tmp 使用

tmpfs。虽然可以在 /tmp(这是可能的)安装一个新的 tmpfs 文件系统,您也可以决定让新的 /tmp 共享当前安装的 /dev/shm

文件系统。然而,虽然您可以在 /tmp 绑定安装 /dev/shm 就完成了,但您的 /dev/shm 还包含一些您不想在 /tmp

出现的目录。所以,您怎么做呢?这样如何:

# mkdir /dev/shm/tmp

# chmod 1777 /dev/shm/tmp

# mount --bind /dev/shm/tmp /tmp

在这个示例中,我们首先创建了一个 /dev/shm/tmp 目录,然后给它 1777 权限,对 /tmp

适当的许可。既然我们的目录已经准备好了,我们可以安装,也只能安装 /dev/shm/tmp 到 /tmp。所以,虽然 /tmp/foo 会映射到

/dev/shm/tmp/foo,但您没有办法从 /tmp 访问 /dev/shm/bar 文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值