让知识连接你我
投稿赚钱
当前位置: 首页 > 平台运维 > RHEL5.4下使用flashcache
  • 101
  • 微信分享

    扫一扫,在手机上查看

RHEL5.4下使用flashcache

2019.09.18 10:00 241 浏览 举报

  1.安装需要的RPM包

  # yum install rpm-build

  # yum install redhat-rpm-config

  # yum install unifdef

  2.下载系统对应的kernel源码包

  # wget ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/SRPMS/kernel-2.6.18-164.el5.src.rpm

  创建普通帐号,不要使用root帐号,创建基于~/目录结构

  # useradd xuhh

  # su – xuhh

  $ mkdir -p rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

  $ echo '%_topdir %(echo $HOME)/rpmbuild' > .rpmmacros

  $ rpm -i --nosignature kernel-2.6.18-164.el5.src.rpm

  $ cd ~/rpmbuild/SPECS

  $ rpmbuild -bp --target=uname -m kernel-2.6.spec 2> prep-err.log | tee prep-out.log

  将会在/home/xuhh/rpmbuild/BUILD目录下生成kernel源码目录

  $ cd /home/xuhh/rpmbuild/BUILD/kernel-2.6.18/linux-2.6.18.x86_64

  $ make oldconfig

  $ make prepare

  $ make modules_prepare

  3.下载flashcache

  # wget https://download.github.com/facebook-flashcache-1.0-56-g1e37c60.tar.gz

  # tar zxvf facebook-flashcache-1.0-56-g1e37c60.tar.gz -C ../software/

  4.编译flashcache

  # vim src/Makefile 用下面行替换EXTRA_CFLAGS行

  EXTRA_CFLAGS=-I$(KERNEL_TREE)/drivers/md -I$(KERNEL_TREE)/include/linux  -I./

  # make KERNEL_TREE=/home/xuhh/rpmbuild/BUILD/kernel-2.6.18/linux-2.6.18.x86_64/

  5.加载

  # cd src/

  # cp flashcache.ko /lib/modules/2.6.18-164.el5/kernel/drivers//block/

  # insmod flashcache.ko

  6.查看是否加载成功

  # lsmod | grep flash

  flashcache             98272  0

  dm_mod              101521 12 flashcache,dm_multipath,dm_raid45,dm_snapshot,dm_zero,dm_mirror,dm_log

  7.创建flashcache卷

  flashcache_create [-s cache_size] [-b block_size] cachedevname ssd_devname disk_devname

  -s:缓存大小,可选项。如果没有指定ssd整个磁盘用作缓存。

  -b:块大小,可选项。默认是4KB,必须是2的倍数。

  -f:强制创建,略过检查。

  # ./flashcache_create –s 1g –b 4k cachedev /dev/sdc  /dev/sdb

  在ssd设备/dev/sdc上创建块大小为4KB的1GB的缓存容量缓存磁盘卷/dev/sdb.所创建的设备名称为cachedev。这样Linux下就虚拟出了一个带缓存的块设备。

  # ll /dev/mapper/cachedev

  8.使用flashcache卷

  # mount /dev/mapper/cachedev  /www

  9.加载已经存在的flashcache卷

  flashcache_load cachedevname ssd_devname disk_devname

  # flashcache_load cachedev /dev/sdc /dev/sdb

  加载已经存在于/dev/sdc上的flashcache卷cachedev。

  10.销毁flashcache卷

  flashcache_destroy ssd_devname

  # flashcache_destroy /dev/sdc

  销毁存在于/dev/sdc上的缓存。所有数据丢失!

  11.删除flashcache卷

  使用dmsetup删除flashcache卷。默认的行为是删除所有的脏cacheblock到磁盘。一个节点的重启也会导致所有脏的缓存块被同步清理。

  # dmsetup remove cachedev

  12.查看缓存统计信息

  # dmsetup status cachedev

  # dmsetup table cachedev

  # cat /proc/flashcache_stats

  flashcache错误信息

  # cat /proc/flashcache_errors

  13.flashcache内核参数设置

  dev.flashcache.fast_remove:删除flashcache卷时不同步脏缓存块。这个选项用来快速删除。

  dev.flashcache.zero_stats:统计信息归零。

  dev.flashcache.reclaim_policy:缓存回收规则。有两种算法:先进先出FIFO(0),最近最少用LRU(1).默认是FIFO。

  dev.flashcache.write_merge:启用写入合并,默认是开启的。

  dev.flashcache.dirty_thresh_pct:flachcache尝试保持每个单元的脏块在这个n%以下。设置低增加磁盘写入和降低块重写,但是增加了块读取缓存的可用性。

  dev.flashcache.do_sync:调度清除缓存中的所有脏块。

  dev.flashcache.stop_sync:停止同步操作。

  dev.flashcache.cache_all:全局缓存模式:缓存所有和全部不缓存。默认是缓存所有。

  dev.flashcache.fallow_delay:清除脏块的间隔。默认60s。设置为0禁止空闲,彻底清除。

  dev.flashcache.io_latency_hist:计算IO等待时间,并绘制直方图。

  dev.flashcache.max_clean_ios_set:在清除块时,每单元最大写入出错。

  dev.flashcache.max_clean_ios_total:在同步所有块时,最大写入问题。

  dev.flashcache.debug:开启debug。

  dev.flashcache.do_pid_expiry:在白/黑名单上启用逾期的pid列表。

  dev.flashcache.pid_expiry_secs:设置pid白/黑名单的逾期。

  dev.flashcache.max_pids:最大数量的pid白/黑名单。


本文首次发布于开创者素材 ,转载请注明出处,谢谢合作!

相关文章推荐