CentOS Stream8でSSDをキャッシュにする

データを保管するディスクはSATA HDDをmdでRAID6を構築した/dev/md/md2tbを使い、キャッシュにはnvmeのSSDの/dev/nvme0n1p1を使います。

キャッシュにはdm-cacheを使用します。LVMに組み込まれているはずなので、追加パッケージは特に要らないと思います。

まずはVGを作ります。この時はディスクアレイとSSDを両方指定します。

# vgcreate sharedvg /dev/md/md2tb /dev/nvme0n1p1

次にデータ保管用のLVを作ります。ここではデータ保管用のディスクアレイのみを指定します。

# lvcreate -n sharedlv -l 100%FREE sharedvg /dev/md/md2tb 

キャッシュのメタデータ用のLVを作ります。メタデータはキャッシュサイズの1/1000以下を指定するそうです。SSDは240GBなので、200MBとします。

# lvcreate -L 200M -n sharedlv_meta sharedvg /dev/nvme0n1p1

キャッシュ用のLVを作ります。200Gを指定します。

# lvcreate -L 200G -n sharedlv_cache sharedvg /dev/nvme0n1p1

キャッシュプールを作成します。モードはライトバックにします。ライトバックはキャッシュに書き込み後に完了とするモードです。UPSもあるし、冗長化電源なので多分大丈夫でしょう。

# lvconvert --type cache-pool --cachemode writeback --poolmetadata sharedvg/sharedlv_meta sharedvg/sharedlv_cache

キャッシュプールを指定してコンバートします。

# lvconvert --type cache --cachepool sharedvg/sharedlv_cache sharedvg/sharedlv

sharedlvにPoolとOriginがついて、それぞれキャッシュプールとオリジナルに分かれていますね。

# lvs -a sharedvg
  LV                           VG       Attr       LSize   Pool                   Origin           Data%  Meta%  Move Log Cpy%Sync Convert
  [lvol0_pmspare]              sharedvg ewi------- 200.00m                                                            
  sharedlv                     sharedvg Cwi-a-C---  <1.82t [sharedlv_cache_cpool] [sharedlv_corig] 0.01   3.23            0.00
  [sharedlv_cache_cpool]       sharedvg Cwi---C--- 200.00g                                         0.01   3.23            0.00
  [sharedlv_cache_cpool_cdata] sharedvg Cwi-ao---- 200.00g                                                            
  [sharedlv_cache_cpool_cmeta] sharedvg ewi-ao---- 200.00m                                                            
  [sharedlv_corig]             sharedvg owi-aoC---  <1.82t

あとは作ったsharedlvを指定して、iSCSIで共有をすれば、SSDでキャッシュできる共有ディスクの出来上がりです。

# dnf install targetcli
# systemctl enable target.service
# systemctl start target.service
# targetcli /backstores/block create name=sharedlv dev=/dev/sharedvg/sharedlv
# targetcli /iscsi create iqn.2019-06.net.gurres.homelab:nas02
# targetcli /iscsi/iqn.2019-06.net.gurres.homelab:nas02/tpg1/luns create /backstores/block/sharedlv
# targetcli /iscsi/iqn.2019-06.net.gurres.homelab:nas02/tpg1 set attribute generate_node_acls=1
# targetcli /iscsi/iqn.2019-06.net.gurres.homelab:nas02/tpg1 set attribute demo_mode_write_protect=0
# targetcli saveconfig

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)