ページの先頭行へ戻る
PRIMECLUSTER Global Disk Services  説明書 4.6
FUJITSU Software

D.1.5 システムディスクに関する異常【EFI】

/ (ルート)、/usr、あるいは /var といった、ファイルシステムが動作しているシステムディスクに関するトラブルへの対処方法について説明します。

以下に該当する場合は、それぞれに記載されている対処を行ってください。

(1) ルートファイルシステムなどのバックアップを採取する。

説明

システムディスクをミラーリングすることによって、一方の物理ディスクが故障したとしてもデータは保護されます。しかし、多重故障などによる致命的な障害や操作ミスによって破損されたデータを復元するためには、あらかじめバックアップを採取しておく必要があります。

対処

7.4.2 バックアップ手順【EFI】」を参照してください。


(2) システムはブートできるが、システムディスクのデータが不当である。

説明

何らかのトラブルによって、システムディスクのデータが不当となり、あらかじめ採取されたバックアップデータをリストアすることによって、復旧しなければならない場合があります。

対処

7.4.5 リストア手順 (システムがブートできる場合)【EFI】」を参照してください。


(3) システムがブートできない (主ブートディスク装置の故障)

説明

システムディスクがミラーリングされていても、ブートに失敗する場合がありえます。例えば、ブートディスク装置内にあるブート中にアクセスされるファイルの一部が物理的に破壊されている場合、あるいは不当な手順によるディスク交換が行われた場合などが該当します。
失敗したブート中のコンソールメッセージなどを調査して、本現象と推測される場合には、ミラーリングしているもう一方のブートディスク、すなわち、副ブートディスク装置からのブートを試みてください。

対処

1) EFI ブートマネージャのブートオプション選択画面に表示されるブートディスク装置の中から、副ブートディスク装置を選択してブートします。
SDX ディスク名のうち、最も上に表示されているものが主ブートディスク装置名で、それ以外の SDX ディスク名は副ブートディスク装置名です。3 多重以上のミラー構成の場合、副ブートディスク装置は複数存在します。以下の例では、Root1 が主ブートディスク装置名で、Root2、Root3 が副ブートディスク装置名です。

Root1
Root2
Root3

2) 正常にブートできた場合は、主ブートディスク装置の故障原因を調査して、ディスク交換などによる復旧を行ってください。

参照

ディスク交換の手順については、「B.1.8 sdxswap - ディスクの交換」または「7.3.1.2 操作手順」を参照してください。

上記の手順で復旧できない場合は、主ブートディスク装置のデータ異常以外に原因があるか、あるいは副ブートディスク装置のデータも異常であることが考えられます。
副ブートディスク装置のデータも異常と思われる場合は、「(5) システムがブートできない (ブートディスクのデータ破壊)。」を参照してください。


(4) システムがブートできない (全ブートディスク装置の故障)。

説明

システムディスクがミラーリングされていても、ブートに失敗する場合があります。

すべてのブートディスクが同時に物理的に故障した場合の復旧手順を、以下に説明します。

以下の手順では、ルートクラスに登録されたすべての物理ディスクを交換し、あらかじめ採取されたバックアップをもとにシステムディスクのデータを復旧して、再度ミラーリングの構築をやり直します。

また、物理ディスク故障以外の何らかの異常によってブートできなくなった場合を想定し、物理ディスクの交換やシステムディスクのデータのリストアを行わずに、ミラーリングの設定を解除してブートできるように復旧する方法も説明します。

注意

正常なシステムでシステムディスクのミラーリングを解除する場合は、「9.4 システムディスクミラーリングの解除【EFI】」の手順で解除してください。

注意

本手順に従って復旧を行うためには、システムディスクミラーリングの設定時に、以下の情報を採取しておく必要があります。

  • システムディスクのパーティション構成

  • システムディスクのバックアップ

詳細は、「6.5 システムディスクミラーリングの設定【EFI】」を参照してください。

対処

以下の手順に従って、復旧します。

