基於SSD讀性能,產生的Flashcache技術----flashcache操作命令

安裝flashcache

wget https://github.com/facebook/flashcache/archive/master.zip

tar xf flashcache-master.tar

cd flashcache-master

uname -a

Linux xiaomi 2.6.32-220.el6.x86_64 #1 SMP Tue Dec 6 19:48:22 GMT 2011 x86_64 x86_64 x86_64 GNU/Linux

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

make install



#第一次創建混合硬盤,/dev/sdb(ssd),/dev/sdc(機械硬盤)

(ssd)PCI-E高速flash卡:/dev/sdb

(sas)機械硬盤        :/dev/sdc

flashcache_create -p back cachedev /dev/sdb /dev/sdc

創建flashcache:flashcache_create -b 4k cachedev /dev/sdc /dev/sdb

指定flashcache的block大小與Percona的page大小相同。


#參數說明

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

[-s cache_size]: 緩存大小,可選項。如果沒有指定ssd整個磁盤用作緩存。

[-b block_size]: 塊大小  ,可選項。默認是4KB,必須是2的倍數。

-f:強制創建,略過檢查

-p:





#可以在/dev/mapper目錄下看到新的虛擬設備/dev/mapper/cachedev(這個也就是ssd+sas的混合盤)

ls /dev/mapper | grep cachedev


#(非第一次創建)重啓服務器後加載混合硬盤,可以寫在rc.local中,啓動mysql之前。

flashcache_load /dev/sdb cachedev


#掛載硬盤

mount -o noatime,nodiratime,barrier=0 /dev/mapper/cachedev /data


#監控、管理混合盤狀態

1.cache中預加載文件

flashcache_cacheit filename


2.cache中刪除文件

flashcache_trim filename


3.添加進程名單

flashcache_addpids <device_name> w|b pid1  # 將此進程操作的數據寫入到flashcache中


4.刪除進程名單

flashcache_delpids <device_name> w|b pid1  # 不將此進程操作的數據寫入到flashcache中


5.查看狀態

dmsetup status cachedev

dmsetup table  cachedev

dmsetup info   cachedev


6.刪除flashcache卷

umount cachedev

dmsetup remove cachedev # 刪除所有的髒cacheblock到磁盤


7.銷燬flashcache卷

flashcache_destory /dev/sdb(ssd磁盤的名字) # 銷燬存在於/dev/sdb上的緩存,所有數據丟失,但是/dev/sdc上的數據還存在


#使用

1.裸盤使用

2.安裝文件系統

mkfs.ext3 /dev/mapper/cachedev


#fio隨機讀寫測試

fio -filename=/data/a.txt -direct=1 -iodepth 1 -thread -rw=randread  -ioengine=psync -bs=4k -size=1G -numjobs=10 -runtime=120 -group_reporting -name=mytest

fio -filename=/data/a.txt -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=4k -size=1G -numjobs=10 -runtime=120 -group_reporting -name=mytest


# 微調參數

shell> vim /etc/sysctl.conf

dev.flashcache.dirty_thresh_pct = 90  # flashcache上每個hash set上的髒塊閥值

dev.flashcache.cache_all        = 1   # cache所有內容,可以用黑名單過濾,所有經過混合盤的數據都緩存。如果等於0,需要設置'flashcache_addpids <device_name> w|b pid1',緩存需要(的進程對混合盤操作)的數據

dev.flashcache.fast_remove      = 1   # 打開fast remove特性,關閉機器時,(優點)無需將cache中的髒塊寫入sas盤中,直接落存在ssd盤中,這樣啓動的時候就不用預加載文件了'flashcache_cacheit filename',因爲數據已經存在在ssd中,無需再從sas中加載進來。

                                     # 但是等於1的前提時,(前提)ssd做了raid10或者raid5,壞一個盤不影響數據丟失,可以換盤補修數據,(缺點)但是這樣就沒法用pci-e了(也就是無法直接跟cpu通訊了,需要經過南北橋了)

                                     # 等於0的時,(優點)可以使用pci-e(可以直接跟cpu通訊了,提高速度),(缺點)一旦ssd(因爲是單盤)損壞,數據將丟失。

dev.flashcache.reclaim_policy   = 1   # 髒塊刷出策略,0:FIFO,1:LRU

dev.flashecache.write_merge     = 1   # 打開寫入合併,提升寫磁盤的性能(暫不用)


# 查看flashcache錯誤信息

cat /proc/flashcache_errors


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章