登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

SeaRiver Blog

实力才是你一生最好的依靠!

 
 
 

日志

 
 

Linux的RAM disk  

2008-12-31 17:20:31|  分类: Linux |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

在开发中,程序经常需要频繁地读写某些临时文件,遇到这种情况,RAM disk就是最好的解决办法。
简单地说,RAM disk就是将一块内存模拟成为某个磁盘驱动器,对应用程序来说,RAM disk和普通磁盘是完全一样的,也就是说,RAM disk对应用程序是“透明”的——唯一的区别在于,系统重新启动或者关机时,存储在RAM disk上的数据会丢失。

核心版本在2.4以上的Linux内置了对RAM disk的支持,下面,我们就来看看如何使用RAM disk(操作系统为RedHat Linux AS)。

在默认情况下,RedHat会创建16块RAM disk,但不是所有的RAM disk都处于激活(active)状态。下面列出了ram0-ram19一共20块RAM disk,但只有ram0-ram15是可以使用的。


[root]# ls -l /dev/ram*
lrwxrwxrwx    1 root     root            4 Jun 12 00:31 /dev/ram -> ram1
brw-rw----    1 root     disk       1,   0 Jan 30 2003 /dev/ram0
brw-rw----    1 root     disk       1,   1 Jan 30 2003 /dev/ram1
brw-rw----    1 root     disk       1, 10 Jan 30 2003 /dev/ram10
brw-rw----    1 root     disk       1, 11 Jan 30 2003 /dev/ram11
brw-rw----    1 root     disk       1, 12 Jan 30 2003 /dev/ram12
brw-rw----    1 root     disk       1, 13 Jan 30 2003 /dev/ram13
brw-rw----    1 root     disk       1, 14 Jan 30 2003 /dev/ram14
brw-rw----    1 root     disk       1, 15 Jan 30 2003 /dev/ram15
brw-rw----    1 root     disk       1, 16 Jan 30 2003 /dev/ram16
brw-rw----    1 root     disk       1, 17 Jan 30 2003 /dev/ram17
brw-rw----    1 root     disk       1, 18 Jan 30 2003 /dev/ram18
brw-rw----    1 root     disk       1, 19 Jan 30 2003 /dev/ram19
brw-rw----    1 root     disk       1,   2 Jan 30 2003 /dev/ram2
brw-rw----    1 root     disk       1,   3 Jan 30 2003 /dev/ram3
brw-rw----    1 root     disk       1,   4 Jan 30 2003 /dev/ram4
brw-rw----    1 root     disk       1,   5 Jan 30 2003 /dev/ram5
brw-rw----    1 root     disk       1,   6 Jan 30 2003 /dev/ram6
brw-rw----    1 root     disk       1,   7 Jan 30 2003 /dev/ram7
brw-rw----    1 root     disk       1,   8 Jan 30 2003 /dev/ram8
brw-rw----    1 root     disk       1,   9 Jan 30 2003 /dev/ram9
lrwxrwxrwx    1 root     root            4 Jun 12 00:31 /dev/ramdisk -> ram0



要查看RAM disk的大小,可以使用dmesg命令。


[root]# dmesg | grep RAMDISK
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
RAMDISK: Compressed image found at block 0



默认情况下,每个RAM disk的大小都是4MB。

我们可以修改启动配置文件来设置RAM disk的大小,在Redhat Linux上,修改Grub的conf文件:
/etc/grub.conf


# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition. This means that
#          all kernel and initrd paths are relative to /, eg.
#          root (hd0,0)
#          kernel /boot/vmlinuz-version ro root=/dev/sda1
#          initrd /boot/initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux AS (2.6.9-5.ELsmp)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.9-5.ELsmp ro root=LABEL=/ ramdisk_size=16000
        initrd /boot/initrd-2.6.9-5.ELsmp.img



保存之后重新启动,查看一下,改动已经生效:


[root]# dmesg | grep RAMDISK
RAMDISK driver initialized: 16 RAM disks of 16000K size 1024 blocksize
RAMDISK: Compressed image found at block 0



普通的RAM disk并不需要保存日志,所以我们可以将其格式化为ext2格式,并指定-m 0参数,保证RAM disk上所有空间对普通用户开放(不设保留空间)。


[root]# mke2fs -m 0 /dev/ram0
mke2fs 1.32 (09-Nov-2002)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
4000 inodes, 16000 blocks
0 blocks (0.00%) reserved for the super user
First data block=1
2 block groups
8192 blocks per group, 8192 fragments per group
2000 inodes per group
Superblock backups stored on blocks:
        8193

Writing inode tables: done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 22 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.



现在,RAM disk已经格式化完毕,我们只需要将其挂接起来,就可以使用了。


[root]# mkdir /mnt/rd
[root]# mount /dev/ram0 /mnt/rd
[root]# mount | grep ram0
/dev/ram0 on /mnt/rd type ext2 (rw)
[root]# df -h | grep ram0
/dev/ram0              16M   13K   16M   1% /mnt/rd



为了让普通用户可以操作RAM disk,还需要赋予相应的权限。


[root]# chown van:root /mnt/rd
[root]# chmod 0770 /mnt/rd
[root]# ls -ald /mnt/rd
drwxrwx---    2 van     root         4096 Dec 8 11:09 /mnt/rd



如果每次启动都必须使用RAM disk,可以将上面执行的几条语句写成一个.sh脚本,放入启动文件(例如,/etc/rc.local),这样,以后每次启动都可以直接使用RAM disk了。

 

  评论这张
 
阅读(925)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018