1) ルートクラスに登録されている物理ディスクをすべて交換します。交換作業は、各装置で定められた手順に従って実施してください。

ディスクが故障していない場合、本作業は必要ありません。

2) CD-ROM装置からシステムをブートします。

3) 交換したシステムディスクを交換前のパーティション構成に戻します。

参照

partedコマンドの詳細については、parted(8)のマニュアルを参照してください。

3-1) partedコマンドを起動します。

# parted /dev/sda

3-2) mklabelサブコマンドを使用して、GPT形式のディスクラベル(パーティションテーブル)を作成します。

(parted) mklabel gpt

3-3) システムディスクのミラーリング設定を行う前に、「6.5 システムディスクミラーリングの設定【EFI】」の手順1)で確認したパーティション構成に従って、パーティションを作成します。

3-3-1) mkpartサブコマンドを使用して、パーティションを作成します。

3-3-2) bootパーティションを設定します。

例:ファイルシステムタイプがFATのパーティションの番号が 1 の場合

(parted) set 1 boot on

3-4) printサブコマンドを使用し、パーティション構成が「6.5 システムディスクミラーリングの設定【EFI】」の手順1) で確認した構成と同じであることを確認します。

(parted) print
Disk /dev/sdf: 34.4GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name                  Flags
 1      1049kB  630MB   629MB   fat32        EFI System Partition  boot, esp
 2      630MB   15.0GB  14.4GB  xfs
 3      15.0GB  17.0GB  2000MB  xfs
 4      17.0GB  19.0GB  2001MB  xfs
 5      19.0GB  21.0GB  2000MB  xfs
 6      21.0GB  23.0GB  2001MB  xfs
 7      23.0GB  25.0GB  2000MB  linux-swap(v1)                     swap

注意

手順1)でディスクを交換しなかった場合、GDSの占有スライスが残ったままになります。このとき、printサブコマンドを実行すると、GDSの占有スライスが表示されます。print サブコマンドで表示されるパーティションのうち、「6.5 システムディスクミラーリングの設定【EFI】」の手順1) で確認したパーティション以外のパーティションが、GDS の占有スライスです。この場合、partedコマンドのrmサブコマンドで、GDSの占有スライスを削除します。

例:占有スライスのパーティション番号 (Minor フィールドに表示される番号)が 8 の場合

(parted) rm 8

注意

手順1)でミラー先のディスクを交換しなかった場合、ミラー先のディスクのパーティションをすべて削除します。

例:ミラー先のディスクが/dev/sdcの場合

parted /dev/sdc
(parted) rm 1
(parted) rm 2
(parted) rm 3
(parted) rm 4
(parted) rm 5
(parted) rm 6
(parted) rm 7
(parted) rm 8

3-5) partedコマンドを終了します。

(parted) quit

4) テープ媒体などに採取されたバックアップデータを、それぞれの物理スライスへリストアします。

本作業は、手順1) で物理ディスクを交換した場合や、システムディスクのデータが不正になった場合に行います。

参照

リストア方法については、OS、リストアするファイルシステム、および使用するコマンドのマニュアルを参照してください。


5) システムディスクのミラーリング設定を解除します。

5-1) EFIシステムパーティションとルートパーティションをマウントします。
以下の例では、一時的なマウントポイントとして、/work/efi、/work/root、および /work/boot ディレクトリを使用します。

# mkdir /work
# mkdir /work/efi
# mkdir /work/root
# mkdir /work/boot
# mount /dev/sda7 /work/efi
# mount /dev/sda5 /work/root
# mount /dev/sda6 /work/boot

参考

システムディスクのミラーリングを行った後、initrdファイルが更新される操作(カーネルのアップデートなど)を一度も行っていない場合、手順5-2)、5-3)の代わりに、後述の参考「initrdファイルが更新されていない場合のgrub.cfgファイルの編集方法」の手順を実施すると、より簡単かつ短時間で設定を解除できます。

この手順は、initrdファイルが更新される操作を行っていないことが確実な場合にだけ実施してください。それ以外の場合は、以下の5-2)~5-12)の手順を実施してください。

