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、、sdrsdlなるようです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が2回予約されていないとします(一度はmpathデバイス、もう1つは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からのトラフィックがブロックデバイス(など)によってマージされ、一部の要求キューが他の可能なルートよりも短くまたは使用されなくなるという問題が発生しますsdbsdfBIOもブロックデバイス(など)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ターゲットとは関係ありません。

追加資料:

関連情報