Hitachi

Hitachi Dynamic Link Manager ユーザーズガイド(Linux®用)


付録C.1 マルチパス構成のブートディスク環境の設定

SCSIデバイスを使ったシングルパス構成のブートディスクの環境に,HDLMを新規インストールしてから,マルチパスのブートディスク環境を設定する方法について説明します。

設定を誤ると,OSが起動できなくなることがあるので,注意してください。HDLMデバイスからのOSの起動に失敗した場合の対処については,「3.7.5 HDLMデバイスからのOSの起動に失敗した場合の対処」を参照してください。

この手順で使用するブートローダーの設定ファイル名は,ブートローダーまたはOSによって異なります。ブートローダーの設定ファイル名を次の表に示します。

表C‒1 ブートローダーの設定ファイル名

ブートローダー

設定ファイル

GRUB2

BIOS

Red Hat Enterprise Linux 7の場合

Red Hat Enterprise Linux 8の場合

Red Hat Enterprise Linux 9の場合

SUSE LINUX Enterprise Server 12の場合

SUSE LINUX Enterprise Server 15の場合

/boot/grub2/grub.cfg

UEFI

Red Hat Enterprise Linux 7の場合

Red Hat Enterprise Linux 8の場合

/boot/efi/EFI/redhat/grub.cfg

Red Hat Enterprise Linux 9の場合

