站长之家网站查询,安徽省建设厅网站张天培,关于网站建设的意义,哪里有网站建设培训班ramdisk是从内存中划出一部分作为一个分区使用#xff0c;这个分区跟正常的磁盘分区一样#xff0c;但其读写速度会远高于磁盘#xff0c;不过存储在其中的数据会在系统断电或者关机后丢失。利用ramdisk的高速和易失特性#xff0c;可以用ramdisk分区将加密文件解密#x…ramdisk是从内存中划出一部分作为一个分区使用这个分区跟正常的磁盘分区一样但其读写速度会远高于磁盘不过存储在其中的数据会在系统断电或者关机后丢失。利用ramdisk的高速和易失特性可以用ramdisk分区将加密文件解密或者应用于Web服务器或者挂载Loopback文件系统。 Windows下ramdisk的软件多达十几种特点和性能各有所长。而Linux下对ramdisk的实现主要有三种方法ramdisk, ramfs, tmpfs.
1.ramdisk 利用Linux内核对ramdisk的支持通过挂载分区、创建文件系统的方式来使用。Linux在内核2.4开始就已经支持ramdisk早期版本是1995写的rd.c此后一直是2007年基于/drivers/blocdk/rd.c与loop.c改写的brd.c直到现在内核4.1还是这个版本大部分distributions都缺省创建了ramdisk。ramdisk可以有两种使用方式一种是编译到内核缺省下就是这种方式但改变ramdisk大小需要重启系统另一种是编译成模块修改ramdisk大小后重新加载模块即可。 首先就编译到内核中如何使用、修改Ramdisk的过程简要介绍
1ls -l /dev/ram*
查看系统缺省创建的ramdisk
[root]# dmesg | grep RAMDISK
查看缺省创建的ramdisk容量默认为16个大小为4MB
2增加ramdisk容量
ramdisk的容量通过命令行选项来控制并在启动时传递给内核。以RedHat9为例由于GRUB是RedHat9的缺省bootloader 因此可以通过修改/etc/grub.conf作为新的内核选项设定ramdisk 大小的内核选项是ramdisk_sizexxxxx, xxxx的单位是1KB修改后需要重启系统并通过dmesg输出查看修改是否生效。
3格式化ramdisk
需要将ramdisk用一种文件系统格式化由于没有必要采用日志文件系统因此仅用EXT2格式即可以仅需要使用ram0为例
[root]# mke2fs -m 0 /dev/ram0
4创建挂载点挂载ramdisk
在已经格式化了ramdisk之后必须为其创建一个挂载点然后将ramdisk挂载到该挂载点后使用。
[root]# mkdir /mnt/rd [root]# mount /dev/ram0 /mnt/rd
查看验证挂载是否成功及文件系统信息
[root]# mount | grep ram0 [root]# df -h | grep ram0
进一步查看ram0的详细信息
[root]# tune2fs -l /dev/ram0
修改挂载点的使用权限
[root]# chown van:root /mnt/rd [root]# chmod 0770 /mnt/rd
验证并查看挂载点的权限是否修改
[root]# ls -ald /mnt/rd
5使用ramdisk
完成以上工作后就可以像在磁盘分区上一样在ramdisk上进创建、复制、移动、删除、编辑文件了。如果需要移除ramdisk采用以下命令解除挂载即可
[root]# umount -v /mnt/rd 以上是手动创建ramdisk的过程也可以通过在/etc/rc.local初始化脚本中加入一些命令来自动完成以上过程以在便系统每次启动时就自动创建和挂载ramdisk。
-------------------------------------------------------------
/sbin/mke2fs-q -m 0 /dev/ram0 /bin/mount /dev/ram0 /mnt/rd /bin/chown van:root /mnt/rd /bin/chmod 0750 /mnt/rd
-------------------------------------------------------------
提示如果重新挂载ramdisk数据还在。一旦内存被分配给ramdisk就会被标记以防止内核在之后再次使用内存。因此在你使用完ramdisk之后并不能重新回收ramdisk。基于这个原因必须在分配ramdisk空间时尽可能谨慎应该根据需求定制需要的ramdisk大小。当然也可以通过重启释放空间。 2.ramfs ramfs是一种内存文件系统不像ramdisk那样基于虚拟在内存中的其他文件系统(如ex2fs)ramfs处于虚拟文件系统VFS层因而无需格式化可以创建多个只要内存足够在创建时可以指定其最大能使用的内存大小。在编译内核时须将File systems -- pseudofilesystems -- Virtual memoryfile system support支持选上。ramfs的使用相对简单创建挂载点后按照ramfs的文件系统进行挂载即可。
root# mkdir none /testRAM
root# mount -t ramfs none /testRAM
缺省情况下Ramfs被限制最多可使用一半的内存可通过maxsize选项来改变
root# mount -t ramfs none /testRAM -omaxsize2000 单位是kbyte 3.tmpfs tmpf是一个虚拟内存文件系统既不同于传统的用块设备形式来实现的Ramdisk也不同于针对物理内存的ramfs它可以使用物理内存也可以使用交换分区。在Linux内核中虚拟的内存资源由物理内存RAM和交换分区swap组成这些资源是由内核中的虚拟内存子系统来负责分配和管理。tmpfs向虚拟内存子系统请求页来存储文件它同Linux的其它请求页的部分一样不知道分配给自己的页是在内存中还是在交换分区中。同ramfs一样tmpfs的大小随着所需要的空间而动态的增减。Linux缺省的/dev/shm即是采用tmpfs文件系统大小缺省为物理内存的一半。在编译内核时须将File systems -- pseudofilesystems -- Virtual memoryfile system support支持选上。
1创建挂载点并挂载tmpfs
root# mkdir -p /mnt/tmpfs
root# mount tmpfs /mnt/tmpfs -t tmpfs
同样可以在加载时指定tmpfs文件系统大小的最大限制:
root# mount tmpfs /mnt/tmpfs -t tmpfs -o size32m
2在/dev/shm下使用dd命令创建虚拟块设备文件
个人理解认为/dev/shm就是系统按照1创建好的tmpfs因此可以直接基于该目录使用tmpfs。
ddif/dev/zero of/dev/shm/ramdisk0 bs1M seek5120 count0
查看创建的块设备文件大小
ll /dev/shm/ramdisk0
查看块设备文件实际占用的空间大小seek参数是略过n个块不写
du-m /dev/shm/ramdisk0