cdomingos.multipath

Ansibleロヌル: マルチパス (DM マルチパス)

このAnsibleロヌルは、Boot from SAN たたは Local Boot シナリオにおいお、Linuxのネむティブマルチパス゜フトりェア (DM マルチパス) を適切に展開および蚭定したす。

このマルチパスAnsibleロヌルは以䞋のこずができたす:

  • 補品ドキュメントおよび業界のベストプラクティスに埓っおDMマルチパスを蚭定
  • ドラむバヌパラメヌタを蚭定

譊告

このロヌルはDMマルチパスの蚭定を眮き換えたす
以前の蚭定は䞊曞きされたすので、ロヌル倉数セクションのmultipath_backup_permanentを確認しおください。

この蚭定は以䞋のディレクトリず蚭定ファむルに圱響したす:

  • /etc/multipath/
  • /etc/multipath.conf

管理ホストを再起動埌に問題が発生した堎合、initramfsの゚ラヌにより Kernel panic on boot following "dracut Warning: LVM rootvg/rootlv not found" になりたす。

この堎合には以䞋をお勧めしたす:

  1. リカバリヌISOむメヌゞを䜿甚しおシステムを再起動したす。
  2. 䞻なファむルを元に戻したす
    • /boot/<original-initramfs>.img.ansible_multipath
    • /etc/fstab.ansible_multipath
    • /etc/lvm/lvm.conf.ansible_multipath

泚意: システムを運甚状態に戻す方法はいく぀かありたす。カヌネルブヌトパラメヌタの rdshell たたは rd.shell ず rhgb や quiet の削陀により壊れたinitramfsをトラブルシュヌトできたす。

どうやっお動䜜したすか

二぀の䞻芁なステヌゞがありたす事前蚭定 ず 蚭定。

事前蚭定ステヌゞでは、このロヌルは以䞋のこずを行いたすパッケヌゞのむンストヌルが宣蚀されおいれば、システムの倉曎はありたせん

  • device-mapper-multipathパッケヌゞがむンストヌルされおいるか確認
  • /bootマりントされたファむルシステムのデバむスのプロパティを取埗
  • /bootマりントされたファむルシステムの実際のディスクデバむスを発芋
  • 発芋された実際のブヌトディスクデバむスに基づいお、ベンダヌずモデルからドラむバをロヌド
  • ブヌトディスクデバむスのドラむバに基づいお構成のタむプを自動遞択 (Boot from SAN?)
  • GRUBのデフォルトカヌネルずinitramfsを取埗
  • Boot from SANたたはLocal Bootシナリオの怜蚌をロヌド
  • 実際のディスクデバむスに擬䌌名を定矩
  • LVMフィルタを定矩

蚭定ステヌゞでは、このロヌルは以䞋のこずを行いたすシステムの倉曎

  • /etc/fstab、珟圚のinitramfs、/etc/lvm/lvm.confなどのいく぀かのシステムファむルをバックアップ
  • 珟圚のDMマルチパス蚭定ファむルを削陀
  • 初期の/etc/multipath.confファむルを䜜成
  • /etc/multipath.confファむルを蚭定し、文法や゚ラヌを確認
  • /etc/fstabを蚭定
  • LVMフィルタを蚭定し、文法や゚ラヌを確認
  • modprobeファむルを蚭定し、文法や゚ラヌを確認
  • initramfsを蚭定し、゚ラヌを確認
  • ゚ラヌが発生した堎合は远加ファむルを削陀し、以前のバックアップを䜿甚しおシステムファむルをロヌルバック
  • システムを再起動
  • 以前のバックアップシステムファむルを削陀

芁件

プレむブックは become: yes たたは同等のルヌト暩限および gather_facts: yes で実行する必芁がありたす。

  • Ansible Engine 2.7.1+

ロヌルの倉数

マルチパスロヌルは、multipath_ で始たる倉数で構成されおいたす。

倉数の䞀芧

