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

use*_*655 6 linux-kernel

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

Ale*_*oba 9

md是多个设备.它是Linux内核中的RAID实现,自内核版本2.0以来可用.它允许您创建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你可以在这里阅读它