如果是多层(物理驱动器-> 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是否有效地覆盖了基础调度程序?
在回答这个问题的尝试中,我挖掘了一些有关调度程序和工具的有趣数据,这些数据可能有助于弄清楚这一点:
/sys/block/md0/queue/scheduler
在我的系统,但在那里的唯一选择是none
。