Monday, July 14, 2014

[CentOS 7] LVM cache介紹

CentOS 7 / RHEL 7已經正式發布囉~
在Release notes裡面有提到:

Red Hat Enterprise Linux 7 introduces LVM cache as a Technology Preview. This feature allows users to
create logical volumes with a small fast device performing as a cache to larger slower devices.
(RHEL 7以技術預覽的方式, 引進LVM快取功能. 這個功能允許使用者在建立邏輯卷冊的同時, 設定一個較小但較快的裝置作為快取.)

先說限制.
使用快取功能的邏輯卷冊, 不能移動, 不能改變大小.
裡面有快取邏輯卷冊的卷冊群組(VG)不能分割.

Redhat本身的文件並沒有提到細節, 只叫你去看男人(man)...
好吧, 那就man lvm.

工作原理如下: LVM以區塊的方式, 把較常用的資料區塊保留在一個較小但較快的儲存裝置中 (例如, SSD).
所以這樣的運作方式有些像是市售的混合式硬碟, 只是在混合式硬碟中, SSD cache放在一般硬碟的電路板上, 由韌體去判斷哪些區塊放在SSD cache; 現在講的方式讓使用者自己組合硬碟跟SSD.

這樣設定需要3個LV(邏輯卷冊, 下面的名詞取自manpage):
原始邏輯卷冊 (OriginLV): 最後放置資料的LV, 通常是大容量但速度較慢的裝置
快取資料卷冊 (CacheDataLV): 放置被快取資料的裝置, 例如SSD
快取中介資料卷冊 (CacheMetaLV): 紀錄區塊被使用的情形, 以決定那些區塊要被快取, 還會儲存一份區塊位置表格 (區塊是放在OriginLV還是CacheDataLV).

Manpage中把CacheDataLV跟CacheMetaLV, 統稱為快取儲存池卷冊 (CachePoolLV).
結合OriginLV與CachePoolLV, 就組成快取卷冊 (CacheLV).

步驟如下: (指令是概念說明, 實際使用的時候要換成實際的裝置名稱)
0. 建立或指定一個現有的LV做為OriginLV.
lvcreate -L LargeSize -n OriginLV VG SlowPVs

1. 建立CacheDataLV.
lvcreate -L CacheSize -n CacheDataLV VG FastPVs

2. 建立CacheMetaLV, 這個LV的大小最小需要8MB, 合理的大小大約是CacheDataLV的千分之一左右.
lvcreate -L MetaSize -n CacheMetaLV VG FastPVs

3. 把CacheDataLV與CacheMetaLV組合成CachePoolLV. 這個階段可以設定一些選項.
lvconvert --type cache-pool --poolmetadata VG/CacheMetaLV VG/CacheDataLV
組合之後, 原本的CacheMetaLV會被更名為CachePoolLV_cmeta並隱藏起來.
原本的CacheDataLV會被更名為CachePoolLV_cdata並隱藏起來.
組合完畢的CaclePoolLV名稱會是CacheDataLV.

4. 把OriginLV與CachePoolLV組合成CacheLV.
lvconvert --type cache --cachepool  VG/CachePoolLV VG/OriginLV
組合完畢之後, 原來的OriginLV會被更名為OriginLV_corig並隱藏, 由組合後的CacheLV取代之.
可以在OriginLV使用中做這個步驟, 不用先umount.

PS: 初步測試發現, 目前的LVM cache沒有辦法跨越VG建立cacheLV.




No comments: