第4章 DM Multipath 設定ファイルの編集

DM Multipath では、マルチパスで最も一般的に使用する設定値がデフォルトで提供されています。また DM Multipath に対応する最も一般的なストレージアレイが DM Multipath に含まれています。対応しているデバイスなどのデフォルトの設定値は、以下のいずれかのコマンドを実行して確認してください。

# multipathd show config
# multipath -t

DM-Multipath のデフォルトの設定値は、/etc/multipath.conf 設定ファイルを編集するとオーバーライドできます。必要な場合は、デフォルトでは対応していないストレージアレイを設定ファイルに追加することもできます。

注記

initramfs ファイルシステムでマルチパスの設定を行うことができます。initramfs ファイルシステムからマルチパスを実行してマルチパスの設定ファイルを変更した場合は、initramfs ファイルシステムを再構築して変更を有効にする必要があります。

マルチパス設定ファイルで指定するのは、使用状況に応じて必要とされるセクションや、デフォルト値の変更が必要なセクションのみです。使用環境には無関係なファイルのセクションや、デフォルト値を無効にする必要がないファイルのセクションでは、初期ファイルに指定されているコメントアウトを削除する必要はありません。

設定ファイルでは、正規表現の記述構文を使用できます。

設定ファイルの詳細は、man ページの multipath.conf(5) を参照してください。

4.1. 設定ファイルの概要

マルチパス設定ファイルは以下のセクションに分かれています。

blacklist
マルチパス設定の対象として考慮しないデバイスの一覧。
blacklist_exceptions
この例外セクションに指定されていなければ、blacklist セクションのパラメーターに従ってブラックリストに指定されるマルチパスの候補になる一覧。
defaults
DM Multipath のデフォルトの全般設定。
multipaths
マルチパスデバイスの特性に関する個別設定。ここで指定する値は、設定ファイルの overridesdevices、および defaults のセクションで指定されている値より優先されます。
devices
ストレージコントローラーの個別設定。ここで指定する値は、設定ファイル内の defaults セクションで指定されている値より優先されます。デフォルトでは対応していないストレージアレイを使用している場合は、そのアレイ用の devices サブセクションを作成する必要があります。
overrides
すべてのデバイスに適用される設定。ここで指定する値は、設定ファイルの devices セクションおよび defaults セクションで指定されている値より優先されます。

システムがマルチパスデバイスの属性を決定するとき、まずマルチパス設定をチェックし、次にデバイス設定をチェックしてから、マルチパスシステムのデフォルトを確認します。

4.2. DM Multipath がデバイスタイムアウトの上書き

recovery_tmo sysfs オプションは、特定の iSCSI デバイスのタイムアウトを制御します。次のオプションは、システム全体の recovery_tmo 値を上書きします。

  • replacement_timeout 設定オプションは、システム全体で全 iSCSI デバイスの recovery_tmo 値を上書きします。
  • DM Multipath が管理するすべての iSCSI デバイスで、DM Multipath の fast_io_fail_tmo オプションは、システム全体の recovery_tmo 値を上書きします。

    DM Multipath の fast_io_fail_tmo オプションは、ファイバーチャネルデバイスの fast_io_fail_tmo オプションを上書きします。

DM Multipath の fast_io_fail_tmo オプションは replacement_timeout よりも優先します。Red Hatでは、replacement_timeout を使用して、DM Multipathが管理するデバイスの recovery_tmo を上書きすることは推奨しません。これは、multipathd サービスが再読み込みを行うと、DM Multipathが常に recovery_tmo をリセットするためです。

4.3. DM Multipath のデバイスのブラックリスト

マルチパス設定ファイルの blacklist セクションには、システムがマルチパスデバイスを設定する際に使用しないデバイスを指定します。ブラックリストに指定したデバイスは、マルチパスデバイスには含まれません。

