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
この記事が気に入ったらサポートをしてみませんか?