8 効率的なストレージのためのマルチパスの使用

ストレージ・デバイスへの複数のパスによって、接続の冗長性、フェイルオーバー機能、ロード・バランシングおよびパフォーマンスの向上が提供されます。Device-Mapper Multipath (DM-Multipath)は、サーバーとストレージ・デバイスの間で1つのパスとして複数のI/Oパスを表すことができるマルチパス・ツールです。

デバイス・マルチパス化のサンプル設定

通常は、ファイバ・チャネルベースのストレージ・エリア・ネットワーク(SAN)上のストレージにアクセスできるシステム、またはiSCSIイニシエータとターゲット間に冗長ネットワーク接続が存在する場合はイニシエータ上でマルチパスを構成します。

図8-1は、サーバーとSAN接続ストレージ・アレイのディスク間に、2つのI/Oパスが構成されている単純なDM-Multipath構成を示しています。

  • サーバーのホスト・バス・アダプタhba1とストレージ・アレイのコントローラctrl1との間。

  • サーバーのホスト・バス・アダプタhba2とストレージ・アレイのコントローラctrl2との間。

図8-1 SANを介したディスクへの2つのパスのDM-Multipathマッピング


図では、サーバーとSAN接続ストレージ・アレイのディスク間に、2つのI/Oパスが構成されている単純なDM-Multipath構成を示しています。DM-Multipathは、基礎となるデバイス/dev/sdcおよび/dev/sdfが組み込まれた単一のマルチパス・デバイス/dev/mapper/mpathNを作成します。

DM-Multipathがない場合、両方のパスが同じストレージ・デバイスに接続されていても、システムは各パスを別々のパスとして扱います。DM-Multipathは、基礎となるデバイス/dev/sdcおよび/dev/sdfが組み込まれた単一のマルチパス・デバイス/dev/mapper/mpathNを作成します。

マルチパス・サービス(multipathd)は、次のいずれかの方法でマルチパス・デバイスとの間でI/Oを処理します。

アクティブ/アクティブ

ラウンドロビン割当または動的ロード・バランシングのいずれかで、使用可能なすべてのパスにI/Oが分散されます。

アクティブ/パッシブ(スタンバイ・フェイルオーバー)

I/Oには1つのパスのみが使用されます。アクティブなパスに障害が発生すると、DM-MultipathによってI/Oがスタンバイ・パスに切り替わります。これはデフォルトの構成です。

ノート:

DM-Multipathは、SANファブリック内のパス障害など、パス障害時にフェイルオーバーを提供できます。ディスク・メディア障害は、ソフトウェアまたはハードウェアのRAIDソリューションを使用して処理する必要があります。

マルチパス・デバイスのネーミングは、multipath.confファイル内のマルチパスのuser_friendly_namesプロパティによって管理されます。noに設定すると、デバイスはWorld Wide Identifier (WWID) (/dev/mapper/WWID)に基づいて名前が付けられます。WWIDは、それぞれのデバイスに固有です。

このプロパティをyesに設定すると、デバイスは/dev/mapper/mpathNとしてマップされます。Nはマルチパス・グループ番号です。また、alias属性を使用して、デバイスに意味のある名前を割り当てることができます。マルチパス構成ファイルの操作を参照してください。

user_friendly_namesのステータスとその他のDM-multipath設定を確認するには、mpathconfコマンドを発行します。次に例を示します:

sudo mpathconf

次のような情報が表示されます。

multipath is enabled
find_multipaths is enabled
user_friendly_names is enabled
dm_multipath modules is loaded
multipathd is running

または、/etc/multipath.confで設定を表示します。

/dev/mapperのマルチパス・デバイスは、その他の物理ストレージ・デバイスと同じ方法で使用して、ストレージを参照できます。たとえば、LVM物理ボリューム、ファイル・システム、スワップ・パーティション、自動ストレージ管理(ASM)ディスクまたはRAWデバイスとして構成できます。