find_multipaths 設定パラメーターを off に設定すると、マルチパスは明示的にブラックリストに指定していないパスに対して常にマルチパスデバイスを作成しようとします。find_multipaths 設定パラメーターを on に設定すると、以下の 3 つの条件のいずれかが満たされた場合に限り、マルチパスによりデバイスが作成されます。

  • ブラックリストに指定されておらず、同一の WWID を持つパスが少なくとも 2 つある場合。
  • ユーザーが multipath コマンドでデバイスを指定して、デバイスの作成を手動で強制する場合。
  • 任意のパスが、以前に作成されたマルチパスデバイスと同一の WWID を持っている場合 (そのマルチパスデバイスがその時点で存在していない場合も含む)。マルチパスデバイスを作成すると、常にそのデバイスの WWID が記憶されるため、同一の WWID を持つパスが検出されると、そのデバイスが自動的に再作成されます。これにより、マルチパスのブラックリストを編集しなくても、マルチパスが自動的に正しいパスを選択してマルチパスデバイスにすることができます。

    find_multipaths パラメーターを使用せずにマルチパスデバイスを作成してから、パラメーターを on に設定した場合は、/etc/multipath/wwids ファイルから、マルチパスデバイスとして作成しないデバイスの WWID を削除しなければならない場合があります。以下は、/etc/multipath/wwids ファイルの例を示しています。スラッシュ (/) で囲まれている部分が WWID です。

    # Multipath wwids, Version : 1.0
    # NOTE: This file is automatically maintained by multipath and multipathd.
    # You should not need to edit this file in normal circumstances.
    #
    # Valid WWIDs:
    /3600d0230000000000e13955cc3757802/
    /3600d0230000000000e13955cc3757801/
    /3600d0230000000000e13955cc3757800/
    /3600d02300069c9ce09d41c31f29d4c00/
    /SWINSYS  SF2372         0E13955CC3757802/
    /3600d0230000000000e13955cc3757803/

find_multipaths には、onoff 以外に以下の値を設定することもできます。

  • strict - マルチパスは、マルチパス化されていなかったパスを許可しないため、そのパスは /etc/multipath/wwids ファイルに記載されていません。
  • smart - マルチパスは常に udev のブラックリストに指定されていないデバイスを許可しますが、find_multipaths_timeout パラメーターで設定されたタイムアウト期間内に multipathd がデバイスを作成しないとそのクレームをデバイス上で解放します。find_multipaths_timeout パラメーターの詳細は、man ページの multipath.conf(5) を参照してください。

find_multipaths の組み込みデフォルト値は off です。ただし、mpathconf により作成されたデフォルトの multipath.conf ファイルは、find_multipaths の値を on に設定します。

find_multipaths に設定できる値の詳細は、man ページの multipath.conf(5) を参照してください。

find_multipaths パラメーターを on に設定した場合は、マルチパス化しない複数のパスを持つデバイスのみをブラックリストに指定する必要があります。そのため、通常はデバイスをブラックリストに指定する必要がありません。

デバイスをブラックリストに指定する必要がある場合は、WWID、デバイス名、デバイスタイプ、プロパティー、およびプロコトルでデバイスをブラックリストに指定できます。各デバイスで、この 5 つの基準は「property、devnode、device、protocol、wwid」の順に評価されます。いずれかの基準によりデバイスがブラックリストに指定されていることが判明した場合は、multipathd により処理から除外され、それ以降の基準は評価されません。各基準において、デバイスがホワイトリストとブラックリストの両方に一致した場合は、ホワイトリストが優先されます。

デフォルトでは、設定ファイルの初期ブラックリストセクションをコメントアウトした後でも、各種のデバイスタイプがブラックリストに指定されます。詳細は「デバイス名でブラックリストの指定」を参照してください。

4.3.1. WWID でブラックリストの指定

設定ファイルの blacklist セクションで wwid エントリーを使用し、World-Wide IDentification でデバイスをブラックリストに指定できます。

以下の例では、WWID が 26353900f02796769 であるデバイスをブラックリストに指定します。

