原理
寫操作先緩存到ssd硬盤上,然后通過一定策略寫到普通硬盤上;
讀操作熱點數(shù)據(jù)可以緩存到ssd硬盤上,提高讀取數(shù)據(jù)的速度。
軟件 ssd 緩存開源軟件主要有bcache ,flashcache
bcache 需要編譯最新的內(nèi)核,要求比較高,配置比較復雜,目前主要用于測試環(huán)境;
flashcache 是facebook內(nèi)部使用的ssd cache軟件,開源出來供大家使用,目前有人編譯出rhel6的rpm包,在centos6上可以直接安裝使用。
本次初步測試了flashcache
測試環(huán)境
sdc為 ssd 硬盤 160G*4 raid 10 用fio測試 4k 寫iops為 5433
sdb為 普通sas硬盤 146G*2 raid 1 用fio測試 4k 寫iops為 447
初步簡單測試結(jié)果:
4k 隨機寫可以達到 5014
4k隨機讀可以達到45874
flashcache 安裝配置方法
安裝
rpm --import http://elrepo.org/RPM-GPG-KEY-elrepo.org/p>
p>rpm -Uvh http://elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm/p>
p>yum install flashcache-utils kmod-flashcache
配置:
用sdc 做sdb的緩存
/p>
p>flashcache_create -p back cachedev /dev/sdc /dev/sdb /p>
p>cachedev cachedev, ssd_devname /dev/sdc, disk_devname /dev/sdb cache mode WRITE_BACK/p>
p>block_size 8, md_block_size 8, cache_size 0/p>
p>Flashcache metadata will use 1192MB of your 24016MB main memory
可以用3種方式:
/p>
p>Writethrough - safest, all writes are cached to ssd but also written to disk/p>
p>immediately. If your ssd has slower write performance than your disk (likely/p>
p>for early generation SSDs purchased in 2008-2010), this may limit your system/p>
p>write performance. All disk reads are cached (tunable).
數(shù)據(jù)同時寫到ssd和普通硬盤
/p>
p>Writearound - again, very safe, writes are not written to ssd but directly to/p>
p>disk. Disk blocks will only be cached after they are read. All disk reads/p>
p>are cached (tunable).
數(shù)據(jù)同時繞過ssd,直接寫到普通硬盤
Writeback - fastest but less safe. Writes only go to the ssd initially, and/p>
p>based on various policies are written to disk later. All disk reads are/p>
p>cached (tunable).
數(shù)據(jù)先寫到ssd,隨后寫到普通硬盤
查看
flashstat
======================================================================================================
Flashstat: a tool for flashcache status per second
Author : NinGoo(seaman.ning@gmail.com)
Version : 0.3
======================================================================================================
SSD Device: /dev/sdc Disk Device: /dev/sdb Cache Mode: WRITE_BACK
Capacity: 303998M Block Size: 4K Meta Block Size: 4096b
Total Blocks: 77823488 Cached Blocks: 9 Cached Percent: 0
Set Numbers: 512 Dirty Blocks: 0 Dirty Percent: 0
cache_all: 1 reclaim_policy: FIFO dirty_thresh_pct: 20
max_clean_ios_set: 2 max_clean_ios_total: 4 skip_seq_thresh: 0K
======================================================================================================
time read/s write/s diskr/s diskw/s ssdr/s ssdw/s uread/s uwrit/s metaw/s clean/s repl/s wrepl/s hit% whit% dwhit%
03-13 14:51:20 0 0 0 0 0 0 0 0 0 0 0 0 0|10 0|0 0|0
fdisk -l /dev/mapper/cachedev
可以看到一個設(shè)備
Disk /dev/mapper/cachedev: 146.8 GB, 146778685440 bytes
255 heads, 63 sectors/track, 17844 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0002da0a
Device Boot Start End Blocks Id System
使用:
可以當一個塊設(shè)備來使用,劃分vg lv
/p>
p> pvcreate /dev/mapper/cachedev/p>
p> Physical volume "/dev/mapper/cachedev" successfully created/p>
p> vgcreate ssdcachetest /dev/mapper/cachedev /p>
p> Volume group "ssdcachetest" successfully created/p>
p> lvcreate -L 100G -n ssdcache_test_lv1 ssdcachetest/p>
p> Logical volume "ssdcache_test_lv1" created
刪除
dmsetup remove cachedev/p>
p>flashcache_destroy /dev/sdc