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
SUSE LINUX Enterprise Server 11の場合 /boot/grub/menu.lst
UEFI Red Hat Enterprise Linux 6の場合 /boot/efi/EFI/redhat/grub.conf
GRUB2 BIOS Red Hat Enterprise Linux 7の場合
Red Hat Enterprise Linux 8の場合
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

  1. Linuxに,root権限を持つユーザでログインします。
  2. HDLMをインストールします。
    3.6.3 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 8,Oracle Linux 8またはSUSE LINUX Enterprise Server 15 SP2以降の場合
      変更前
      # 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,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,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
    Oracle Linux 6
    Oracle Linux 7
    Oracle Linux 8
    /dev/{HDLMデバイス} /dev/mapper/{VG名}-{LV名}
    SUSE LINUX Enterprise Server 11 /dev/{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
      • 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
    SUSE LINUX Enterprise Server 11 initrd-{kernel-version}.hdlm
    Red Hat Enterprise Linux 7
    Red Hat Enterprise Linux 8
    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,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`
         
    • 上記以外のOSの場合
      ブートディスクサポートユティリティ(dlmmkinitrd)を実行します。
      dlmmkinitrdユティリティについては,「7.6 dlmmkinitrd ブートディスクサポートユティリティ」を参照してください。
  10. ブートローダの設定ファイルをバックアップします。
    • SUSE LINUX Enterprise Server 12,SUSE LINUX Enterprise Server 15,Red Hat Enterprise Linux 7,Red Hat Enterprise Linux 8,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
    • SUSE LINUX Enterprise Server 11の場合
      /etc/fstabファイルを参照して,ルートパーティション「/」にマウントされるデバイス名を確認してください。
      手順11でコピーした設定のrootの指定を,確認したデバイス名に変更します。

      1. /etc/fstabの確認結果
        # vi /etc/fstab
        /dev/VolGroup00/LogVol00 / ext3 acl,user_xattr 1 1
        #/dev/disk/by-id/scsi-360030130f0900000100f679d0c56ab36-part1 /boot ext3 defaults 1 2
        /dev/sddlmaa1 /boot ext3 defaults 1 2
        proc /proc proc defaults 0 0
         :
         :
        
        下線部のデバイスが該当します。
      2. rootの指定を変更
        root=/dev/VolGroup00/LogVol00
        もし,確認したデバイス名がHDLMデバイス名の場合は,HDLMデバイス名を指定してください。
        root=/dev/sddlmaa2
    なお,HDLMのブートディスク環境では,カーネルパラメタで「root=」に記述できる書式は次の制限があるので注意してください。

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

    OS名 HDLMのブートディスク環境
    LVMなし LVMあり
    Red Hat Enterprise Linux 6
    Red Hat Enterprise Linux 7
    Red Hat Enterprise Linux 8
    Oracle Linux 6
    Oracle Linux 7
    Oracle Linux 8
    root=UUID={UUID値} root=UUID={UUID値}または, root=/dev/mapper/{VG名}-{LV名}
    SUSE LINUX Enterprise Server 11 root=/dev/{HDLMデバイス} root=/dev/{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はブートローダによって指定の方法が異なるので注意してください。
    また,ユーザ環境に応じた任意指定のオプションが設定されている場合,オプションを削除しないように注意してください。
    • SUSE LINUX Enterprise Server 11の場合
      Xen対応のカーネルを使用している場合は,moduleで指定されたinitrdファイル名を手順9で作成した初期RAMディスクイメージファイルに変更してください。Xen対応のカーネルは,「表3-68 HDLMがサポートするXenハイパーバイザの動作環境」を参照してください。
      手順11でコピーした設定に記載されている,resumeの設定を削除してください。カーネルパラメタにresumeが設定されている場合,HDLMではresumeをサポートしていないため,resumeの設定を削除してください。
  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のブートディスク環境ではありません。