マルチパスの構成

  1. device-mapper-multipathパッケージをインストールします。

    sudo dnf install device-mapper-multipath
  2. マルチパス機能の基本構成設定をアクティブ化します。

    sudo mpathconf --enable --with_multipathd y

    このコマンドは、/etc/multipath.confファイルも作成します。

  3. (オプション)マルチパスのステータスを確認するには、次のように入力します。

    sudo mpathconf
  4. 必要に応じて、/etc/multipath.confを編集します。

    詳細は、マルチパス構成ファイルの操作を参照してください。

現在のマルチパス構成を表示するには、multipath -llを実行します。

sudo multipath -ll

マルチパスが正しく構成されている場合、コマンドの出力は次のようになります。

mpath1(360000970000292602744533030303730) dm-0 SUN,(StorEdge 3510|T4
size=20G features=‘0’ hwhandler=‘0’ wp=rw
|-+- policy=‘round-robin 0’ prio=1 status=active
| ‘- 5:0:0:2 sdb 8:16    active ready running
‘-+- policy=‘round-robin 0’ prio=1 status=active
  ‘- 5:0:0:3 sdc 8:32    active ready running

この出力例では、ラウンドロビンI/Oパス選択を使用して、/dev/mapper/mpath1に20GBのストレージへの2つのパス(/dev/sdb/dev/sdc)がアクティブ/アクティブ構成で組み込まれていることを示しています。ストレージを識別するWWIDは360000970000292602744533030303730で、sysfsのマルチパス・デバイス名前はdm-0です。

詳細は、mpathconf(8)multipath(8)multipathd(8)multipath.conf(5)およびscsi_id(8)の各マニュアル・ページを参照してください。

マルチパス構成ファイルの操作

/etc/multipath.confファイルを介して、システム環境の設定に従ってマルチパスをカスタマイズする定義の組合せを追加できます。コメント付きの構成例は、/usr/share/doc/device-mapper-multipath/multipath.confから取得できます。

/etc/multipath.confファイルは、次の一般的なセクションに分かれています。

defaults

devicesセクションの設定によってオーバーライドされるデフォルトのマルチパス設定を定義します。また、devicesセクションの定義は、multipathsセクションの設定によってオーバーライドできます。

blacklist

マルチパス・トポロジ検出から除外されるデバイスを定義します。除外されたデバイスはマルチパス・デバイスには組み込まれません。

この例では、デバイスの除外に使用できる様々な方法(WWID (wwid)による方法およびデバイス名(devnode)による方法)を示しています。

blacklist_exceptions

デバイスがblacklistセクションに暗黙的または明示的にリストされている場合も、マルチパス・トポロジ検出に含めるデバイスを定義します。

multipaths

WWIDで識別されるマルチパス・デバイスの設定を定義します。

alias属性には、WWIDまたはマルチパス・グループ番号に基づく名前ではなく、/dev/mapperに表示されるマルチパス・デバイスの名前を指定します。

devices

ストレージ・コントローラの個々のタイプの設定を定義します。各コントローラ・タイプは、vendorproductおよびオプションのrevision設定で識別され、これがデバイスのsysfsの情報と一致する必要があります。

DM-Multipathのサポート対象としてリストされていないストレージ・デバイスを追加するには、/sys/block/device_name/devicevendormodelおよびrevファイルからベンダー、製品およびリビジョンの情報を取得します。

/etc/multipath.confの次のエントリは、指定のWWIDのiSCSI LUNにアクティブ/パッシブ・マルチパス化を設定するのに適しています。

defaults {
    user_friendly_names    yes
    uid_attribute          ID_SERIAL
}

multipaths {
    multipath {
        wwid 360000970000292602744533030303730
    }
}

このスタンバイ・フェイルオーバー構成では、iSCSIイニシエータでネットワーク・インタフェースに障害が発生した場合、残りのアクティブなネットワーク・インタフェースを介してI/Oが続行されます。

ノート:

/etc/multipath.confを編集した場合は、multipathdサービスを再起動してファイルが再度読み取られるようにします。

sudo systemctl restart multipathd

/etc/multipath.confの構成エントリに関する詳細は、multipath.conf(5)マニュアル・ページを参照してください。