5-2) initrdファイルからGDSの情報を削除します。

5-2-1) エントリ名を確認します。
/work/efi/EFI/redhat/grub.cfgファイルのset default行に記載されているエントリ名を確認します。

# more /work/efi/EFI/redhat/grub.cfg
### BEGIN /etc/grub.d/00_header ###
set pager=1

if [ -s $prefix/grubenv ]; then
  load_env
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="GDS sysvol entry"
fi

5-2-2) initrdファイル名を確認します。
grub.cfgファイルのエントリのうち、手順5-2-1)で確認したエントリのinitrdファイル名を確認します。

以下の例では、initrdファイル名は initramfs-3.10.0-123.el7.x86_64.imgです。

# more /work/efi/EFI/redhat/grub.cfg
menuentry 'GDS sysvol entry' --class red --class gnu-linux --class gnu --class os --unrestricted { (*1) load_video set gfxpayload=keep insmod gzio insmod part_gpt insmod xfs insmod regexp regexp -s device '(hd[^,]+)' set root="$device,gpt2" linuxefi /vmlinuz-3.10.0-123.el7.x86_64 root=/dev/sfdsk/gdssys2 ro vconsole.keymap=jp106 crashkernel=auto vconsole.font=latarcyrheb-sun16 rhgb quiet LANG=ja_JP.UTF-8 rd.driver.post=sfdsksys initrdefi /initramfs-3.10.0-123.el7.x86_64.img (*2) }
(*1) 手順5-2-1)で確認したエントリ名
(*2) initrdファイル名

5-2-3) /work/root ディレクトリに、作業ディレクトリを2つ作成します。

既存のディレクトリとは異なる名前のディレクトリを作成してください。

# mkdir /work/root/作業ディレクトリ1
# mkdir /work/root/作業ディレクトリ2

5-2-4) initrdファイルを各作業ディレクトリに展開します。

以下の手順で、手順5-2-3) で作成した作業ディレクトリに initrd ファイルを展開します。

/work/root にマウントしたファイルシステムに十分な空き容量が無く、以下の手順において "no space left on device" のメッセージが出力された場合は、空き容量がある他のファイルシステムをマウントして作業ディレクトリを作成し、initrd ファイルを展開してください。

1) initrdファイルにEarly CPIO imageが含まれるかを確認します。

以下のコマンドを実行して、Early CPIO imageと出力された場合、initrdファイルにEarly CPIO imageが含まれています。

# /work/root/usr/bin/lsinitrd /work/boot/initramfs-3.10.0-123.el7.x86_64.img \
(*1)
2>/dev/null | grep -e "^Early CPIO image"
(*1) 手順5-2-2)で確認したinitrdファイル名

2) initrdファイルにEarly CPIO imageが含まれている場合、以下の手順でinitrdファイルを展開します。

# cd /work/root/作業ディレクトリ1
# cpio -idm < /work/boot/initramfs-3.10.0-123.el7.x86_64.img (*1)
# cd /work/root/作業ディレクトリ2 # /work/root/usr/lib/dracut/skipcpio /work/boot/initramfs-3.10.0-123.el7.x86_64.img \
| gunzip -c - | cpio -idm (*1)
(*1) 手順5-2-2)で確認したinitrdファイル名

3) initrdファイルにEarly CPIO imageが含まれていない場合、以下の手順でinitrdファイルを展開します。

# cd /work/root/作業ディレクトリ2
# gunzip -c /work/boot/initramfs-3.10.0-123.el7.x86_64.img | cpio -idm
                                                        (*1)
(*1) 手順5-2-2)で確認したinitrdファイル名

5-2-5) 展開されたinitrdから、GDSのドライバを削除します。

# rm /work/root/作業ディレクトリ2/lib/modules/3.10.0-123.el7.x86_64/extra/FJSVsdx-drvcore/sfdsksys.ko
# rm /work/root/作業ディレクトリ2/lib/modules/3.10.0-123.el7.x86_64/extra/FJSVsdx-drvcore/sfdsk_lib.ko