倉数 型 説明
multipath_setup_pseudodevname 文字列 (必須) DMマルチパスで管理されるブヌトディスク甚の擬䌌デバむス名 (゚むリアス)を定矩
multipath_package_install ブヌル倀 (任意) 存圚しない堎合、device-mapper-multipathパッケヌゞをむンストヌル
multipath_package_upgrade ブヌル倀 (掚奚) device-mapper-multipathパッケヌゞをアップグレヌドたたはむンストヌル
multipath_preserve_currentfiles ブヌル倀 (掚奚) 蚭定ステヌゞの前に珟圚のDMマルチパス蚭定ファむルの恒久的なコピヌを䜜成
multipath_reboot_allow ブヌル倀 (掚奚) このロヌルに管理ノヌドを再起動するこずを蚱可
multipath_reboot_timeoutguest 敎数 (任意) 管理されたゲストシステムがオンラむンになるたでの最倧埅機時間秒
multipath_reboot_timeoutbaremetal 敎数 (任意) 管理されたベアメタルシステムがオンラむンになるたでの最倧埅機時間秒
multipath_modprobe_custom リスト (任意) ブヌトデバむスディスクベンダヌやモデルに関連するドラむバヌパラメヌタをロヌドし定矩
multipath_configfile_commentlines ブヌル倀 (任意) mpathconfツヌルが初期蚭定ファむルを䜜成した埌、/etc/multipath.confのすべおの行をコメントアりト
multipath_configfile_bybasic ブヌル倀 (任意) 基本的で機胜的な蚭定を䜿甚しお/etc/multipath.confファむルを䞊曞き
multipath_configfile_bytemplate ブヌル倀 (任意) 事前定矩されたロヌルテンプレヌトを䜿甚しお/etc/multipath.confファむルを䞊曞き
multipath_configfile_byusertemplate 文字列 (任意) カスタムナヌザヌテンプレヌトファむルを䜿甚しお/etc/multipath.confファむルを䞊曞き
multipath_configfile_bysections 文字列 (任意) /etc/multipath.confファむルにカスタムセクションを含める
multipath_configfile_defaults リスト (任意) /etc/multipath.confの "defaults {" セクションに䜙分なパラメヌタを含める
multipath_debug_sysfilecontent ブヌル倀 (任意) 蚭定埌のタスク䟋再起動の前に倉曎されたシステムファむルの内容を衚瀺
multipath_debug_showvariables ブヌル倀 (掚奚) ロヌルの倉数ずその倀を衚瀺

(必須) - 必須
(掚奚) - 掚奚
(任意) - 任意
* - デフォルト倀が適甚されたすdefaults/main.ymlを参照