blacklist {
       wwid 26353900f02796769
}

4.3.2. デバイス名でブラックリストの指定

設定ファイルの blacklist セクションで devnode エントリーを使用し、デバイス名でデバイスタイプをブラックリストに指定し、マルチパスデバイスに含まれないようにできます。

以下の例では、sd* のデバイスをすべてブラックリストに指定することで、すべての SCSI デバイスをブラックリストに指定します。

blacklist {
       devnode "^sd[a-z]"
}

blacklist セクションで devnode エントリーを使用すると、特定タイプに該当する全デバイスではなく、個々のデバイスをブラックリストに指定できます。ただし、デバイスが udev ルールで静的にマッピングされていない限り、再起動後にそのデバイス名が同じ名前になる保証がないため、この方法は推奨できません。たとえば、システムが再起動するとデバイス名が /dev/sda から /dev/sdb に変わる可能性があります。

デフォルトでは、以下の devnode エントリーがデフォルトのブラックリストにコンパイルされています。このエントリーによりブラックリストに指定されるデバイスは、通常 DM Multipath をサポートしません。このようなデバイスでマルチパスを有効にするには、「ブラックリストの例外」の説明に従って、設定ファイルの blacklist_exceptions セクションにデバイスを指定する必要があります。

blacklist {
       devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
       devnode "^(td|ha)d[a-z]"
}

4.3.3. デバイスタイプでブラックリストの指定

設定ファイルの blacklist セクションに特定のデバイスタイプを指定するには、device セクションを使用します。以下の例では、IBM DS4200 デバイスと HP デバイスをすべてブラックリストに指定します。

blacklist {
       device {
               vendor  "IBM"
               product "3S42"       #DS4200 Product 10
       }
       device {
               vendor  "HP"
               product ".*"
       }
}

4.3.4. udev プロパティーでブラックリストの指定

multipath.conf 設定ファイルの blacklist セクションおよび blacklist_exceptions セクションは property パラメーターに対応します。このパラメーターを使用すると、ユーザーは特定タイプのデバイスをブラックリストに指定できます。property パラメーターは、デバイスの udev 環境変数名と照合される正規表現の文字列を取ります。

以下の例は、udev プロパティー ID_ATA を持つすべてのデバイスをブラックリストに指定します。

blacklist {
        property "ID_ATA"
}

4.3.5. デバイスプロトコルでブラックリストの指定

protocol セクションのある設定ファイルの blacklist セクションに、マルチパス化から除外されるデバイスのプロトコルを指定できます。マルチパスが認識するプロトコル文字列は scsi:fcp、scsi:spi、scsi:ssa、scsi:sbp、scsi:srp、scsi:iscsi、scsi:sas、scsi:adt、scsi:ata、scsi:unspec、ccw、cciss、nvme、および undef です。パスが使用しているプロトコルを表示するには、multipathd show paths format "%d %P" コマンドを実行します。

以下の例は、未定義のプロトコルまたは未知の SCSI トランスポートタイプを持つすべてのデバイスをブラックリストに指定します。

blacklist {
        protocol "scsi:unspec"
        protocol "undef"
}

4.3.6. ブラックリストの例外

設定ファイルの blacklist_exceptions セクションを使用すると、デフォルトではブラックリストに指定されているデバイスで、マルチパスを有効にできます。

たとえば、デバイスが多数あり、その中の 1 つのデバイス (以下の例では WWID が 3600d0230000000000e13955cc3757803 のデバイス) でのみマルチパスを有効にする場合は、有効にするデバイス以外のものを 1 つ 1 つブラックリストに指定するのではなく、一旦すべてのデバイスをブラックリストに指定してから、/etc/multipath.conf ファイルに以下の行を追加します。これにより、必要なデバイスにのみマルチパスを許可できます。

blacklist {
        wwid ".*"
}

blacklist_exceptions {
        wwid "3600d0230000000000e13955cc3757803"
}

