从 lvm 缓存卷引导

从 lvm 缓存卷引导

我创建了一个缓存池如下本文。这个过程似乎很成功。

执行升级 grub 并重新启动后,Grub 抱怨找不到根卷(显示 UUID)。 - 我的错,但我不记得这是原始卷的 ID 还是缓存的 ID。

问题:有一篇文章详细介绍了使用缓存卷作为根的任务吗?

答案1

下列Debian 论坛主题博客文章基于它有缺失的信息。

大纲

-1) 备份您的 LVM 配置并准备好类似的 CD。

0) 确保您有一个单独的/boot分区(您的缓存根目录稍后才可用)。这可以是一个 200MB 的分区,并且可以是与缓存根相同的 VG 的一部分。

1)您的内核映像中需要 dm-cache (而不是模块)。检查你的配置并确保你有CONFIG_DM_CACHE=y.如果它是一个模块(=m),您将需要重新编译内核,并将其设置为y。使用 menuconfig 并从那里设置此选项可能是一个好主意(这将确保 dm-cache 的依赖链也是如此=y)。

    Device Drivers  --->

    Generic Driver Options  --->

--- Multiple devices driver support (RAID and LVM)
<*>   Device mapper support
<*>     Cache target (EXPERIMENTAL)

2)安装thin-provisioning-tools(就可以了FSCK- 启动时缓存上的类似功能)。

/etc/initramfs-tools/hooks3) 创建一个包含以下内容的文件。这将确保步骤 2 中的可执行文件和一些依赖项位于您的 init ramdisk 映像内。

#!/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

4) 运行update-initramfs -u -k all以重新生成所有 initrd 映像。

答案2

使用 vbence 的答案时,还要使步骤 3 中的 /etc/initramfs/hooks/ 文件可执行。否则它不会被运行update-initramfs

相关内容