5-2-6) 展開されたinitrdから、GDSのドライバを読み込むシェルスクリプトを削除します。

以下のファイルが存在する場合、削除します。

# rm /work/root/作業ディレクトリ2/sbin/ins_sfdsksys.sh
# rm /work/root/作業ディレクトリ2/usr/lib/dracut/hooks/cmdline/01-parse-ins_sfdsksys.sh

5-2-7) 編集したinitrdを圧縮します。

1) 手順5-2-4)の1)でinitrdファイルにEarly CPIO imageが含まれていた場合、以下の手順でinitrdを圧縮します。

# cd /work/root/作業ディレクトリ1
# find . -print0 | cpio --null -H newc -o --quiet > /work/boot/initrd-new.img
# cd /work/root/作業ディレクトリ2
# find . -print0 | cpio --null -H newc -o --quiet | gzip -9 >> /work/boot/initrd-new.img

2) 手順5-2-4)の1)でinitrdファイルにEarly CPIO imageが含まれていなかった場合、以下の手順でinitrdを圧縮します。

# cd /work/root/作業ディレクトリ2
# find . -print0 | cpio --null -H newc -o --quiet | gzip -9 > /work/boot/initrd-new.img

5-2-8) 手順5-2-3)で作成した作業ディレクトリを削除します。

# cd /
# rm -rf /work/root/作業ディレクトリ1
# rm -rf /work/root/作業ディレクトリ2

5-2-9) 手順5-2-7)で圧縮したinitrdファイルを、EFIシステムパーティションに配置します。

手順5-2-2)で確認したinitrdファイルをバックアップしてから、手順5-2-7)で圧縮したinitrdファイルを手順5-2-2)で確認したinitrdファイルと同じファイル名で配置します。

# cd /work/boot
# mv initramfs-3.10.0-123.el7.x86_64.img initramfs-3.10.0-123.el7.x86_64.img.gdsbak
# mv /work/boot/initrd-new.img /work/boot/initramfs-3.10.0-123.el7.x86_64.img

5-3) grub.cfgファイルを編集します。

# vim /work/efi/EFI/redhat/grub.cfg

grub.cfgファイルのエントリのうち、手順5-2-1)で確認したエントリを、以下のように変更します。

(*1) 手順5-2-1)で確認したエントリ名
(*2) rootデバイス名を、GDSの論理ボリュームのパスから UUID に変更
     (UUID は blkid コマンドで確認できます)
(*3) rd.driver.post=sfdsksysの記述を削除

参考

initrdファイルが更新されていない場合のgrub.cfgファイルの編集方法

