
MDADM RAID1 セットアップの上に LVM 論理ボリュームがあります。次の方法で、この論理ボリュームに SSD デバイスをキャッシュとして追加しようとしています。
vgextend dataVG /dev/sdd
lvcreate --type cache --cachemode writethrough -L 120G -n dataLV_cachepool dataVG/dataLV /dev/sdd
システムを再起動するまではすべて正常に見えます。再起動後、起動に失敗し、リカバリ モードになります (Ubuntu)。
起動プロセス中に次のエラーが表示されます。
lvm[740]: dataVG: autoactivation failed.
systemd[1]: lvm2-pvscan@9:2.service: Main process exited, code=exited, status=5/NOTINSTALLED
systemd[1]: lvm2-pvscan@9:2.service: Failed with result 'exit-code'.
systemd[1]: Failed to start LVM2 PV scan on device 9:2.
lvm[774]: /usr/sbin/cache_check: execvp failed: No such file or directory
lvm[774]: Check of pool dataVG/dataLV_cachepool failed (status:2). Manual repair required!
lvm[774]: 0 logical volume(s) in volume group "dataVG" now active
lvm[774]: dataVG: autoactivation failed.
systemd[1]: Started File System Check on /dev/mapper/BACKUPVG-mainbackup.
systemd[1]: lvm2-pvscan@8:16.service: Main process exited, code=exited, status=5/NOTINSTALLED
systemd[1]: lvm2-pvscan@8:16.service: Failed with result 'exit-code'.
systemd[1]: Failed to start LVM2 PV scan on device 8:16.
systemd[1]: Mounting /mnt/mainbackup...
systemd[1]: Mounted /mnt/mainbackup.
kernel: EXT4-fs (dm-1): mounted filesystem with ordered data mode. Opts: (null)
systemd[1]: dev-mapper-dataVG\x2dataLV.device: Job dev-mapper-dataVG\x2dataLV.device/start timed out.
systemd[1]: Timed out waiting for device dev-mapper-dataVG\x2dataLV.device.
systemd[1]: Dependency failed for /mnt/dataLV.
systemd[1]: Dependency failed for Local File Systems.
systemd[1]: local-fs.target: Job local-fs.target/start failed with result 'dependency'.
systemd[1]: local-fs.target: Triggering OnFailure= dependencies.
systemd[1]: mnt-dataLV.mount: Job mnt-dataLV.mount/start failed with result 'dependency'.
systemd[1]: Dependency failed for File System Check on /dev/mapper/dataVG-dataLV.
systemd[1]: systemd-fsck@dev-mapper-dataVG\x2dataLV.service: Job systemd-fsck@dev-mapper-dataVG\x2dataLV.service/start failed with resu
systemd[1]: dev-mapper-dataVG\x2dataLV.device: Job dev-mapper-dataVG\x2dataLV.device/start failed with result 'timeout'.
VG からキャッシュされたドライブを削除した場合にのみ機能します。
lvconvert --uncache dataVG/dataLV
この問題にどう対処したらよいかわかりません...
LVM バージョン:
LVM version: 2.02.176(2) (2017-11-03)
Library version: 1.02.145 (2017-11-03)
答え1
Debian 8 でも同じ問題が発生しました。解決には 2 つの手順があります。
まず、起動中に必要なモジュールがロードされないため、システムはキャッシュされた LV に対して非アクティブ状態の LVM で起動することになります。
手動でアクティブ化しようとすると、エラーが発生します:
vgchange -a y vg0/home_cache
/usr/sbin/cache_check: execvp failed: No such file or directory
Check of pool vg0/home_cache failed (status:2). Manual repair required!
実際、/usr/sbin/cache_check コマンドは存在しません。以下をインストールして修正します。
apt-get install thin-provisioning-tools
次に、LVM キャッシュ ボリュームがアクティブ化されない原因となっている問題を修正します。initramfs ブート イメージに存在する必要のあるモジュールがいくつかあります。それらを include の強制モジュールに追加します。
sudo echo "dm_cache" >> /etc/initramfs-tools/modules
sudo echo "dm_cache_mq" >> /etc/initramfs-tools/modules
sudo echo "dm_persistent_data" >> /etc/initramfs-tools/modules
sudo echo "dm_bufio" >> /etc/initramfs-tools/modules
そして、この後、次の操作を実行します。
update-initramfs -k `uname -r` -u -t
そして最後に、次の方法で自分自身の安全を確保します。
update-grub
すべてを2回確認し、最後に再起動します。
答え2
キャッシュ カーネル モジュール (dm-cache) と /usr/sbin/cache_* ツールが init ramdisk に必要だと思います。Fedora では dracut によって処理され、Debian (および Ubuntu) では initramfs-tools パッケージによって処理されます。