Linux内核中dm和md有什么区别?

时间:2014-04-19 00:32:21

标签: linux-kernel

Linux内核中的dm(dmsetup)和md(mdadm)模块有什么区别? [两者似乎都是一个逻辑卷管理器]哦是的,还有lvm(lvm)。这一切有什么区别?

1 个答案:

答案 0 :(得分:9)

md 是多个设备。自内核版本2.0以来,它就是Linux内核中的RAID实现。它允许您创建RAID级别0,10,4,5和6.它具有各种优化,如利用SSE和MMX指令。它是Linux中的标准软件RAID。

dm 是设备映射器。它的Linux内核框架允许您将一个设备映射到另一个设备(一个或多个)上。这可用作创建可在/ dev / mapper目录中访问的虚拟设备(映射设备)。该设备的所有I / O都将映射到其他设备。设备映射器的原因是,在许多情况下您需要映射设备,但是您希望重用代码。

有几个驱动程序(称为dm目标)利用设备映射器,例如:

  • dm-linear - 将一个设备线性映射到另一个设备。这意味着您的新设备会将I / O请求转换为具有一些LBA移位的底层设备。例如,当您从/ dev / mapper / linear读取LBA 1000时,您的读取将在LBA 1050从/ dev / sdd完成。
  • dm-stripe - 将一个设备映射到多个设备,如在RAID 0中。

dm-stripe和md之间的区别RAID级别0并不是那么大 - 它只是不同的实现,但我相信md RAID具有更好的性能。

最后, lvm 是用户空间工具集,它在linux上提供逻辑卷管理功能。它使用设备映射器将卷组和逻辑卷映射到物理设备。

还有一个特殊的令人困惑的案例 - dm-raid,您可以阅读here