設定ファイルの blacklist_exceptions セクションでデバイスを指定する場合は、blacklist で指定したのと同じ方法で指定しなければなりません。たとえば、blacklist で devnode エントリーを使用してデバイスを指定している場合は、exception で除外指定に使用している WWID が正しくても適用されません。同様に devnode による除外は、devnode エントリーでブラックリストを指定したデバイスにしか適用されず、device による除外は、device エントリーでブラックリストを指定したデバイスにしか適用されません。

property パラメーターの挙動は、他の blacklist_exception パラメーターとは異なります。このパラメーターを設定した場合は、一致する udev 変数がデバイスに必要になります。この変数がないと、デバイスはブラックリストに指定されます。このパラメーターを使用すると、USB スティックやローカルハードドライブなど、マルチパスが無視する必要のある SCSI デバイスをブラックリストに登録できます。合理的にマルチパス化できる SCSI デバイスのみを許可するには、以下の例のようにこのパラメーターを SCSI_IDENT_|ID_WWN) に設定します。

blacklist_exceptions {
        property "(SCSI_IDENT_|ID_WWN)"
}

4.4. マルチパス設定ファイルのデフォルトの編集

/etc/multipath.conf 設定ファイルには defaults セクションがあり、以下のように user_friendly_names パラメーターを yes に設定できます。

defaults {
        user_friendly_names yes
}

上記は、user_friendly_names パラメーターのデフォルト値を上書きします。

設定ファイルに defaults のテンプレートが含まれています。このセクションは、以下のようにコメントアウトされています。

#defaults {
#       polling_interval        10
#       path_selector           "round-robin 0"
#       path_grouping_policy    multibus
#       uid_attribute           ID_SERIAL
#       prio                    alua
#       path_checker            readsector0
#       rr_min_io               100
#       max_fds                 8192
#       rr_weight               priorities
#       failback                immediate
#       no_path_retry           fail
#       user_friendly_names     yes
#}

設定パラメーターのデフォルト値を上書きする場合は、このテンプレートの該当行を defaults セクションにコピーして、コメントを外します。たとえば、path_grouping_policy パラメーターを、デフォルト値の failover から multibus に上書きするには、以下のように、テンプレートで該当行を見つけて設定ファイルの defaults セクションにコピーし、そのコメントを外します。

defaults {
        user_friendly_names     yes
        path_grouping_policy    multibus
}

multipath.conf 設定ファイルの defaults セクションで設定される属性の詳細は、man ページの multipath.conf(5) を参照してください。multipath.conf ファイルの devices セクション、multipaths セクション、または overrides セクションに指定された属性により上書きされた場合を除き、この値は DM Multipath により使用されます。

4.5. 特定デバイスのマルチパス設定の編集

multipath.conf 設定ファイルの multipaths セクションにある属性は、指定された 1 つのマルチパスにのみ適用されます。このデフォルトは DM Multipath により使用され、multipath.conf ファイルの overrides セクション、defaults セクション、および devices セクションに設定された属性を上書きします。

multipath.conf 設定ファイルの defaults セクションで設定される属性の詳細は、man ページの multipath.conf(5) を参照してください。

設定ファイルで、2 つの特定マルチパスデバイスに対して multipath 属性を指定している例を以下に示します。1 つ目のデバイスの WWID は 3600508b4000156d70001200000b0000 で、シンボリック名は yellow です。

2 つ目のマルチパスデバイスの WWID は 1DEC_321816758474 で、シンボリック名は red です。rr_weight 属性は priorities に設定されています。

multipaths {
       multipath {
              wwid                  3600508b4000156d70001200000b0000
              alias                 yellow
              path_grouping_policy  multibus
              path_selector         "round-robin 0"
              failback              manual
              rr_weight             priorities
              no_path_retry         5
       }
       multipath {
              wwid                  1DEC_321816758474
              alias                 red
              rr_weight             priorities
        }
}