システムディスクのミラーリングを行った後、initrdファイルが更新される操作(カーネルのアップデートなど)を一度も行っていない場合、手順5-2)、5-3)を実行せず、代わりに以下の手順を実行することで、より簡単かつ短時間で設定を解除できます。

  1. エントリ名を確認します。
    /work/efi/EFI/redhat/grub.cfgファイルのset default行に記載されているエントリ名を確認します。

    ### BEGIN /etc/grub.d/00_header ###
    set pager=1
    
    if [ -s $prefix/grubenv ]; then
      load_env
    fi
    if [ "${next_entry}" ] ; then
       set default="${next_entry}"
       set next_entry=
       save_env next_entry
       set boot_once=true
    else
       set default="GDS sysvol entry"
    fi
  2. grub.cfgファイルを編集します。

    # vim /work/efi/EFI/redhat/grub.cfg

    grub.cfgファイルに記述されている、システムディスクのミラーリング設定後のカーネルイメージの設定を、システムディスクのミラーリングを行わない設定に変更します。grub.cfgファイルのエントリのうち、手順1.で確認したエントリが、システムディスクのミラーリング設定後のカーネルイメージの設定です。以下に例を示します。

    • 編集前の例

      menuentry 'GDS sysvol entry' --class red --class gnu-linux --class gnu  --class os --unrestricted {
                              (*1)
              load_video
              set gfxpayload=keep
              insmod gzio
              insmod part_gpt
              insmod xfs
              insmod regexp
              regexp -s device '(hd[^,]+)'
              set root="$device,gpt2"
              linuxefi /vmlinuz-3.10.0-123.el7.x86_64 root=/dev/sfdsk/gdssys2
                                                                          (*2)
              ro vconsole.keymap=jp106 crashkernel=auto
              vconsole.font=latarcyrheb-sun16 rhgb quiet LANG=ja_JP.UTF-8
              rd.driver.post=sfdsksys
                                  (*3)
              initrdefi /initramfs-3.10.0-123.el7.x86_64.img 
                                                         (*4)
      }
    • 編集後の例

      menuentry 'GDS sysvol entry' --class red --class gnu-linux --class gnu  --class os --unrestricted {
                              (*1)
              load_video
              set gfxpayload=keep
              insmod gzio
              insmod part_gpt
              insmod xfs
              insmod regexp
              regexp -s device '(hd[^,]+)'
              set root="$device,gpt2"
              linuxefi /vmlinuz-3.10.0-123.el7.x86_64 root=UUID=ef9cab98-5b1d-4fe2-89e6-4e1548778338
                                                                                                 (*2)
              ro vconsole.keymap=jp106 crashkernel=auto
              vconsole.font=latarcyrheb-sun16 rhgb quiet LANG=ja_JP.UTF-8
              initrdefi /initramfs-3.10.0-123.el7.x86_64.img.gdsbak
                                                                (*4)
      }
      (*1) 手順1.で確認したエントリ名
      (*2) rootデバイス名を、GDSの論理ボリュームのパスから UUID に変更
           (UUID は blkid コマンドで確認できます)
      (*3) rd.driver.post=sfdsksysの記述を削除
      (*4) initrdファイル名の最後に.gdsbakを付加

5-4) fstabファイルを編集します。

# vim /work/root/etc/fstab

fstabファイルに記述されている、ルートクラスのボリュームのマウント設定行を、交換したシステムディスクのパーティション構成に合わせて編集します。以下に例を示します。

5-5) dracut.confファイルを編集します。本手順は、PH15096 の修正が適用されている場合は不要です。

# vim /work/root/etc/dracut.conf

dracut.confファイルから、GDSのドライバの記述を削除します。

(*1) GDSのドライバの記述
(*2) 半角1文字分の空白を残し、sfdsksysを削除

5-6) /etc/default/grubファイルを編集します。
/etc/default/grubファイルのGRUB_DEFAULTの設定を変更します。また、rd.driver.post=sfdsksysの記述を削除します。

# vim /work/root/etc/default/grub
(*1) 手順5-2-2)で確認したinitrdファイル名に含まれるカーネル版数

5-7) 以下のディレクトリが存在する場合、削除します。

5-8) root_mknod.shファイルの権限を変更します。

# chmod 400 /work/root/etc/opt/FJSVsdx/RootMirror/root_mknod.sh

5-9) EFI環境変数に設定されているGDSの構成データベースの情報を削除します。

# cd /sys/firmware/efi/vars/
# cat sysvol-db2-*/raw_var > del_var

5-10) EFIシステムパーティションとルートパーティションのマウントを解除します。

# cd /
# umount /work/efi
# umount /work/root
# umount /work/boot
# rmdir /work/efi
# rmdir /work/root
# rmdir /work/boot
# rmdir /work

5-11) システムを再起動します。

# shutdown -r now

5-12) システム再起動後、grub.cfgファイルを更新するため、以下のコマンドを実行します。

# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

6) EFIブートマネージャ (PRIMEQUEST 3000の場合はBIOS) のブートオプションに、交換したブートディスクを追加します。
手順は、OSのバージョンによって異なります。


6-1) EFIブートマネージャのブートオプション選択画面 (PRIMEQUEST 3000の場合はBIOSのBootタブ) で、[Boot Maintenance Manager] を選択します。

