首页 > 代码库 > centos6.4安装flashcache
centos6.4安装flashcache
FlashCache呢是Facebook技术团队的又一力作,最初是为加速MySQL设计的。
Flashcache是在Linux层面的,所以任何受磁盘IO困绕的软件或应用都可以方便的使用。
为什么是用于加速MySqL呢,这个就涉及到数据库的专业知识了,传统磁盘的随机写随机读效率都相当低下,需要进行机械化的寻道读取,尽管很多学术论文对数据库优化中都曾经在这些方面大做文章。那么SSD的存在似乎很好的解决了随机读写的问题,因为SSD是固态存储器,即不存在机械寻道和磁化问题,而是通过电位标注01,随机读写效率都相当优秀。
但是SSD有个先天性缺陷,那就是写入数据之前必须先进行擦除,这是为什么呢,这和SSd的原理有关,电位的转化问题,就是先都空间全部置位,在进行加电变化每个cell的正确电位,那么势必会影响SSd的寿命,相当于一次写转化为了两次写。如果SSD的使用没有进过良好的优化,那么会SSD的使用寿命将会受限,因此损耗均衡算法也是SSD研究关注的重点,貌似现在应都有了成熟的解决方案。
尽管SSd设备都具备了良好的损耗均衡,但是使用者都是熟知SSD的缺陷,所以不得不小心应对,因此SSD在存储中的位置,通常作为读缓存,用于提高系统的IO性能。FlashCache便是以此为目的的使用SSd设备。
FlashCache是Linux的一个模块,可以动态地加载在Linux中。
Flashcache通过在文件系统(VFS)和设备驱动之间新增了一次缓存层,来实现对热点数据的缓存。用SSD作为缓存,通过将传统硬盘上的热门数据缓存到SSD上,然后利用SSD优秀的读性能,来加速系统。这个方法较之内存缓存,没有内存快,但是空间可以比内存大很多。(SSd的价格高于磁盘,低于内存)
图示:
/dev/sdb是SSD设备,/dev/sda是传统的磁盘设备,加载了Flashcache之后呢,会将这两个设备虚拟化为一个带有缓存的块设备/dev/mapper/cachedev
好了,废话说完,我们开始实际操作。
1、环境准备和安装所需软件包
# cat /etc/issueCentOS release 6.4 (Final)Kernel \r on an \m
yum -y updaterpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpmyum -y install dkms gcc make yum-utils kernel kernel-devel git make gcc-c++ device-mapper
yum -y install unifdef.x86_64
同时,flashcache需要整个源码树,查看一下
[root@localhost ~]# ll /usr/src/kernels/2.6.32-431.29.2.el6.x86_64/总用量 3288drwxr-xr-x. 25 root root 4096 10月 22 15:05 archdrwxr-xr-x. 2 root root 4096 10月 22 15:05 blockdrwxr-xr-x. 5 root root 4096 10月 22 15:05 cryptodrwxr-xr-x. 92 root root 4096 10月 22 15:05 driversdrwxr-xr-x. 3 root root 4096 10月 22 15:05 firmwaredrwxr-xr-x. 71 root root 4096 10月 22 15:05 fsdrwxr-xr-x. 21 root root 4096 10月 22 15:05 includedrwxr-xr-x. 2 root root 4096 10月 22 15:05 initdrwxr-xr-x. 2 root root 4096 10月 22 15:05 ipcdrwxr-xr-x. 8 root root 4096 10月 22 15:05 kerneldrwxr-xr-x. 7 root root 4096 10月 22 15:05 lib-rw-r--r--. 1 root root 57000 9月 10 06:02 Makefile-rw-r--r--. 1 root root 1152 9月 10 06:02 Makefile.commondrwxr-xr-x. 2 root root 4096 10月 22 15:05 mm-rw-r--r--. 1 root root 697350 9月 10 06:02 Module.symversdrwxr-xr-x. 49 root root 4096 10月 22 15:05 netdrwxr-xr-x. 6 root root 4096 10月 22 15:05 samplesdrwxr-xr-x. 12 root root 4096 10月 22 15:05 scriptsdrwxr-xr-x. 7 root root 4096 10月 22 15:05 securitydrwxr-xr-x. 21 root root 4096 10月 22 15:05 sound-rw-r--r--. 1 root root 2519815 9月 10 06:02 System.mapdrwxr-xr-x. 7 root root 4096 10月 22 15:05 toolsdrwxr-xr-x. 2 root root 4096 10月 22 15:05 usrdrwxr-xr-x. 3 root root 4096 10月 22 15:05 virt
如果没有的话下载放到指定位置
wget http://ftp.redhat.com/pub/redhat/linux/enterprise/6Server/en/os/SRPMS/kernel-2.6.32-358.el6.src.rpm
进入flashcache目录编译
# cd flashcache
# make KERNEL_TREE=/usr/src/kernels/2.6.32-431.29.2.el6.x86_64/
没有报错的话继续
make install
出现错误:
[root@localhost flashcache]# make installmake -C src KERNEL_TREE=/lib/modules/2.6.32-358.el6.x86_64/build PWD=/root/flashcache/src installmake[1]: Entering directory `/root/flashcache/src‘make -C /lib/modules/2.6.32-358.el6.x86_64/build M=/root/flashcache/src modules V=0make: Entering an unknown directorymake: *** /lib/modules/2.6.32-358.el6.x86_64/build: 没有那个文件或目录。 停止。make: Leaving an unknown directorymake[1]: *** [modules] 错误 2make[1]: Leaving directory `/root/flashcache/src‘make: *** [install] 错误 2
build 是一个链接文件,并且指向的地址不存在。
我发现/usr/src/kernels/目录下面是开始是没有内容的,对于centos来说,内核源码是放在 /usr/src/kernels 目录中;如果通过在线升级内核,也是放在这个目录中;如果您的系统中的 /usr/src/kernels/ 中没有内容,说明没有安装内核的源码包 kernel-devel 软件包;
通过在线安装的内核源码包 ,比如通过 apt+synaptic 或者yum 安装的,内核源码会被放到/usr/src/kernel 下的目录中,您要进入相对应的目录进行编译; 在这里我是通过yum安装的。
yum -y install kernel yum -y install kernel-devel
因为我已经安装了源码包,所有出现:
[root@localhost ~]# yum -y install kernel-develLoaded plugins: fastestmirror, refresh-packagekit, securityLoading mirror speeds from cached hostfile * base: mirrors.hustunique.com * epel: mirrors.hustunique.com * extras: mirrors.hustunique.com * updates: mirrors.hustunique.comSetting up Install ProcessPackage kernel-devel-2.6.32-431.29.2.el6.x86_64 already installed and latest versionNothing to do
[root@localhost ~]# cd /lib/modules/2.6.32-358.el6.x86_64/[root@localhost 2.6.32-358.el6.x86_64]# ln -s /usr/src/kernels/2.6.32-431.29.2.el6.x86_64/ build ln: 创建符号链接 "build": 文件已存在
使build指向刚/usr/src/kernels中刚安装的源码包,出现错误
必须要先删除才能添加新的链接
# rm -rf /lib/modules/2.6.32-358.el6.x86_64/build
重新建立符号链接:
[root@localhost 2.6.32-358.el6.x86_64]# ln -s /usr/src/kernels/2.6.32-431.29.2.el6.x86_64/ /lib/modules/2.6.32-358.el6.x86_64/build
之后就可以进入flashcache目录
[root@localhost flashcache]# make install
[root@localhost flashcache]# make installmake -C src KERNEL_TREE=/lib/modules/2.6.32-358.el6.x86_64/build PWD=/root/flashcache/src installmake[1]: Entering directory `/root/lashcache/src‘make -C /lib/modules/2.6.32-358.el6.x86_64/build M=/root/flashcache/src modules V=0make[2]: Entering directory `/usr/src/kernels/2.6.32-431.29.2.el6.x86_64‘ CC [M] /root/flashcache/src/flashcache_conf.o CC [M] /root/flashcache/src/flashcache_main.o CC [M] /root/flashcache/src/flashcache_subr.o CC [M] /root/flashcache/src/flashcache_ioctl.o CC [M] /root/flashcache/src/flashcache_procfs.o CC [M] /root/flashcache/src/flashcache_reclaim.o CC [M] /root/flashcache/src/flashcache_kcopy.o LD [M] /root/flashcache/src/flashcache.o Building modules, stage 2. MODPOST 1 modules CC /root/flashcache/src/flashcache.mod.o LD [M] /root/flashcache/src/flashcache.ko.unsigned NO SIGN [M] /root/flashcache/src/flashcache.komake[2]: Leaving directory `/usr/src/kernels/2.6.32-431.29.2.el6.x86_64‘install -o root -g root -m 0755 -d /lib/modules/2.6.32-358.el6.x86_64/extra/flashcache/install -o root -g root -m 0755 flashcache.ko /lib/modules/2.6.32-358.el6.x86_64/extra/flashcache/depmod -a 2.6.32-358.el6.x86_64make -C utils allmake[2]: Entering directory `/root/flashcache/src/utils‘make[2]: Nothing to be done for `all‘.make[2]: Leaving directory `/root/flashcache/src/utils‘make -C utils installmake[2]: Entering directory `/root/flashcache/src/utils‘install -d -m 755 /sbin/install -m 755 flashcache_create flashcache_destroy flashcache_load flashcache_setioctl get_agsize /sbin/make[2]: Leaving directory `/root/flashcache/src/utils‘make -C ocf installmake[2]: Entering directory `/root/flashcache/src/ocf‘install -d -m 755 /usr/lib/ocf/resource.d/flashcacheinstall -m 755 flashcache /usr/lib/ocf/resource.d/flashcachemake[2]: Leaving directory `/root/flashcache/src/ocf‘make[1]: Leaving directory `/rootflashcache/src‘
加载模块
modprobe flashcache
centos6.4安装flashcache