/boot/grub2/grub.cfg

  1. Linuxに,root権限を持つユーザーでログインします。

  2. HDLMをインストールします。

    3.6.2 HDLMの新規インストール」を参照して手順2,手順4から手順13を実行して,HDLMデバイスを作成してください。

  3. ブートディスク環境にLVMが使用されているか確認します。

    mountコマンドを実行して,ルートパーティション「/」にマウントされたデバイス名 を確認します。LVMが使用されている場合は,VG名,LV名からなるデバイス名が表示されます。 コマンドの実行例を次に示します。

    • LVMが使用されている場合

      # mount
      /dev/mapper/vg00-lv00 on / type ext3 (rw)
              :
      #
    • LVMが使用されていない場合

      # mount
      /dev/sda9 on / type ext3 (rw)
              :
      #
  4. ブートディスク環境にLVMが使用されている場合は,LVM2がSCSIデバイスではなくHDLMデバイスを認識するように,/etc/lvm/lvm.confファイルを編集します。

    /etc/lvm/lvm.confファイルの編集例を次に示します。

    • Red Hat Enterprise Linux 9の場合

      変更前

      devices {
                                    :
              # global_filter = [ "a/.*/" ]
              global_filter = [ "r|sddlm[a-p][a-p].*|", "a|/dev/sd|" ]
                                    :
              # types = [ "fd", 16 ]
                                    :
              md_component_detection = 1
                                    :
              allow_changes_with_duplicate_pvs = 0
                                    :
              multipath_component_detection=1
                                    :
              use_devicesfile=1
                                    :
      
      }

      変更後

      devices {
                                    :
              # global_filter = [ "a/.*/" ]
              # global_filter = [ "r|sddlm[a-p][a-p].*|", "a|/dev/sd|" ]
              global_filter = [ "a|sddlm[a-p][a-p].*|", "r|/dev/sd|" ]
                                    :
              # types = [ "fd", 16 ]
              types = [ "sddlmfdrv", 16 ]
                                    :
              # md_component_detection = 1
              md_component_detection=0
                                    :
              # allow_changes_with_duplicate_pvs = 0
              allow_changes_with_duplicate_pvs = 1
                                    :
              # multipath_component_detection=1
              multipath_component_detection=0
                                    :
              # use_devicesfile=1
              use_devicesfile=0
                                    :
      
      }

      既存のglobal_filtertypesmd_component_detectionallow_changes_with_duplicate_pvsmultipath_component_detectionおよびuse_devicesfileの行をコメントアウトし,下線部を追加します。

      SCSIデバイスの構成に戻す場合に使用するため,変更前の値は控えてください。

    • Red Hat Enterprise Linux 8,Oracle Linux 8またはSUSE LINUX Enterprise Server 15 SP2以降の場合

      Red Hat Enterprise Linux 8.8以降,Oracle Linux 8.8以降,およびSUSE LINUX Enterprise Server 15 SP5の場合は,multipath_component_detectionの値を0に設定してください。詳細は,「3.8.1 LVM2を使用する場合の注意事項」を参照してください。

      変更前

      # This section allows you to configure which block devices should
      # be used by the LVM system.
              devices {
                                    :
              global_filter = [ "a/.*/" ]
                                    :
              # types = [ "fd", 16 ]
                                    :
              md_component_detection = 1
                                    :
              allow_changes_with_duplicate_pvs = 0
                                    :
      }

      変更後

      # This section allows you to configure which block devices should
      # be used by the LVM system.
      devices {
                                    :
              # global_filter = [ "a/.*/" ]
              global_filter = [ "a|sddlm[a-p][a-p].*|", "r|/dev/sd|" ]
                                    :
              # types = [ "fd", 16 ]
              types = [ "sddlmfdrv", 16 ]
                                    :
              # md_component_detection = 1
              md_component_detection=0
                                    :
              # allow_changes_with_duplicate_pvs = 0
              allow_changes_with_duplicate_pvs = 1
                                    :
      }

      既存のglobal_filtertypesおよびmd_component_detectionの行 をコメントアウトし,下線部を追加します。

      HDLM をアンインストールするときに使用するため,変更前の値は控えてください。

    • SUSE LINUX Enterprise Server 12,SUSE LINUX Enterprise Server 15 SP1以前,Red Hat Enterprise Linux 7およびOracle Linux 7の場合

      allow_changes_with_duplicate_pvsの値を1に設定してください。詳細は,「3.8.1 LVM2を使用する場合の注意事項」を参照してください。

      use_lvmetad=0で運用する場合は,global_filterではなくfilterで指定してください。

      変更前

      # This section allows you to configure which block devices should
      # be used by the LVM system.
      devices {    
                                    :
      
               filter = [ "a/.*/" ]
                                    :
      
               write_cache_state = 1
                                    :
      
              # types = [ "fd", 16 ]
                                    :
      
              md_component_detection = 1
                                    :
      
      }

      変更後

      # This section allows you to configure which block devices should
      # be used by the LVM system.
      devices {    
                                    :
      
              # filter = [ "a/.*/" ]
                  filter = [ "a|sddlm[a-p][a-p].*|", "r|/dev/sd|" ]
                                    :
      
              # write_cache_state = 1
                  write_cache_state = 0
                                    :
      
              # types = [ "fd", 16 ]
                  types = [ "sddlmfdrv", 16 ]
                                    :
      
              # md_component_detection = 1
                  md_component_detection=0
                                    :
      }

      既存のfilterwrite_cache_statetypesおよびmd_component_detectionの行をコメントアウトし,下線部を追加します。

      HDLMをアンインストールするときに使用するため,変更前の値は控えてください。

    ァイルを編集したあと,次に示すコマンドを実行してください。

    # /sbin/vgscan

    次のファイルがある場合,ファイルを削除してください。

    • /etc/lvm/.cache

    • /etc/lvm/cache/.cache

  5. /etc/fstabファイルをバックアップします。

  6. /etc/fstabファイルを編集して,各マウントポイントにHDLMデバイスがマウントされるように修正するため,次の手順で各項目に対応するHDLMデバイス名を確認してください。

    1. SCSIデバイス名からHDLMデバイス名を確認します。

      HDLM構成定義ユーティリティー(dlmcfgmgr)に-vパラメーターを指定して実行して,SCSIデバイスとHDLMデバイスの対応関係を確認します。

      # /sbin/dlmcfgmgr -v
      HDevName      Management  Device    Host    Channel Target  Lun
      /dev/sddlmaa  configured  /dev/sda     0          0      0    0
      KAPL10302-I /sbin/dlmcfgmgr completed normally.

      HDevName列はHDLMデバイス,Device列はSCSIデバイスを表します。

    2. LABEL指定の場合は,LABELからHDLMデバイス名を確認します。

      OSのコマンドfindfs LABEL={LABEL値}を実行して,LABELとデバイス名の対応を確認します。SCSIデバイス名が表示された場合はa.の結果を参照してHDLMデバイスに変更してください。論理ボリューム名(/dev/{VG名}/{LV名},/dev/mapper/{VG名}-{LV名})が表示された場合は,論理ボリューム名に変更してください (なお,SUSE LINUX Enterprise Server 12,SUSE LINUX Enterprise Server 15,Red Hat Enterprise Linux 7,Red Hat Enterprise Linux 8,Red Hat Enterprise Linux 9,Oracle Linux 7およびOracle Linux 8で論理ボリューム名が表示された場合は,LABELを変更する必要はありません)。

      # /sbin/findfs LABEL=/
      /dev/sddlmaa2
      #
      注意事項

      使用する環境によって,findfsにswapのLABELを指定しても情報が取得できない場合があります。その場合,/bin/cat /proc/swapsを実行してswapに使用されているデバイスを確認してください。また,HDLMをアンインストールする場合に備えて,swapのLABELが既に分かっている場合は記録しておいてください。

    3. UUID指定の場合は,UUIDからHDLMデバイス名を確認します。

      OSのコマンドfindfs UUID={UUID値}を実行して,UUIDとデバイス名の対応を確認してください。SCSIデバイス名が表示された場合はa.の結果を参照してHDLMデバイスに変更してください。論理ボリューム名(/dev/{VG名}/{LV名},/dev/mapper/{VG名}-{LV名})が表示された場合は,論理ボリューム名に変更してください (なお,SUSE LINUX Enterprise Server 12,SUSE LINUX Enterprise Server 15,Red Hat Enterprise Linux 7,Red Hat Enterprise Linux 8,Red Hat Enterprise Linux 9,Oracle Linux 7およびOracle Linux 8で論理ボリューム名が表示された場合は,UUIDを変更する必要はありません)。

      # /sbin/findfs UUID=b74637c2-59bb-4bca-94f0-94a96325b73f
      /dev/sddlmaa2
      #
    4. /dev/diskディレクトリーから始まるデバイス名(udev 名)指定の場合は,/dev/diskディレクトリーから始まるデバイス名(udev名)に対応するHDLMデバイス名を確認します。

      OSのコマンドreadlink -f {udev名}を実行して,udev名とデバイス名の対応を確認してください。SCSIデバイス名が表示された場合はa.の結果を参照してHDLMデバイスに変更してください。

      # /usr/bin/readlink -f /dev/disk/by-id/scsi-360060e801025333005112b6300000036-part2
      /dev/sddlmaa2
      #
    5. 論理ボリューム(/dev/{VG名}/{LV名},/dev/mapper/{VG名}-{LV名})で記述されたマウントしたいデバイスは変更する必要はありません。

  7. /etc/fstabファイルを編集します。

    HDLM管理対象デバイスのマウントポイントを,SCSIデバイスからHDLMデバイスに書き換えます。

    既存のSCSIデバイス指定は先頭に#を付けてコメントアウトして,手順6のa.で確認したSCSIデバイスとHDLMデバイスの対応関係を基に,次のようにHDLMデバイス指定を追加します。

    # vi /etc/fstab
    /dev/VolGroup00/LogVol00 / ext3     defaults        1 1
    #LABEL=/boot            /boot ext3     defaults        1 2
    /dev/sddlmaa1              /boot ext3     defaults        1 2
    none                     /dev/pts devpts   gid=5,mode=620  0 0
                                :
                                :

    なお,HDLMのブートディスク環境では,OSごとにルートパーティション「/」のマウントポイントに設定できるデバイス名の書式は次の制限があるので注意してください。

    表C‒2 /etc/fstabファイルでルートパーティション「/」に設定できるデバイスの書式

    OS名

    HDLMのブートディスク環境

    LVMなし

    LVMあり

    Red Hat Enterprise Linux 7

    Red Hat Enterprise Linux 8

    Red Hat Enterprise Linux 9

    Oracle Linux 7

    Oracle Linux 8

    /dev/{HDLMデバイス}

    /dev/mapper/{VG名}-{LV名}

    SUSE LINUX Enterprise Server 12

    SUSE LINUX Enterprise Server 15

    UUID={UUID 値} または,/dev/{VG名}/{LV名}

  8. swapoffコマンドを使って,swapを無効にします。

    すべてのswapを無効にする場合のコマンドの実行例を次に示します。

    # /sbin/swapoff -a

    次の条件をすべて満たす環境で,swapを有効にしたまま手順を実施すると,ホストの停止に時間が掛かる場合があります。

    必ずswapを無効にしてから手順を実施してください。

    • 次に示すどれかのOSである。

      • Red Hat Enterprise Linux 7

      • Red Hat Enterprise Linux 8

      • Red Hat Enterprise Linux 9

      • Oracle Linux 7

      • Oracle Linux 8

      • SUSE LINUX Enterprise Server 12

      • SUSE LINUX Enterprise Server 15

    • HDLM管理対象デバイスが,swapとして有効になっている。

  9. HDLM用の初期RAMディスクイメージファイルを作成します。

    パラメーターに指定する初期RAMディスクイメージファイル名の形式を次に示します。同じ名前のファイルがある場合は,既存のファイルをバックアップしてください。

    表C‒3 HDLM用の初期RAMディスクイメージファイル名

    OS名

    ファイル

    Red Hat Enterprise Linux 7

    Red Hat Enterprise Linux 8

    Red Hat Enterprise Linux 9

    Oracle Linux 7

    Oracle Linux 8

    initramfs-{kernel-version}.img

    SUSE LINUX Enterprise Server 12

    SUSE LINUX Enterprise Server 15

    initrd-{kernel-version}

    注※

    kernel-versionはuname -rコマンドの出力結果です。

    の手順を実行してください

    1. /etc/opt/DynamicLinkManager/hdlm.confに定義されている「hdlm_dracut=n」の記述を,「hdlm_dracut=y」に変更します。

    2. dracutコマンドを実行します。

      コマンドの実行例を次に示します。

      # /usr/bin/dracut /boot/initramfs-4.18.0-305.el8.x86_64.img `uname -r`
  10. ートローダーの設定ファイルをバックアップします。

    OS起動時のカーネルパラメーターにresumeの指定がないことを確認してください。

    1. OS起動時のカーネルパラメーターを確認します。

      # /usr/bin/cat /proc/cmdline
      BOOT_IMAGE=/boot/vmlinuz-3.12.28-4-default \
      root=UUID=c12fce35-4de5-4674-8b3b-2a2e45007b61 \
      resume=/dev/system/swap splash=silent quiet crashkernel=214M-:107M showopts
      #

      resumeの指定がある場合は,次の手順でresumeの指定がないブートローダーのコンフィグファイルを作り直します。resumeの指定がない場合は,この手順は不要なため,手順11に進んでください。

    2. /etc/default/grubファイルからresumeの記述を削除します。

      変更前

      GRUB_CMDLINE_LINUX_DEFAULT="resume=/dev/system/swap splash=silent quiet crashkernel=214M-:107M showopts"

      変更後

      GRUB_CMDLINE_LINUX_DEFAULT="splash=silent quiet crashkernel=214M-:107M showopts"

      GRUB_CMDLINE_LINUXキーにresumeの記述がある場合も,同様に削除してください。

    3. grub2-mkconfigコマンドを使ってgrub.cfgを作り直します。修正したあとは,手順11 に進んでください。

      # grub2-mkconfig -o /boot/grub2/grub.cfg
  11. ストを停止します。

    次に示すコマンドを実行して,ホストを停止します。

    # shutdown -h now
  12. LU(システムディスク)へのパスを追加して,シングルパス構成からマルチパス構成に変更します。

  13. ホストを起動します。

  14. HDLMのブートディスク環境に設定できたことを確認します。

    /proc/mountsを参照して,ルート(/)にマウントされているデバイスを確認します。 次のコマンドを実行して,ルートの情報を出力してデバイスを確認してください。

    # /bin/cat /proc/mounts | /bin/grep -w / | /bin/grep -v rootfs

    出力されたデバイスを基に次の確認をします。

    • /dev/{HDLMデバイス}が出力された場合

      HDLMのブートディスク環境です。

    • その他のデバイスが出力された場合

      1. /usr/bin/readlink -f {出力されたファイル名} コマンドを実行します。

        ファイルがフルパスで出力されます。

      2. /bin/ls -l {出力されたファイル名} コマンドを実行します。

        通常ファイルではファイルサイズが表示される位置に(major, minor)が表示されます。

      3. 表示されたmajorを引数に次のコマンドを実行します。

        # /bin/cat /proc/devices | /bin/grep -w {major}
        • 出力内容にsddlmfdrvが含まれていればHDLMのブートディスク環境です。

        • 出力内容にdevice-mapperが含まれている場合

          /sbin/dmsetup ls --treeを実行して,b.で表示された(majorminor)を 持つデバイスに関連付けされたデバイスの(majorminor)を確認します。

          表示例

          # /sbin/dmsetup ls --tree
          system-usr (252:3)
            |- (251:2)
          system-var (252:4)
            |- (251:2)
          system-swap (252:1)
            |- (251:2)
          system-root (252:0)
            |- (251:2)
          system-tmp (252:2)
            |- (251:2)
          #

          上記の例では,b.で表示された(majorminor)が(252,0)の場合,関連付けられたデバイスは(251:2)=(251, 2)=(major, minor)になります。

          majorを引数に次のコマンドを実行します。

          /bin/cat /proc/devices | /bin/grep -w {major}

          出力内容にsddlmfdrvが含まれていればHDLMのブートディスク環境です。

          含まれていなければHDLMのブートディスク環境ではありません。

        • その他のデバイスが出力された場合

          HDLMのブートディスク環境ではありません。