<!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } -->
在 solaris 中,为了更好的提高的程序的 I/O 性能 ,有时就会把一些操作频繁的数据放在内存中,比如数据库中的临时数据文件,这时我们就要考虑应用 ramdiskadm 这个工具了。
Ramdiskadm 这个工具可以创建,删除一个 ramdisk 设备,这个设备和内存直接建立连接,既把内存块来映射为一个设备, 当设备建立好后,我们就可以象用一个磁盘一样来使用这个设备,从而提高相应的 I/O 效率。 Ramdiskadm 的用法如下:
/usr/sbin/ramdiskadm -a name size [g | m | k | b]
/usr/sbin/ramdiskadm -d name
/usr/sbin/ramdiskadm
我们也可以用 ramdiskadm 来直接显示当前已经创建好的 ramdisk 设备。关于如何使用 ramdiskadm 这个工具,已经有很多文章介绍过了,在 这里介绍一个方法,可以利用 ramdiskadm 将系统中的 swap 放在内存中而不是磁盘上。
在 Solaris 中,很多程序的临时文件放在了 /tmp 下,而 /tmp 是属于系统 swap 的一部分,当系统
运行时, /tmp 中的内容有一部分放在内存中,一部分放在硬盘上,如果我们需要追求更好的 I/O 效率,就需要把 /tmp 全部放在内存中,为了达到这个目的,这里我们 需要创建一个守护进程来完成这个过程,以下是这个守护进程的文本,可以看到,这里我们采用的操作系统为 OpenSolaris, 所以其的 swap 是由系统安装时自己 创建的。
#cat /etc/rc2.d/S01swapd
#!/sbin/sh
PATH=/sbin:/usr/bin:/usr/sbin; export PATH
case "$1" in
'start')
if [ ! -x /usr/sbin/ramdiskadm ]; then
echo "$0: Solaris Ramdiskadm has not been correctly installed on"
echo "$0: this system. Required files are missing."
exit 1
fi
/usr/sbin/ramdiskadm -a testswap 50m
swap -a /dev/ramdisk/testswap
swap -d /dev/zvol/dsk/rpool/swap
;;
'stop')
if [ ! -x /usr/sbin/ramdiskadm ]; then
echo "$0: Solaris Ramdiskadm has not been correctly installed on"
echo "$0: this system. Required files are missing."
exit 1
fi
swap -a /dev/zvol/dsk/rpool/swap
swap -d /dev/ramdisk/testswap
;;
*)
echo "Usage: $0 { start | stop }"
exit 1
;;
esac
exit 0
将以上的内容存为文件 S01swapd 然后放在目录 /etc/rc2.d 下,然后重起系统,用 swap 命令查看,发现已经生效了, /tmp 目录已经完全的放于内存中了 , 大小为我们创建的 ramdisk 设备的大小 ,50M 。以上的脚本只是个初始的样本,如果我们需要在生产系统中应用,还需要把这个脚本进一步细化进行容错的考虑和相关处理。
本文介绍如何在 Solaris 操作系统中使用 ramdiskadm 工具创建内存中的 swap 分区,通过设置 /tmp 目录完全位于内存中以提高 I/O 效率。

被折叠的 条评论
为什么被折叠?



