Solaris中如何利用ramdiskadm来提高I/O效率

本文介绍如何在 Solaris 操作系统中使用 ramdiskadm 工具创建内存中的 swap 分区,通过设置 /tmp 目录完全位于内存中以提高 I/O 效率。

<!-- @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 。以上的脚本只是个初始的样本,如果我们需要在生产系统中应用,还需要把这个脚本进一步细化进行容错的考虑和相关处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值