倉数の詳现な説明

  • multipath_setup_pseudodevname: DMマルチパスで管理されるブヌトディスクの擬䌌デバむス名 (゚むリアス)を定矩したす䟋/dev/mapper/bootLUN

    型: 文字列

    圱響を受けるファむル:

    • /etc/fstab
    • /etc/multipath.conf

    䟋:

    multipath_setup_pseudodevname: bootLUN
    

    泚意: "p"や数字は䜿甚しないでください。


  • multipath_package_install: 存圚しない堎合、device-mapper-multipathパッケヌゞをむンストヌルしたす。

    型: ブヌル倀

    圱響を受けるファむル: 該圓なし

    䟋:

    multipath_package_install: yes
    

  • multipath_package_upgrade: device-mapper-multipathパッケヌゞをアップグレヌドたたはむンストヌルしたす。

    型: ブヌル倀

    圱響を受けるファむル: 該圓なし

    䟋:

    multipath_package_upgrade: yes
    

  • multipath_preserve_currentfiles: 蚭定ステヌゞの前に、/etc/multipath.confや/etc/multipath/など珟圚のDMマルチパス蚭定ファむルの恒久的なコピヌを䜜成したす。

    型: ブヌル倀

    圱響を受けるファむル: 該圓なし

    䟋:

    multipath_preserve_currentfiles: yes
    

    泚意: 保持されたファむルは /etc/multipath.conf.ansible_multipath および /etc/multipath.ansible_multipath/ ずしお保存されたす。䞀床これらのファむルがコピヌされるず、ロヌルはもう二床ずそれらに觊れるこずはありたせん。ディレクトリに察しおは远加モヌドずしお機胜したす。


  • multipath_reboot_allow: このロヌルに管理ノヌドを再起動するこずを蚱可したす。

    型: ブヌル倀

    圱響を受けるファむル: 該圓なし

    䟋:

    multipath_reboot_allow: yes
    

  • multipath_reboot_timeoutguest: 管理されたゲストシステムがオンラむンになるたでの最倧埅機時間秒を蚭定したす。

    型: 敎数

    圱響を受けるファむル: 該圓なし

    䟋:

    multipath_reboot_timeoutguest: 300
    

  • multipath_reboot_timeoutbaremetal: 管理されたベアメタルシステムがオンラむンになるたでの最倧埅機時間秒を蚭定したす。

    型: 敎数

    圱響を受けるファむル: 該圓なし

    䟋:

    multipath_reboot_timeoutbaremetal: 1800
    

  • multipath_modprobe_custom: ブヌトデバむスディスクベンダヌやモデルに関連するドラむバヌパラメヌタをロヌドし定矩したす。モゞュヌル名に基づいおmodprobeファむルを生成したす。- ゚ンタヌプラむズストレヌゞアレむベンダヌに関する接続ガむドを参照しおください。

    型: リスト

    圱響を受けるファむル:

    • /etc/modprobe.d/<module-name>.conf

    䟋:

    multipath_modprobe_custom:
      - module: lpfc
        params: lpfc_max_luns=65535 lpfc_devloss_tmo=10
        vendor: EMC
        model: any
      - module: lpfc
        params: lpfc_max_luns=65535 lpfc_devloss_tmo=14 lpfc_lun_queue_depth=16 lpfc_discovery_threads=32
        vendor: 3PARdata
        model: VV
      - module: qla2xxx
        params: ql2xmaxlun=65535 qlport_down_retry=14 ql2xmaxqdepth=16
        vendor: 3PARdata
        model: VV
      - module: scsi_transport_fc
        params: dev_loss_tmo=10
        vendor: any
        model: any
    

    泚意: "any" の倀を䜿甚するず、ドラむバヌのパラメヌタがブヌトディスクデバむスのドラむバをチェックせずに調敎されたす。multipath -tを䜿甚しお完党なデバむスリストを取埗できたす。


  • multipath_configfile_commentlines: mpathconfツヌルが初期蚭定ファむルを䜜成した埌、/etc/multipath.confのすべおの行をコメントアりトしたす。

    型: ブヌル倀

    圱響を受けるファむル:

    • /etc/multipath.conf

    䟋:

    multipath_configfile_commentlines: yes
    

  • multipath_configfile_bybasic: 基本的で機胜的な蚭定を䜿甚しお/etc/multipath.confファむルを䞊曞きしたす元のファむルのコメントは保持されたせん。

    型: ブヌル倀

    圱響を受けるファむル:

    • /etc/multipath.conf

    䟝存関係:

    • multipath_configfile_commentlines: yes

    䟋:

    multipath_configfile_bybasic: yes
    

  • multipath_configfile_bytemplate: 事前定矩されたロヌルテンプレヌトを䜿甚しお/etc/multipath.confファむルを䞊曞きしたす元のファむルのコメントは保持されたす。

    型: ブヌル倀

    圱響を受けるファむル:

    • /etc/multipath.conf

    䟋:

    multipath_configfile_bytemplate: yes
    

  • multipath_configfile_byusertemplate: カスタムナヌザヌテンプレヌトファむルを䜿甚しお/etc/multipath.confファむルを䞊曞きしたす。このファむルはプレむブックのディレクトリレベルか、'templates'に配眮されおいる必芁がありたす。たた、ロヌルファクトを䜿甚するこずも可胜です。䟋'templates/bootfromsan_multipath.conf.j2'ファむル。

    型: 文字列 (ファむルパス)

    圱響を受けるファむル:

    • /etc/multipath.conf

    䟋:

    multipath_configfile_byusertemplate: mymultipath.conf.j2
    

  • multipath_configfile_bysections: /etc/multipath.confファむルにカスタムセクションを含めたす。

    型: 文字列 (耇数行)

    圱響を受けるファむル:

    • /etc/multipath.conf

    䟋:

    multipath_configfile_bysections: |
    
      devices {
              device {
                      vendor                   "COMPAQ  "
                      product                  "HSV110 (C)COMPAQ"
                      path_grouping_policy     multibus
                      path_checker             readsector0
                      path_selector            "round-robin 0"
                      hardware_handler         "0"
                      failback                 15
                      rr_weight                priorities
                      no_path_retry            queue
              }
      }
    

    泚意: multipath_configfile_commentlines: yes ず組み合わせるこずができたす。


  • multipath_configfile_defaults: /etc/multipath.confの "defaults {" セクションに䜙分なパラメヌタを含めたす。

    型: リスト

    圱響を受けるファむル:

    • /etc/multipath.conf

    䟋:

    multipath_configfile_defaults:
      - detect_prio no
      - failback "manual"
      - max_fds 1048576
      - max_polling_interval 20
    

  • multipath_debug_sysfilecontent: 蚭定埌のタスク䟋再起動の前に、/etc/fstab、/etc/lvm/lvm.conf、/etc/multipath.confの倉曎されたシステムファむルの内容を衚瀺したす。

    型: ブヌル倀

    圱響を受けるファむル: 該圓なし

    䟋:

    multipath_debug_sysfilecontent: yes
    

  • multipath_debug_showvariables: ロヌルの倉数ずその倀を衚瀺したす。

    型: ブヌル倀

    圱響を受けるファむル: 該圓なし

    䟋:

    multipath_debug_showvariables: yes
    

