在dm-crypt上的LVM上进行I / O调度

我有以下设置:

  • 在Dell PowerEdge R320上运行的Debian稳定版(Linux内核3.16.7)
  • 在PERC H310 Mini控制器上的RAID1中有两个SATA硬盘,可以看作是/dev/sda
  • /dev/sda2支持的dm-crypt目标dm-0
  • 具有单个上述物理卷dm-0单个LVM卷组
  • 上述卷组中有多个逻辑卷dm-1dm-2等,格式为ext4

当一个进程开始对一个逻辑卷进行批量写入时,所有其他进程都会严重I / O饥饿 – 系统变得无响应(当涉及到I / O时延迟达30秒)会发生什么情况。

我认为这是负责确保不会发生的I / O调度程序。 我看到sda使用cfq

 # cat /sys/block/sda/queue/scheduler noop deadline [cfq] 

但是其他每个设备映射器的目标报告都没有I / O调度器:

 # cat /sys/block/dm-0/queue/scheduler none # cat /sys/block/dm-1/queue/scheduler none # cat /sys/block/dm-2/queue/scheduler none 

我的问题是,为什么没有设备映射程序目标的I / O调度,我可以启用它,或者我怎样才能使这个系统响应在沉重的I / O负载?

首先, DM设备没有任何I / O调度程序是非常正常的,因为(具体例外)

关于您logging的低性能,考虑到您的H310控制器不仅没有caching,而且甚至禁用物理磁盘的DRAMcaching ,这意味着您的系统无法通过caching降低延迟。

将读取 – 修改 – 写入结合在一起是常见行为(由于对encryption容器的写入访问不alignment),导致写入I / O性能极差。