RAMDISK
From upnb游本网--笔记本电脑知识库(笔记本wiki)--您身边的电脑词典
Ramdisk简介
先简单介绍一下ramdisk,Ramdisk是虚拟于RAM中的盘(Disk)。对于用户来说,可以把RAM disk与通常的硬盘分区(如/dev/hda1)同等对待来使用,例如:
redice # mkfs.ext2 /dev/ram0 mke2fs 1.38 (30-Jun-2005) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) 2048 inodes, 8192 blocks 409 blocks (4.99%) reserved for the super user First data block=1 1 block group 8192 blocks per group, 8192 fragments per group 2048 inodes per group
Writing inode tables: done Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 24 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
redice # mount /dev/ram0 /mnt/rd redice # ls /mnt/rd lost+found redice # mount /dev/hda2 on / type ext3 proc on /proc type proc (rw) /dev/ram0 on /tmp/xxx type ext2 (rw)
当然,Ramdisk与硬盘分区有其不同的地方,例如RAM disk不适合作为长期保存文件的介质,掉电后Ramdisk的内容会随内存内容的消失而消失。Ramdisk的其中一个优势是它的读写速度高,可以被用作需要高速读写的文件。但在2.6版本后,Ramdisk的这一作用开始被tmpfs(Virtual memory file system support)取代。
回到上面的例子,我们格式化了一个ramdisk(/dev/ram0)并且将其mount到/mnt/rd目录下,那么这个Ramdisk有多大呢?先看一下: redice # df -h /dev/ram2
Filesystem 容量 已用 可用 已用% 挂载点 /dev/ram0 7.8M 1.0K 7.4M 1% /mnt/rd
从上面的信息看出,ramdisk有大约7.8M的可用空间。我们再试一下另外的文件系统,重新格式化成minix分区并挂接试一下:
redice # umount /mnt/rd redice # mkfs.minix /dev/ram0 2752 inodes 8192 blocks Firstdatazone=90 (90) Zonesize=1024 Maxsize=268966912
redice # mount /dev/ram0 /mnt/rd redice # df -h /dev/ram0
Filesystem 容量 已用 可用 已用% 挂载点 /dev/ram0 8.0M 1.0K 8.0M 1% /mnt/rd
现在看出来了,的确是8M(这同时说明,EXT2文件系统本身要占用一定的存储空间,相比之下minix文件系统要少些),这个空间是在编译核心时就确定下来了,在配置Ramdisk时,有一个叫 Default RAM disk size 的参数决定默认情况下Ramdisk的大小。可以通过核心命令行参数(ramdisk_size)来改变这个值,例如要设置Ramdisk的大小为16M,在grub中可以用:
# grub.conf -
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Redice Linux
root (hd0,0)
kernel /vmlinuz ro root=LABEL=/ hdc=ide-scsi ramdisk_size=16384
initrd /initrd
这样,Ramdisk的大小就变成16M了。这个参数是Ramdisk直接编译到核心时才能使用的,如果Ramdisk编译为模块,则应该使用模块参数来设置Ramdisk的大小:
redice # insmod rd rd_size=16384 编译到核心时,可以通过下面的一些核心命令行参数来配置Ramdisk:
ramdisk_size - ramdisk的大小(Kbytes);
ramdisk - 与ramdisk_size的作用相同;
ramdisk_blocksize - ramdisk的块大小,默认情况为1024;
当以模块的形式译时,模块支持以下几个加载参数:
rd_size - 同上面的ramdisk_size或ramdisk参数;
rd_blocksize - 同上面的ramdisk_blocksize;
参考资料
- 参考文章
- Linux中的Ramdisk与Initrd
- 资源下载
- 点击下载
- 相关条目
- 内存
- 外部链接
