dm-multipath는 I/O를 예약합니까?

dm-multipath는 I/O를 예약합니까?

관심 있는 다중 경로 장치가 있습니다.

[root@xxx dm-7]# multipath -ll mpathf
mpathf (3600601609f013300227e5b5b3790e411) dm-7 DGC,VRAID
size=3.0T features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
|-+- policy='round-robin 0' prio=130 status=active
| |- 7:0:1:5 sdl 8:176  active ready running
| `- 8:0:1:5 sdx 65:112 active ready running
`-+- policy='round-robin 0' prio=10 status=enabled
  |- 7:0:0:5 sdf 8:80   active ready running
  `- 8:0:0:5 sdr 65:16  active ready running

따라서 이 경로를 지원하는 블록 장치는 sdf, sdr, sdl가 될 것으로 보입니다 sdx. 예 를 들어 sdfI/O 스케줄러를 다음과 같이 설정했습니다 noop.

[root@xxx dm-7]# cat /sys/block/sdf/queue/scheduler
[noop] anticipatory deadline cfq

이 장치는 실제 블록 장치 mpathf에 매핑됩니다 . /dev/dm-7방금 I/O 스케줄러도 있다는 것을 알았습니다.

[root@xxx dm-7]# cat /sys/block/dm-7/queue/scheduler
noop anticipatory deadline [cfq]

질문:어느 것이 우선인가? 다중 경로 장치의 스케줄러입니까, 아니면 I/O가 최종적으로 전달되는 장치입니까?

물론 IOP가 두 번 예약되지 않는다고 가정합니다(한 번은 mpath 장치에 대해, 한 번은 I/O가 리디렉션되는 개별 블록 장치에 대해).

답변1

짧은 답변:

커널 버전의 장치 매퍼2031년 6월 2일 이후(2009년 9월 9일 릴리스) "요청 기반" dm 대상에 대한 지원을 포함합니다. 지금까지 유일한 요청 기반 dm 대상은 입니다 dm-multipath.

BIO 목표로 남아 있는 것(즉, 모든 것)와는 별개로다중 경로) 스케줄러 선택이 여전히 존재하지만 이것이 발생하기 전에 DM 대상이 IOP를 항복하기 때문에 중요하지 않습니다.

multipathd요청 기반 대상의 경우 요청이 기본 SCSI 장치( 등)로 직접 라우팅되기 /dev/sg4때문에 스케줄러 선택은 개별 블록 장치의 설정을 재정의합니다 /dev/sg5.

추가 정보:

사용자 애플리케이션 I/O를 BIO(블록 I/O)라고 합니다. BIO는 병합/순서 요청을 위해 스케줄러/엘리베이터로 전송된 다음 하위 수준 장치에 "요청"으로 전송됩니다.

역사적으로 dm-multipath생물학적 수준에서만 가능합니다. 이로 인해 개별 BIO의 트래픽이 블록 장치( 등)에 의해 병합되어 일부 요청 대기열이 다른 가능한 경로보다 짧거나 덜 사용되는 문제가 발생 sdb합니다 . sdfBIO 역시 블록 디바이스( , 등) dm-multipath에 숨겨져 있기 때문에 재시도 이벤트 등의 이벤트에 대해 알 수 없습니다 ./dev/sda/dev/sdb

이전 다중 경로 블록 장치(RHEL 5)의 sysfs 객체를 변경합니다:

[root@xxxsat01 dm-1]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.10 (Tikanga)
[root@xxxsat01 ~]# uname -r
2.6.18-371.8.1.el5
[root@xxxsat01 dm-1]# cat dev
253:1
[root@xxxsat01 dm-1]# ll
total 0
-r--r--r-- 1 root root 4096 Jan 29 13:54 dev
drwxr-xr-x 2 root root    0 Apr 29  2014 holders
-r--r--r-- 1 root root 4096 Jan 29 13:54 range
-r--r--r-- 1 root root 4096 Jan 29 13:54 removable
-r--r--r-- 1 root root 4096 Jan 29 13:54 size
drwxr-xr-x 2 root root    0 Jan 25 06:25 slaves
-r--r--r-- 1 root root 4096 Jan 29 13:54 stat
lrwxrwxrwx 1 root root    0 Jan 29 13:54 subsystem -> ../../block
--w------- 1 root root 4096 Jan 29 13:54 uevent

변경 후(RHEL 6):

[root@xxxlin01 dm-1]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.5 (Santiago)
[root@xxxlin01 ~]# uname -r
2.6.32-431.3.1.el6.x86_64
[root@xxxlin01 dm-1]# cat dev
253:1
[root@xxxlin01 dm-1]# ll
total 0
-r--r--r-- 1 root root 4096 Jan 29 13:58 alignment_offset
lrwxrwxrwx 1 root root    0 Jan 29 13:58 bdi -> ../../bdi/253:1
-r--r--r-- 1 root root 4096 Jan 29 13:58 capability
-r--r--r-- 1 root root 4096 Jan 29 13:58 dev
-r--r--r-- 1 root root 4096 Jan 29 13:58 discard_alignment
drwxr-xr-x 2 root root    0 Jan 29 13:58 dm
-r--r--r-- 1 root root 4096 Jan 29 13:58 ext_range
drwxr-xr-x 2 root root    0 Jan 29 13:58 holders
-r--r--r-- 1 root root 4096 Jan 29 13:58 inflight
drwxr-xr-x 2 root root    0 Jan 29 13:58 power
drwxr-xr-x 2 root root    0 Jan 29 13:58 queue
-r--r--r-- 1 root root 4096 Jan 29 13:58 range
-r--r--r-- 1 root root 4096 Jan 29 13:58 removable
-r--r--r-- 1 root root 4096 Jan 29 13:58 ro
-r--r--r-- 1 root root 4096 Jan 29 13:58 size
drwxr-xr-x 2 root root    0 Jan 29 13:58 slaves
-r--r--r-- 1 root root 4096 Jan 29 13:58 stat
lrwxrwxrwx 1 root root    0 Jan 29 13:58 subsystem -> ../../../../class/block
drwxr-xr-x 2 root root    0 Jan 29 13:58 trace
-rw-r--r-- 1 root root 4096 Jan 29 13:58 uevent

커널은 각 대상이 수행하는 작업을 모르기 때문에 장치 매퍼 장치는 해당 유형에 관계없이 동일한 sysfs 속성을 제공합니다. 그런 다음 요청이 블록 수준 장치로 전달되므로 장치 매퍼의 스케줄러는 호출되지 않으므로 이 설정은 본질적으로 다른 dm 대상과 관련이 없습니다.

추가 자료:

관련 정보