在找这个资料的时候,基本没几个能用的或者过时了的,或者是换了概念,做的不是需要的那种盘,只有少数文章有提到关键部分应该怎么去操作,现在还是自己总结一下

内存盘tmpfs和ramdisk的区别

这个在网上的很多资料里面都有提到,很多文章去写怎么做ramdisk的时候,都是去做的tmpfs,两者虽然都是使用的内存来存储东西,但是是完全有区别的

  • tmpfs这个只需要mount挂载就可以分配一个目录使用内存了,只是一个目录
  • ramdisk这个是真的分配一个空间,这个分区是可以格式化的(这个格式化是关键)
  • tmpfs卸载再挂载数据会消失,ramdisk卸载再挂载数据还在
  • 二者共同点是,系统重启后,里面的东西会消失

本文章主要是讲怎么去做ramdisk

ramdisk是依赖于内核模块brd的,首先可以查看下这个模块的信息

[root@lab8106 src]# modinfo brd
filename: /lib/modules/3.10.0-229.el7.x86_64/kernel/drivers/block/brd.ko
alias: rd
alias: block-major-1-*
license: GPL
rhelversion: 7.1
srcversion: F38BA5B60FC8B94786C7907
depends:
intree: Y
vermagic: 3.10.0 SMP mod_unload modversions
parm: rd_nr:Maximum number of brd devices (int)
parm: rd_size:Size of each RAM disk in kbytes. (int)
parm: max_part:Maximum number of partitions per RAM disk (int)

默认是不加载的,需要加载这个模块

[root@lab8106 src]# modprobe brd

加载模块后就会生成下面的的盘符路径,这个就是内存盘

[root@lab8106 src]# ll /dev/ram*
brw-rw---- 1 root disk 1, 0 Jan 14 00:43 /dev/ram0
brw-rw---- 1 root disk 1, 1 Jan 14 00:43 /dev/ram1
brw-rw---- 1 root disk 1, 2 Jan 14 00:42 /dev/ram2
brw-rw---- 1 root disk 1, 3 Jan 14 00:42 /dev/ram3

这个的默认大小是16M,设备的数目是16个,这个显然是不符合我们的需求的

这个个数信息和大小信息是写在内核模块里面的,这个目前还找到办法在外面修改的地方(已经找到了见本文补充),现在通过修改内核模块的方式来达到修改的目的

获取内核源码

CentOS-7-x86_64-1503-01版本的内核是3.10.0-229.el7.x86_64,这个最好是使用的对应版本的内核代码,这样不会出现其他的问题,下载该distribution版本的内核源码,拷贝到根目录:

http://vault.centos.org/7.1.1503/updates/Source/SPackages/kernel-3.10.0-229.1.2.el7.src.rpm

安装该源码包

[root@lab8106 ~]# rpm -i kernel-3.10.0-229.1.2.el7.src.rpm

安装完了以后,这个rpm包里面的源码会被放在 ~/rpmbuild/SOURCES/ 这个目录内,源码文件是linux-3.10.0-229.1.2.el7.tar.xz

编译内核源码

将linux-3.10.0-229.1.2.el7.tar.xz 文件拷贝到目录 /usr/src/zp 下
这个是你自己定义一个编译的目录

解压内核源码

[root@lab8106 zp]# tar -xvf linux-3.10.0-229.1.2.el7.tar.xz
[root@lab8106 zp]# cd linux-3.10.0-229.1.2.el7/

清理编译环境的状态,如果你是下载的内核源码,而且是第一次编译,就没有必要执行这一步操作

[root@lab8106 ~]# make mrproper

将已存在的./.config文件内容,作为新版本内核的默认值

[root@lab8106 ~]# make oldconfig

配置内核的参数,修改ramdisk的相关属性

在内核配置菜单中配置ramdisk块驱动模块的个数和大小,并保存退出

    Device Drivers
|-->Block devices
|--> [M]RAM block device support
(xx) Default number of RAM disks
(xx) Default RAM disk size(kbytes)

如果内存够大,可以修改大点,注意这个地方是每个内存盘的大小

编译内核模块

[root@lab8106 zp]# make modules -j8

编译后的Ramdisk模块的存放位置

/usr/src/zp/linux-3.10.0-229.1.2.el7/drivers/block/brd.ko

安装新的brd.ko模块

将旧的brd.ko模块从内核中移除。

[root@lab8106 zp]# rmmod brd

将新的brd.ko模块拷贝到Centos7系统的 如下目录/lib/modules/3.10.0-229.el7.x86_64/kernel/drivers/block/,
覆盖原来的ramDisk模块brd.ko

更新内核模块依赖

[root@lab8106 zp]# depmod -a

8、重新挂载内核模块。 如果加载的时候报错就强制加载 modprobe -f brd

[root@lab8106 zp]# modprobe brd

检查是否生成了

[root@lab8106 zp]# ls /dev/ram*

然后就可以使用/dev/ram*这个设备了,当磁盘一样使用

我的为测试环境,内存不是那么大,就是5G内存盘,4个,做对比测试,ceph默认的5G的journal,这个内存就稍微给大那么一点点6G,防止单位换算的原因造成空间不够,需要重来

补充

在线添加内存盘操作

modprobe brd rd_nr=2 rd_size=2048000 max_part=0

说明:

rd_nr:ramdisk的个数

rd_size:ramdisk的大小

max_part:ramdisk单个分区的最大个数

在线卸载内存盘的操作

modprobe -r brd