4.6. ストレージコントローラーのマルチパス設定の編集

multipath.conf 設定ファイルの devices セクションは、各ストレージデバイスの属性を設定します。デバイスを含むパスの multipath.conf ファイルの multipaths セクションまたは overrides セクションに指定された属性により上書きされた場合を除き、これらの値は DM Multipath により使用されます。これらの属性は、multipath.conf ファイルの defaults セクションに設定された属性を上書きします。

multipath.conf 設定ファイルの devices セクションで設定される属性の詳細は、man ページの multipath.conf(5) を参照してください。

マルチパスに対応しているデバイスの多くは、デフォルトでマルチパスの設定に含まれています。対応デバイスなど、デフォルトの設定値は、次のいずれかのコマンドを実行して確認してください。

# multipathd show config
# multipath -t

おそらく、こうしたデバイスの値を修正する必要はありませんが、必要が生じた場合は、設定ファイルにエントリーを追加すればデフォルト値を上書きできます。multipathd show config コマンドが表示する、目的のデバイスのデフォルト値をコピーして、変更する値に書き換えることができます。

設定ファイルのこのセクションに、デフォルトでは自動で設定されないデバイスを追加する場合は、vendor パラメーターおよび product パラメーターを設定する必要があります。以下の例のように、この値は /sys/block/device_name/device/vendor および /sys/block/device_name/device/model で見つけることができます。device_name はマルチパス化するデバイスになります。

# cat /sys/block/sda/device/vendor
WINSYS
# cat /sys/block/sda/device/model
SF2372

追加で指定するパラメーターは、使用するデバイスにより異なります。デバイスが active/active の場合は通常、追加でパラメーターを設定する必要はありません。path_grouping_policymultibus に設定することもできます。この他に、設定が必要となる可能性があるパラメーターは no_path_retryrr_min_io です。

デバイスが active/passive であるにも関わらず、I/O を持つパスが自動的に passive パスに切り替えられる場合は、チェッカーの関数を、I/O をパスに送信しない関数に変更し、それが正しく動作するかどうかを検証する必要があります (これを行わないとデバイスはフェイルオーバーし続けます)。つまり、ほとんどの場合は、path_checkertur に設定するということになります。この設定は、Test Unit Ready コマンドに対応するすべての SCSI デバイスで機能します。Test Unit Ready コマンドは大半のデバイスで対応しています。

パスの切り替えに特殊なコマンドを必要とするデバイスにマルチパスを設定するには、ハードウェアハンドラーカーネルモジュールが必要になります。現在、利用可能なハードウェアハンドラーは emc です。このハンドラーが目的のデバイスに使用できない場合は、そのデバイスにマルチパスを設定できない可能性があります。

マルチパス設定ファイルの device エントリーの例を以下に示します。

#	}
#	device {
#		vendor			"COMPAQ  "
#		product			"MSA1000         "
#		path_grouping_policy	multibus
#		path_checker		tur
#		rr_weight		priorities
#	}
#}

4.7. すべてのデバイスへのマルチパス値の設定

multipath.conf 設定ファイルの overrides セクションでは、すべてのデバイスの設定値を設定できます。たとえば、すべてのデバイスで no_path_retryfail に設定できます。このセクションは、multipath.conf 設定ファイルの devices セクションおよび defaults セクションの両方で対応しているすべての属性に対応します。これは、vendorproduct、および revision 以外の devices セクション属性になります。このデバイスを含むパスの multipath.conf ファイルで、multipaths セクションに指定された属性により上書きされた場合を除き、この属性はすべてのデバイスの DM Multipath により使用されます。この属性は、multipath.conf ファイルの devices セクションおよび defaults セクションに設定された属性を上書きします。

multipath.conf 設定ファイルの devices セクションおよび defaults セクションで設定される属性の詳細は、man ページの multipath.conf(5) を参照してください。


このページには機械翻訳が使用されている場合があります (詳細はこちら)。