什么是Ram Disk?Ram Disk就是将内存(Ram)的一部分当做硬盘(Disk)来使用。Ram Disk有固定的大小,可以像正常硬盘分区那样去使用。 就操作时间来讲,Ram Disk比真实的物理硬盘快很多,当系统关闭或断电时,保存在Ram Disk中的数据会全部丢失。Ram Disk可以成为一个存放临时数据的好地方。
Ram Disk有三种实现方式:在Linux中可以将一部分内存mount为分区来使用,通常称之为Ram Disk,分为:Ramdisk, ramfs, tmpfs。下面我们主要讲解的是Ramdisk。
Ramdisk是传统意义上的,可以格式化,然后加载。
这在Linux内核2.0/2.2就已经支持,其不足之处是大小固定,之后不能改变。为了能够使用Ramdisk,我们在编译内核时须将block device中的Ramdisk支持选上,它下面还有两个选项,一个是设定Ramdisk的大小,默认是4096k;另一个是Ramdisk的创建数量。
下面进行编译内核以支持Ramdisk:
1、安装编译工具:
yum -y install gcc gcc-c++ ncurses ncurses-devel cmake elfutils-libelf-devel openssl-devel
2、下载内核源码,并解压,进入源码安装包,推荐下载地址https://www.kernel.org/
cd /usr/src && wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.12.3.tar.xz && tar -xvf linux-4.12.3.tar.xz && cd linux-4.12.3
3.清理内核源码目录:
make mrproper
注:make mrproper命令会删除所有的编译生成文件、内核配置文件(.config文件)和各种备份文件,所以几乎只在第一次执行内核编译前才用这条命令。
4.使用make menuconfig菜单来订制内核功能 :
make menuconfig
注:make menuconfig(基于文本选单的配置界面,字符终端下推荐使用)
出现以下配置界面:
依次选择Device Drivers –》 Block Drivers –》 RAM block device support,按大写Y出现星号*表示选择。
RAM block device support下有两个选项,Default number of RAM disks为内存虚拟盘的数量, Default RAM disk size (kbytes)为每个内存虚拟盘的大小,我这里设为1.6G左右。
!
然后保存Sava,然后退出Exit。
5.执行make编译,时间会稍有点长~~:
make
注:编译时报错“bc: command not found ”,yum -y install bc 一下就可以解决了,bc命令是一种支持任意精度的交互执行的计算器语言。bash内置了对整数四则运算的支持,但是并不支持浮点运算,而bc命令可以很方便的进行浮点运算,当然整数运算也不再话下。
报错:/bin/sh: perl: command not found,yum install -y perl进行解决。
可以使用-j选项,j32表示开32个线程编。一个常用的规则是 make -jN,N=你机器CPU core的数量+2。
那单核的CPU应该是make -j3了
6.安装模块(安装完毕后可以到/lib/modules目录下查看):
make modules_install
7、执行make install 安装内核相关文件:
make install
8、安装完成后修改默认内核启动项:
cat /boot/grub2/grub.cfg | grep menuentry //查看系统可用内核
grub2-set-default ‘CentOS Linux (4.12.3) 7 (Core)’ //修改开机默认使用的内核
8、重启电脑后uname -r查看内核版本:
reboot
这时候,进入系统里面,在/dev/下便可看到ram0等block块设备。
对Ramdisk的支持已经编译进内核,我们就可以使用它了:首先查看一下可用的RamDisk,使用ls /dev/ram*。首先创建一个目录,比如test,运行mkdir /mnt/test;然后对/dev/ram0 创建文件系统,运行mkfs -ext4 /dev/ram0;最后挂载 /dev/ram0,运行mount /dev/ram /mnt/test,就可以象对普通硬盘一样对它进行操作了。装载后写入速度在700M/S-800M/S之间,如果umount再加载,只要不重启linux,那文件依然会保存在/dev/ramX中。
测试:
Ramdisk盘读写速度:
普通硬盘读写速度:
参考网址:
CentOS7.2内核编译安装
linux中RamDisk的三种实现方式
轻轻松松为你的Linux系统创建RAM Disk
正确用DD测试磁盘读写速度
感谢以上博客作者的付出与总结!