lvmcacheとdm-cacheの違いは何ですか?

lvmcacheとdm-cacheの違いは何ですか?

dm-cache最近、Linuxが最近大幅に改善されたという記事が見つかりました。また、ユーザースペースではこれをlvmcache。私はLVMキャッシュメカニズムが関係していると思いますdm-cache。私のサーバーでは、コマンドを使用してデバイスdm-cacheマッパーレベルで直接設定しましたdmsetup。 LVM コマンドは含まれません。

それでは、正確には何ですか?lvmcacheCLIのみを使用して設定する方が簡単ですかdm-cache?元のコマンドの代わりにこれを使用する方がdmsetup良い考えですか?

私の現在のスクリプトは次のとおりです。

#!/bin/bash

CACHEPARAMS="512 1 writethrough default 0"
CACHEDEVICES="o=/dev/mapper/storage c=/dev/mapper/suse-cache"
MAPPER="storagecached"

if [ "$1" == "-u" ] ; then
{
  for i in $CACHEDEVICES ; do
    if [ "`echo $i | grep \"^c=\"`" != "" ] ; then
      __CACHEDEV=${i:2}
    elif [ "`echo $i | grep \"^o=\"`" != "" ] ; then
      __ORIGINALDEV=${i:2}
  fi
  done

  dmsetup suspend $MAPPER
  dmsetup remove $MAPPER
  dmsetup remove `basename $__CACHEDEV`-blocks
  dmsetup remove `basename $__CACHEDEV`-metadata

}
else
{
  for i in $CACHEDEVICES ; do
    if [ "`echo $i | grep \"^c=\"`" != "" ] ; then
      __CACHEDEV=${i:2}
    elif [ "`echo $i | grep \"^o=\"`" != "" ] ; then
      __ORIGINALDEV=${i:2}
    fi
  done


  __CACHEDEVSIZE="`blockdev --getsize64 \"$__CACHEDEV\"`"
  __CACHEMETASIZE="$(((4194304 + (16 * $__CACHEDEVSIZE / 262144))/512))"
  if [ "$__CACHEMETASIZE" == ""$(((4194303 + (16 * $__CACHEDEVSIZE / 262144))/512))"" ] ; then
    __CACHEMETASIZE="$(($__CACHEMETASIZE + 1))" ; fi
  __CACHEBLOCKSSIZE="$((($__CACHEDEVSIZE/512) - $__CACHEMETASIZE))"
  __ORIGINALDEVSIZE="`blockdev --getsz $__ORIGINALDEV`"


  dmsetup create `basename $__CACHEDEV`-metadata --table "0 $__CACHEMETASIZE linear /dev/mapper/suse-cache 0"
  dmsetup create `basename $__CACHEDEV`-blocks --table "0 $__CACHEBLOCKSSIZE linear /dev/mapper/suse-cache $__CACHEMETASIZE"
  dmsetup create $MAPPER --table "0 $__ORIGINALDEVSIZE cache /dev/mapper/`basename $__CACHEDEV`-metadata /dev/mapper/`basename $__CACHEDEV`-blocks $__ORIGINALDEV $CACHEPARAMS"
  dmsetup resume $MAPPER
}
fi

もっと良くなるでしょうかlvmcache?私は何が起こっているのかを知っていて、設定の明確さほど使いやすさを大切にしないので、これは良いと思います。しかし、lvmcacheを使用してキャッシュを設定する方が最適化されている場合は、それを使用することはもう考える必要はないと思います。

ベストアンサー1

lvmcachedm-cacheその上に構築され、dm-cache設定に論理ボリュームを使用し、これを防止します。ブロックオフセットとサイズを計算する必要があります。。すべてがマンページに文書化されています。基本的なアイデアは次のとおりです。

  • 元のLV(遅い、キャッシュが必要)
  • 新しいキャッシュデータLV
  • 新しいキャッシュメタデータLV

2つのキャッシュLVは「キャッシュプール」LVにグループ化され、元のLVとキャッシュプールLVは元のLVの代わりに使用可能なキャッシュLVにグループ化されます。

lvmcacheまた、冗長キャッシュ設定、キャッシュモード、ポリシーの変更などを簡単に実行できます。

おすすめ記事