如果需要开机自启动:

vim /etc/modules-load.d/memdisk.conf

添加需要加载的模块

brd

vim /etc/modprobe.d/memdisk.conf

添加给定相关参数

options brd rd_nr=2 rd_size=2048000 max_part=0

变更记录

Why Who When
创建 武汉-运维-磨渣 2016-01-14
修改添加方案 武汉-运维-磨渣 2016-09-22

这篇文章基本都是参考了:

http://my.oschina.net/u/658505/blog/544547?fromerr=wWO13oYJ

centos7下做内存盘的方法的更多相关文章

  1. Linux下清理内存和Cache方法 /proc/sys/vm/drop_caches

    Linux下清理内存和Cache方法 /proc/sys/vm/drop_caches 频繁的文件访问会导致系统的Cache使用量大增 $ free -m total used free shared ...

  2. Linux/Centos下清理内存和Cache方法

    Linux/Centos下释放内存和缓存方法 $ free -m 运行sync将dirty的内容写回硬盘$ sync 通过修改proc系统的drop_caches清理free的cache$ echo ...

  3. CentOS7 下linux不能上网解决方法​,centos7 eth0 没有ip,IP突然丢失

    CentOS7 下linux不能上网解决方法​ 在CentOS VMware下安装好linux后,发现有时不能直接联网,特分享下总结出来的经验,希望对新手有用 工具/原料 XP系统 VMware.Wo ...

  4. Linux下清理内存和Cache方法

    暂时目前的环境处理方法比较简单: 在root用户下添加计划任务: */10 * * * * sync;echo 3 > /proc/sys/vm/drop_caches; 每十分钟执行一次,先将 ...

  5. Centos7下安装部署oracle数据库方法及问题汇总

    目标:在centos7上配置oracle数据库服务器,并在win7上面使用pl/sql成功访问该oracle数据库 系统环境: 服务器:centos7 64位 客户端:win7 64位 注意cneto ...

  6. Linux下查看内存使用情况方法总结

    Linux查看CPU和内存使用情况:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 在做Linux系统优化的时候,物理内 ...

  7. Linux 下查看内存使用情况方法总结

    Linux查看CPU和内存使用情况:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 在做Linux系统优化的时候,物理内 ...

  8. 详解Linux(centos7)下安装OpenSSL安装图文方法

    OpenSSL是一个开源的ssl技术,由于我需要使用php相关功能,需要获取https的文件所以必须安装这个东西了,下面我整理了两种关于OpenSSL安装配置方法. 安装环境:  操作系统:CentO ...

  9. centos7下挂载U盘和移动硬盘

    挂载U盘 1.使用fdisk -l命令查看磁盘情况 [root@localhost ~]# fdisk -l 磁盘 /dev/sda:1000.2 GB, 1000204886016 字节,19535 ...

随机推荐

  1. Java NIO:选择器

    最近打算把Java网络编程相关的知识深入一下(IO.NIO.Socket编程.Netty) Java NIO主要需要理解缓冲区.通道.选择器三个核心概念,作为对Java I/O的补充, 以提升大批量数 ...

  2. laravel 验证码 auth方式登录 中间件判断session是否存在

    首先下载laravel的插件 composer下载  实现验证码       composer require mews/captcha 在config/app.php进行配置 'providers' ...

  3. quart动态执行定时任务

    今天有个需求,前端可以将定时任务自定义保存到数据库,每天根据查询数据库来执行任务. 其实不用动态也是可以实现,但是.也是想试试动态执行定时任务看看怎么样的. (1)建立一个QuartzManage类 ...

  4. LuoguP3615 如厕计划

    题面 现有两个厕所,一个女士专用,一个通用,给出\(2*n\)个排成一列的人的性别 每人如厕需要一分钟,假如女厕是空的,女生中最靠前的可以直接进入. 需要通过调换顺序使得所有人都上完厕所最后的时间为n ...

  5. PLC模拟量采集模块在工控领域的应用

    在工业现场中,往往需要对温度.电流.电压等模拟量进行控制采集,这可以使用PLC对这些数据进行采集,但是如今生产各种PLC模拟量采集模块的厂家非常多,不同类型的PLC都是有自己专属的模拟量采集模块的,不 ...

  6. Java学习的第五十六天

    1.例11.5引用保护成员 public class Cjava { public static void main(String[]args) { Student1 s1=new Student1( ...

  7. 【新阁教育】S7.NET+Log4Net+SQLSugar+MySQL搭建Iot平台

    1.搭建西门子S7仿真环境 新阁教育提醒您基于PLCSIM-Advanced搭建西门子S7仿真环境注意事项: 1.通过dotNet工控上位机公众号后台发送PLCSIM-Advanced获取软件 2.安 ...

  8. Learn day5 迭代器\生成器\高阶函数\推导式\内置函数\模块(math.time)

    1.迭代器 # ### 迭代器 """能被next调用,并不断返回下一个值的对象""" """ 特征:迭代器会 ...

  9. numpy的统计分析

    一.排序 间接排序(argsort,lexsort) 根据一个或多个数据集进行排序 1.Sort() --对数值直接进行排序 a.一维排序 b.二维排序 c.axis的认知 2.argsort() - ...

  10. 编码风格:Mvc模式下SSM环境,代码分层管理

    本文源码:GitHub·点这里 || GitEE·点这里 一.分层策略 MVC模式与代码分层策略,MVC全名是ModelViewController即模型-视图-控制器,作为一种软件设计典范,用一种业 ...