Hitachi

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


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

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

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

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

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

ブートローダ

設定ファイル名

GRUB

BIOS

Red Hat Enterprise Linuxの場合

Oracle Unbreakable Enterprise Kernel 6の場合

/boot/grub/grub.conf

UEFI

Red Hat Enterprise Linux 6の場合

/boot/efi/EFI/redhat/grub.conf

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以降の場合は,multipath_component_detectionの値を0に設定してください。詳細は,「3.10.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.10.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をアンインストールするときに使用するため,変更前の値は控えてください。

    • 上記以外のOSの場合

      global_filterが使用できるLVM2のバージョンで,use_lvmetad=1で運用する場合は,filterではなくglobal_filterで指定してください。

      変更前

      # This section allows you to configure which block devices should
      # be used by the LVM system.
      devices {    
                                    :
      
              # filter = [ "a/.*/" ]
                                    :
      
               global_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/.*/" ]
                                    :
      
              # global_filter = [ "a/.*/" ]
                  global_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
                                    :
      }

      既存のglobal_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 6

    Red Hat Enterprise Linux 7

    Red Hat Enterprise Linux 8

    Red Hat Enterprise Linux 9

    Oracle Linux 6

    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 6

    Oracle Linux 6

    initramfs-hdlm-{kernel-version}.img

    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コマンドの出力結果です。

    ホストのOSに応じて,次の手順を実行してください。

    • 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の場合

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

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

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

        # /usr/bin/dracut /boot/initrd-3.12.28-4-default `uname -r`
    • Red Hat Enterprise Linux 6またはOracle Linux 6の場合

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

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

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

        # /sbin/dracut /boot/initramfs-hdlm-2.6.32-71.el6.i686.img `uname -r`
  10. ートローダの設定ファイルをバックアップします。

    • 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の場合

      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の指定がない場合は,この手順は不要なため,手順16に進んでください。

      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を作り直します。修正したあとは,手順16 に進んでください。

        # grub2-mkconfig -o /boot/grub2/grub.cfg
    • 上記以外のOSの場合

      ホストのOSに応じて,次の手順を実行してください。

  11. 現在の起動に使用している,ブートローダの設定ファイルに記載されている設定をコピーします。

  12. ブートローダの設定ファイルに記載されている設定の名前を変更します。

    手順11でコピーした設定の名前を変更してください。HDLMデバイス指定用だとわかるような名前を任意に付けます。

    次の下線部を変更します。

    変更前

    title Red Hat Enterprise Linux (2.6.32-71.el6.i686)

    変更後

    title Red Hat Enterprise Linux (2.6.32-71.el6.i686)_hdlm
  13. ブートローダの設定ファイルに記載されているrootの指定を編集します。

    • Red Hat Enterprise Linux 6またはOracle Linux 6の場合

      /etc/fstabファイルを参照して,ルートパーティション「/」にマウントされるデバイス名を確認してください。

      デバイス名が論理ボリューム(/dev/mapper/{VG名}-{LV名})で記述されている場合は,手順11でコピーした設定のrootの指定を,確認したデバイス名に変更します。

      1. /etc/fstabの確認結果が論理ボリュームの場合

        # vi /etc/fstab
        /dev/mapper/VolGroup00-LogVol00 / ext4 defaults 1 1
        #UUID=54a0bbd8-0362-4bc3-b3d8-00eeeb20f84d /boot ext3 defaults 1 2
        /dev/sddlmaa1 /boot ext3 defaults 1 2
        tmpfs /dev/shm tmpfs defaults 0 0
         :
         :
        

        下線部のデバイスが該当します。

      2. rootの指定を変更

        root=/dev/mapper/VolGroup00-LogVol00
    • デバイス名がHDLMデバイス名で記述されている場合は,blkidコマンドを使用して,確認したデバイスのUUIDを取得し,手順11でコピーした設定のrootの指定を,確認したUUIDに変更します。

      1. /etc/fstabの確認結果がHDLMデバイスの場合

        # vi /etc/fstab
        #UUID=750f5a45-1eb0-4bc8-9b2b-07c47283d3da / ext4 defaults 1 1
        /dev/sddlmaa2 / ext4 defaults 1 1
        #UUID=bd790215-9024-4ee5-9009-732f34d0e3cd /boot ext4 defaults 1 2
        /dev/sddlmaa1 /boot ext4 defaults 1 2
        tmpfs /dev/shm tmpfs defaults 0 0
         :
         :
        

        下線部のデバイスが該当します。

      2. 確認したデバイスのUUIDをblkidを使用して取得

        # blkid /dev/sddlmaa2
        /dev/sddlmaa2: UUID="750f5a45-1eb0-4bc8-9b2b-07c47283d3da" TYPE="ext4"
        #
        
      3. rootの指定を変更

        root=UUID=750f5a45-1eb0-4bc8-9b2b-07c47283d3da

    お,HDLMのブートディスク環境では,カーネルパラメで「root=」に記述できる書式は次の制限があるので注意してください。

    表C‒4 カーネルパラメで「root=」に記述できる書式

    OS名

    HDLMのブートディスク環境

    LVMなし

    LVMあり

    Red Hat Enterprise Linux 6

    Red Hat Enterprise Linux 7

    Red Hat Enterprise Linux 8

    Red Hat Enterprise Linux 9

    Oracle Linux 6

    Oracle Linux 7

    Oracle Linux 8

    root=UUID={UUID値}

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

    SUSE LINUX Enterprise Server 12

    SUSE LINUX Enterprise Server 15

    root=UUID={UUID値}

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

  14. 手順9で作成した初期RAMディスクイメージファイルをブートローダの設定ファイルに記載されているinitrdに指定します。

    手順11でコピーした設定のinitrdの指定を変更してください。

    initrdはブートローダによって指定の方法が異なるので注意してください。

    また,ユーザ環境に応じた任意指定のオプションが設定されている場合,オプションを削除しないように注意してください

  15. ートローダの設定ファイルを編集して,起動時に使用する設定を指定します。

    手順11でコピーした設定で起動できるように,defaultの数字を変更します。

    数字は有効なtitleが0から数えて何番目かを表します。

    1番目のtitleが有効な場合の編集例を次に示します。

     default= 0 
  16. ホストを停止します。

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

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

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

  19. 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のブートディスク環境ではありません。