zoukankan      html  css  js  c++  java
  • centos7下做内存盘的方法

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

    内存盘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

  • 相关阅读:
    vue 单页面应用 app自适应方案
    css3-3D特效
    css3动画-transition
    html5基本页面
    初入博客园
    网络部分之如何发送HTTP请求
    多线程知识之NSOperation的使用
    多线程知识点之GCD的使用
    多线程知识点之NSThread的使用
    plist 文件读写
  • 原文地址:https://www.cnblogs.com/zphj1987/p/13575322.html
Copyright © 2011-2022 走看看