6-2) Boot Maintenance Manager画面で、[Boot Options] を選択します。

6-3) Boot Options画面で、[Add Boot Option] を選択します。

6-4) Add Boot Option画面が表示されたら、交換したブートディスクをブートオプションに追加します。

  1. デバイスの一覧から、/dev/sda に対応するデバイスを選択します。

    デバイスの認識方法については、EFIのマニュアルを参照してください。

  2. 選択したディスクのルートディレクトリの内容が表示された後、"EFI"を選択します。

  3. EFIディレクトリの内容が表示された後、"redhat"を選択します。

  4. redhatディレクトリの内容が表示された後、"shim.efi" (RHEL7 の場合) または "shimx64.efi" (RHEL8 の場合) を選択します。

  5. "Input the description"を選択します。

  6. ラベルに使用する文字列を入力します。

    ここでは"New_sda"とします。

  7. "Commit Changes and Exit"を選択します。

  8. PRIMEQUEST 3000の場合、[Esc] を入力し [Boot Options] を終了します。

  9. [Esc] を入力し [Boot Maintenance Manager] を終了します。

6-5) PRIMEQUEST 3000の場合、BIOS の Exit タブで [Boot Override] を選択します。

PRIMEQUEST 3000以外の場合、EFIブートマネージャのブートオプション選択画面で [Boot Manager] を選択します。

6-6) オプション選択画面 (PRIMEQUEST 3000の場合はBoot Override画面) で、手順6-4)の6.で入力したラベル名を選択し、ブートします。


7) EFIブートマネージャのブートオプションから、SDXディスクの項目を削除します。

参照

efibootmgrコマンドの詳細については、efibootmgrコマンドのマニュアルを参照してください。

7-1) 現在の EFIブートマネージャの設定を確認します。

# efibootmgr
BootCurrent: 0000
Timeout: 5 seconds
BootOrder: 0001,0002,0000
Boot0000* sda
Boot0001* RootDisk1
Boot0002* RootDisk2

この例では、項番 0001 の RootDisk1 と、項番 0002 の RootDisk2 が SDXディスクの項目です。

7-2) ブートオプションから SDXディスクの項目を削除します。

# efibootmgr -B -b 0001
BootCurrent: 0000
Timeout: 5 seconds
BootOrder: 0002,0000
Boot0000* sda
Boot0002* RootDisk2
# efibootmgr -B -b 0002
BootCurrent: 0000
Timeout: 5 seconds
BootOrder: 0000
Boot0000* sda

8) システムディスクのミラーリングを再設定します。

参照

設定方法については、「6.5 システムディスクミラーリングの設定【EFI】」以下を参照してください。


(5) システムがブートできない (ブートディスクのデータ破壊)

説明

何らかのトラブルによって、システムディスクのデータが不当となり、あらかじめ採取されたバックアップデータからの復旧が必要となる場合があります。
副ブートディスク装置からの復旧に失敗した場合は、以下の手順で復旧してください。

対処

7.4.6 リストア手順 (システムがブートできない場合)【EFI】」を参照してください。


(6) システムがブートできない (errataカーネルの削除)。

説明

システムディスクをミラーリングしている環境でerrataカーネルを削除した後、システムを再起動する前にgrub2-mkconfigコマンドでgrub.cfgファイルを更新しなかった場合、システムが起動できなくなることがあります。

参照

errataカーネル削除時の注意事項については、「7.18 errataカーネルの削除」を参照してください。

対処

1) EFIブートマネージャのブートオプション選択画面で "GDS sysvol entry for Red Hat Enterprise Linux Server, ..."の形式のブートエントリを選択してシステムを起動します。

2) システムが起動した後、grub.cfgファイルを更新するため、grub2-mkconfigコマンドを実行します。

# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

3) 手順1)で該当するブートエントリがなかった場合、「(4) システムがブートできない (全ブートディスク装置の故障)。」に従って復旧してください。なお、ディスクを交換する必要はありません。