initramfsがlvm-cacheを認識できるようにする。

今まで使っていたAMDのグラフィックボードが壊れてしまって、Nvidiaのグラフィックボードに買い替えました。
Linux環境では、Nvidiaのグラフィックボード用にプロプライエタリ・ドライバが用意されていて、initramfsの時点からドライバが適用になります。

困ったことに、今までlvm-cacheを認識していたのが、Nvidiaのドライバを適用したことで認識できなくなってしまいました。

そこで、initramfs構築環境をいじって、lvm-cacheを認識できるようにします。

cache_checkをインストールする

lvm-cacheを認識するためのスクリプトを書くに至って、必要なのがcache_checkコマンドです。
これはthin-provisioning-toolsパッケージに含まれているので、これをインストールします。

$ sudo apt install thin-provisioning-tools 

インストールが終わったら、cache_checkコマンドがインストールされているかどうか、一応確認してみます。

$ whereis cache_check
cache_check: /usr/sbin/cache_check /usr/share/man/man8/cache_check.8.gz

cache_checkは/usr/sbinにありました。

lvm-cache認識用のスクリプトを作成する

次はスクリプトを書きます。
/etc/initramfs-tools/hooksに適当な名前(ここではlvmcache)でスクリプトを書きます。

$ sudo nano /etc/initramfs-tools/hooks/lvmcache 

ファイルエディタを開いたら、次のスクリプトをコピー&ペーストします。

#!/bin/sh

PREREQ="lvm2"

prereqs()
{
    echo "$PREREQ"
}

case $1 in
prereqs)
    prereqs
    exit 0
    ;;
esac

if [ ! -x /usr/sbin/cache_check ]; then
    exit 0
fi

. /usr/share/initramfs-tools/hook-functions

copy_exec /usr/sbin/cache_check

manual_add_modules dm_cache dm_cache_mq

そして、一応chmodコマンドで実行属性を付与します。

$ sudo chmod +x /etc/initramfs-tools/hooks/lvmcache 

initramfsのアップデート

最後にinitramfsを書き換えます。

$ sudo update-initramfs -u -k all

これで、次回以降、キャッシュ付きのlvが読み込めるはずです。

この記事は以下のページを参考にしました。

Booting Debian Jessie from an lvmcache


この記事が気に入ったらサポートをしてみませんか?