首先,什么是RamDisk? 一个A RamDisk 是你用作一个硬盘分区的一部分内存空间。或者换句话说,你是把内存假设为一个硬盘驱动器,并且你在它的上面存储文件。为什么我们要使用 RamDisk? 好的,如果你知道通常将要使用的文件是被调入内存以提高计算机的性能,因为内存的存储速度要快于硬盘。 这样类似于web服务器上的数据就可以用这个方法提高访问速度。
这项技术目前在Linux中使用的比较广泛,因此许多进行从Linux到Solaris进行移植的工程师都比较关心在Solaris比如Solaris10上是否支持,或者有没有类似的功能。答案当然是有的。在Solaris10(03/05)上通过man ramdisk就可以看到它详细的manpage。不过细心的工程师会发现manpage的最后几行字:
The percentage of available physical memory that can be allocated to ramdisks is constrained by the variable rd_percent_physmem. You can tune the rd_percent_physmem variable in /etc/system. By default, the percentage of available physical memory that can be allocated to ramdisks is fixed at 25%.
A ramdisk may not be the best possible use of system memory.Accordingly, use ramdisks only when absolutely necessary.
为什么这样呢?
1.在Solaris中很多系统资源的使用存在默认的限制。这一点可以通过修改/etc/system文件中关联的变量可以解决。比如 rd_percent_physmem限制你可以使用的系统Memory只有总量的1/4,如果有你使用的ramdisk超出物理内存1/4的使用量就可能有“out of memory”或者其他错误出现。
2.大量使用系统RAM可能造成kernel对内存使用的短缺,不断有不活跃的进程地址空间或者进程本身被交换到Swap空间(磁盘上),而最坏的情况莫过于内核进程本身都memory不足,被从内存中交换出去。因此,在RAM足够大的情况下,这种解决方案才能实现你本来想要的高性能的RAM disk功能。
为了在Solaris上达到目的,一些专家推荐了tmpfs。它具有良好的伸缩性,可以很简单的配置。虽然tmpfs也使用memory和swap,就是说它也有在物理内存不足的情况下被交换出去的可能性,但是一个典型的tmpfs在通常情况下是长期驻留在内存里的。
例如,创建和挂装一个200m的tmpfs目录的方式:
mount -F tmpfs -o size=200m swap /ramdisk
(The "swap" is just part of the incantation and doesn't mean swap on it.)
或者你也可以修改/etc/vfstab达到你追加挂装点的目的,这里不作详述。
另外,传统的虚拟磁盘是个块设备,需要通过mkfs(Solaris)/mke2fs(Linux)命令创建文件系统才能真正地使用,而tmpfs已经是一个文件系统,您只是安装就可以使用了。
总的来说,tmpfs有以下优势:
1.可动态改变文件系统的大小,就是所谓的伸缩性好。
2.速度很快。因为典型的 tmpfs 文件系统会完全驻留在 RAM 中,读写几乎可以是瞬间的。
和RAMDISK类似的是,tmpfs 数据在重新启动之后也不会保留。您有必要配置一些脚本完成备份数据、加载等操作。