小编and*_*311的帖子

在 Linux 上使用软件 RAID 和 LVM 时,哪些 IO 调度程序和预读设置受到尊重?

在多层(物理驱动器 -> md -> dm -> lvm)的情况下,调度程序、预读设置和其他磁盘设置如何交互?

假设您有多个磁盘 (/dev/sda - /dev/sdd),它们都是使用 mdadm 创建的软件 RAID 设备 (/dev/md0) 的一部分。每个设备(包括物理磁盘和 /dev/md0)都有自己的 IO 调度程序设置(像这样更改)和预读(使用 blockdev 更改)。当你加入 dm(加密)和 LVM 之类的东西时,你会添加更多具有自己设置的层。

例如,如果物理设备有 128 个数据块的预读,而 RAID 有 64 个数据块的预读,当我从 /dev/md0 读取时,这是正确的吗?md 驱动程序是否尝试读取 64 个块,然后物理设备驱动程序将其转换为 128 个块的读取?或者 RAID 预读是否“直通”到底层设备,导致读取 64 个块?

同样的问题也适用于调度程序?我是否必须担心多层 IO 调度程序以及它们如何交互,或者 /dev/md0 是否有效地覆盖了底层调度程序?

在我试图回答这个问题时,我挖掘了一些关于调度程序和工具的有趣数据,这些数据可能有助于解决这个问题:

linux raid lvm

29
推荐指数
1
解决办法
6454
查看次数

标签 统计

linux ×1

lvm ×1

raid ×1