SSD作緩存方案之LVM cache


SSD作緩存方案之LVM cache

1. 前言

最近因為工作的需要,接觸了一些SSD作緩存相關的知識。所謂SSD作緩存就是使用fast device(例如SSD),給slow device(例如機械硬盤)做緩存,以提高計算機整體的I/O存儲性能。

目前在個人計算機中,使用的比較多的是機械硬盤和固態硬盤(SSD)。機械硬盤具有容量大,價格便宜,容錯性好,壽命較長等優點;缺點是讀寫性能相對機械硬盤有比較大的差距。固態硬盤的優點是讀寫性能較好,特別是隨機讀寫性能;缺點是價格比較昂貴,容量小,寫入壽命有限,一旦損壞數據難以恢復等。

因此,有些情況下我們希望結合兩者優點,於是SSD緩存技術方案應運而生。

2. 需求

假設:

  • 有一個容量比較小的fast device(例如SSD);
  • 有一個以及以上的大容量機械硬盤;
  • 有比較大的數據需要存儲;
  • 對數據讀寫性能有一定的要求。

那么這個時候,我們就可以考慮把SSD作緩存來使用。

3. 常見方案

就從緩存方案來說,常見的有DM-cache、bcache、LVM cache、flashCache、EnhanceIO等,本文主要介紹LVM cache。

4. LVM cache

在RHEL6.7之后,LVM提供對LVM緩存邏輯卷的支持,它是基於dm-cache,LVM緩存邏輯卷使用快速設備(例如SSD驅動器)組成的小型邏輯卷,來提高容量更大但更慢邏輯卷的性能。下面在虛擬機上演示如何創建及使用。

注意:因為是在個人主機安裝的虛擬機上演示,無法體現性能,僅僅演示創建過程,若需要測試其性能,請在實體機上使用真實的存儲設備測試

4.1 創建


如圖所示,因為是測試,所以用虛擬機上的/dev/sdb和/dev/sdd分別作為fast device和slow device來演示創建過程。

4.1.1 分區

(以創建sdb分區為例)

fdisk /dev/sdb

回車進入分區操作, 輸入n表示創建分區,然后回車選擇默認選項,選項選擇完畢后,輸入w表示保存退出。
fdisk之后選項常用參數有:

  • m:幫助信息
  • p:顯示分區表
  • d:刪除一個分區表
  • l:列出已知的分區類型
  • n:新建一個分區表
  • q:退出不保存
  • w:保存並退出
  • t:修改分區表系統id

分區結果如下圖所示:

4.1.2 創建物理卷

pvcreate /dev/sdb1 /dev/sdd1

4.1.3 創建卷組vg

vgcreate vg /dev/sdb1 /dev/sdd1

4.1.4 創建邏輯卷

  • 創建data邏輯卷
lvcreate -n data -L 6G vg /dev/sdd1

創建存儲數據的邏輯卷data,划分/dev/sdd1物理卷的空間。

  • 創建cache邏輯卷
lvcreate -n cache -L 6G vg /dev/sdb1

創建緩存數據的邏輯卷cache,划分/dev/sdb1物理卷的空間。

  • 創建meta邏輯卷
lvcreate -n meta -L 64M vg /dev/sdb1

創建緩存數據的邏輯卷meta,划分/dev/sdb1物理卷的空間。

結果如下:

lvm cache總共包括三部分:data、cache、meta,其中meta的size需要大於千分之一的cache;data是存儲數據,cache和meta共同構成緩存

4.1.5 創建緩存池

(注意cache和meta的順序不能顛倒)

lvconvert --type cache-pool --poolmetadata vg/meta vg/cache

4.1.6 將存儲卷加入緩存池

lvconvert --type cache --cachepool vg/cache --cachemode writeback vg/data

注意:cachemode有writeback和writethrough兩種模式,默認為writethrough,此處測試設置為writeback。writeback的讀寫性能會好一些,但是在某些極端情況下會丟失數據

4.1.7 格式化與掛載

mkfs.ext3 /dev/vg/data
mkdir data
mount /dev/vg/data ./data/

最后,就可以在./data/目錄下存儲數據了。在該目錄讀寫數據時,實際上有fast device的緩存作用,加速了磁盤的讀寫性能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM