设备映射器,使用虚拟设备启动

Posted

技术标签:

【中文标题】设备映射器,使用虚拟设备启动【英文标题】:Device mapper, boot with virtual device 【发布时间】:2017-06-02 20:39:50 【问题描述】:

我的任务是在设备映射器内核模块的帮助下在真实设备下制作虚拟设备。虚拟设备必须将任何请求传输到真实设备,因此两个设备必须相等。

在未来我应该能够控制请求,所以我编写了内核模块,代表设备映射器目标,使用这个article。

制作模块并插入它(insmod 命令)后,我设置了我的设备(dmsetup create)。然后进行挂载,可以通过刚刚创建的虚拟设备使用真实设备。

但问题是如何在启动时重复上述指令?我想将我的虚拟设备用作通用设备(我猜是通过更改 fstab)。

提前致谢!

【问题讨论】:

【参考方案1】:

如果您要将设备用作根文件系统,则需要创建一个 initramfs 来设置它。基本上是一个 shell 脚本,它发出 dmsetup 命令,然后是 mount,最后是 pivot_root 到新文件系统。

There was a discussion on the dm-devel mailing list last year 了解如何在没有 initramfs 的情况下在 Linux 内核中执行此操作,方法是在内核命令行上指定映射器行。这是 Chrome OS 的做法,因为他们不能/不会使用 initramfs。见here for documentation of this feature。但该功能从未合并。

The patch series was updated and resubmitted in May 2017。希望我们最终会看到它以某种形式合并。

如果您不打算将您的设备用作根文件系统,您仍然可以根据需要使用相同的方法,但可能有更简单的方法。

【讨论】:

以上是关于设备映射器,使用虚拟设备启动的主要内容,如果未能解决你的问题,请参考以下文章

创建一个重要的设备映射器目标

由于设备映射器错误,无法运行 Docker 容器

‘终结点映射器中没有更多的终结点可用’

docker-storage-setup 软件包在我的 rhel 7 盒子上不可用?我怎么得到它?我需要使用设备映射器创建一个精简池。

如果映射器在中途失败并且 Hadoop 重试该映射器,自定义计数器会发生啥

kali之Nmap (Network Mapper(网络映射器)