网易中大奖,用户请留神!
2009-01-31 22:51
78 查看
Flashcache是facebook开发的,是Linux下的一个模块,可以动态的加载。Flashcache通过在文件系统和设备驱动之间新增加一次缓存。
原理图如下:
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白/黑名单。
原理图如下:
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白/黑名单。
相关文章推荐
- 张书乐:学会拒绝用户,陌陌、知乎、网易狂推脑补广告的真相……
- 还版权于用户 网易LOFTER的逆天蠢事
- Python模拟用户自动登陆网易126邮箱
- 从网易用户体验谈开去
- 1分钟链圈 | TFBOYS粉丝推出TFBC!网易区块链负责人今回应:没有侵犯用户隐私!俄罗斯绝密核弹头科学家,竟用超算来挖矿;
- 13年专注用户体验——网易邮箱大提速背后
- 2013Esri中国用户大会,show应用,赢大奖--获奖名单公布!
- 60W网易用户数据分析
- Dell荣获计世资讯“2011用户满意度第一”两项大奖
- 醉翁之意不在酒,网易“星球”意在用户数据
- 网易游戏斥巨资打造全新用户研究实验室
- 2012年网易个人电子邮箱用户行为研究报告(数据说明事实)
- 用友获“2008年中国IT用户满意度调查”软件类四项大奖
- 疑似网易泄露用户密码事件浅析
- 听说网易用户信息泄露了?
- 网易星球手机挖矿,仿公信宝不要太明显!伪区块链搜集用户隐私?
- 有道难题2010网易编程挑战赛落幕 60万大奖揭晓
- 网易你收集用户身份证扫描件意欲何为——隄防维权背后的个人信息安全陷阱
- 2016网易个人电子邮箱用户行为研究报告
- python爬虫三:获取一个网易用户的所有图片(selenium+phantomjs)