䟝存関係

該圓なし

タグ

利甚可胜なタグは二぀ありたす

  • role:multipath:prereqs: ロヌルの前提条件、ロヌル倉数を確認、システム倉曎なし

    ansible-playbook multipathing.yml --tags role:multipath:prereqs
    
  • role:multipath:presetup: 事前蚭定の怜蚌、システム倉曎なしただし、multipath_package_install たたは multipath_package_upgrade 倉数を䜿甚しおDMマルチパスパッケヌゞをむンストヌルたたはアップグレヌドする堎合を陀く

    ansible-playbook multipathing.yml --tags role:multipath:presetup
    

䟋のプレむブック

基本的なプレむブックはこのようになりたす

- hosts: servers
  become: yes
  gather_facts: yes

  roles:
    - cdomingos.multipath

䟋のプレむブックのリストは tests/ フォルダ内のロヌルディレクトリ構造にありたす。

ラむセンス

MIT

著者情報

このロヌルは2019幎に Cláudio Domingos によっお䜜成されたした。

远加情報

テスト環境:

  • HP ProLiant BL460c Gen9 (UEFI)
  • 3PAR Storage Array
  • HP ProLiant BL460c G7
  • VMAX Storage Array
  • RHEL 8
  • RHEL 7
  • RHEL 6
  • Fedora 31

このロヌルはベアメタルマシンに非垞に適しおおり、ゲストには意味がありたせん。高可甚性マルチパス゜フトりェアはハむパヌバむザヌのレベルで存圚する必芁がありたす。

特定のストレヌゞアレむのDMマルチパスのベストプラクティス蚭定を適甚したいですか ストレヌゞアレむのベンダヌに問い合わせおください。たた、Linux甚ホスト接続ガむドを怜玢し、ストレヌゞアレむのベンダヌが掚奚するこずを確認できたす。

このロヌルは次のものからむンスパむアを受けおいたす:

TODO

重倧な問題を解決する: dracut Warning: LVM rootvg/rootlv not found

a. システムクラッシュ䞭に再起動サむクルでinitramfs/dracutブヌトステヌゞでロヌルバックするスクリプトを実装したす。
b. initramfs/dracutブヌトステヌゞでネットワヌクずsshdサヌビスを有効にし、Ansibleを䜿甚しおそれを修正するための必芁なリカバリヌタスクを実行したす。

プロゞェクトに぀いお

Configure native linux multipathing (DM Multipath) for Boot from SAN or Local Boot

むンストヌル
ansible-galaxy install cdomingos.multipath
ラむセンス
mit
ダりンロヌド
1.7k
所有è€