6.19.2.1.3 Exadata X8M-2でのKVMホストのリカバリ

この手順では、Oracle Exadata X8M-2データベース・サーバーのKVMホストをリカバリする方法について説明します。

  1. サーバーを診断モードで起動します。
    Oracle Exadata System Softwareユーザーズ・ガイド診断ISOファイルを使用したサーバーの起動を参照してください。
  2. 診断シェルにrootユーザーとしてログインします。
    プロンプトが表示されたら、診断シェルに入ります。

    次に例を示します:

    Choose from following by typing letter in '()':
    (e)nter interactive diagnostics shell. Must use credentials 
    from Oracle support to login (reboot or power cycle to exit
    the shell),
    (r)estore system from NFS backup archive, 
    Type e to enter the diagnostics shell and log in as the root user.
    プロンプトが表示されたら、rootユーザーとしてシステムにログインします。rootユーザーのパスワードの入力を求められ、それが不明である場合は、Oracleサポート・サービスに連絡してください。
  3. 必要に応じて、/opt/MegaRAID/storcli/storcli64を使用して、ディスク・コントローラを構成してディスクを設定します。
  4. 障害の発生後に論理ボリューム、ボリューム・グループおよび物理ボリュームが存在する場合は、それらを削除します。
    # lvm vgremove VGExaDb --force
    # lvm pvremove /dev/sda3 --force
  5. 既存のパーティションを削除し、すべてのパーティションが削除されたことを確認します。次のスクリプトを使用できます。
    # for v_partition in $(parted -s /dev/sda print|awk '/^ / {print $1}')
    do
      parted -s /dev/sda rm ${v_partition}
    done
     
    # parted  -s /dev/sda unit s print
    Model: AVAGO MR9[ 2783.921605]  sda:361-16i (scsi)
    Disk /dev/sda: 3509760000s
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags:  
    
    Number  Start   End  Size  File system Name  Flags
  6. 3つのパーティションを/dev/sdaに作成します
    1. ディスク/dev/sdaの終了セクターを実行中のKVMホストから取得し、変数に保存します:
      # end_sector_logical=$(parted -s /dev/sda unit s print|perl -ne '/^Disk\s+\S+:\s+(\d+)s/
                and print $1')
      # end_sector=$( expr $end_sector_logical - 34 )
      # echo $end_sector
      次のコマンドの開始および終了セクターの値は、既存のKVMホストから取得されたものです。これらの値は時間とともに変化することがあるため、この手順を実行するとき、これらの値をKVMホストから確認することをお薦めします。たとえば、Oracle Exadata Database Machine X8M-2データベース・サーバーの場合は、次のように表示されます。
      # parted -s /dev/sda  unit s print
      Model:  AVAGO MR9361-16i (scsi)
      Disk  /dev/sda: 7025387520s
      Sector  size (logical/physical): 512B/512B
      Partition  Table: gpt
      Disk  Flags:  
      Number   Start     End         Size         File system   Name     Flags  
      1        64s       1048639s    1048576s     xfs           primary  boot  
      2        1048640s  1572927s    524288s      fat32         primary  boot  
      3        1572928s  7025387486s 7023814559s                primary  lvm
    2. ブート・パーティション/dev/sda1を作成します。
      # parted -s /dev/sda  mklabel gpt mkpart primary 64s 1048639s set 1 boot on
    3. efiブート・パーティション/dev/sda2を作成します。
      # parted -s /dev/sda  mkpart primary fat32 1048640s 1572927s set 2 boot on
    4. 論理ボリューム/dev/sda3を保持するパーティションを作成します。
      # parted -s /dev/sda mkpart primary 1572928s ${end_sector}s set 3 lvm on
    5. すべてのパーティションが作成されたことを確認します。
      # parted -s /dev/sda unit s print
      Model: AVAGO MR9[2991.834796]  sda: sda1 sda2 sda3
      361-16i(scsi)
      Disk /dev/sda:3509760000s
      Sector size(logical/physical): 512B/512B
      Partition Table:gpt
      Disk Flags:
      Number  Start    End            Size          File system    Name    Flags 
      1       64s      1048639s       1048576s      xfs            primary boot 
      2       1048640s 1572927s       524288s       fat32          primary boot   
      3       1572928s 3509759966s    3508187039s                  primary lvm
  7. 論理ボリュームおよびファイル・システムを作成します。
    1. 物理ボリュームおよびボリューム・グループを作成します。
      # lvm pvcreate /dev/sda3
      # lvm vgcreate VGExaDb /dev/sda3
    2. 最初のシステム・パーティションを含むファイル・システムの論理ボリュームを作成してラベル付けし、その論理ボリュームにxfsファイル・システムを構築します。
      # lvm lvcreate -n LVDbSys1 -L15G VGExaDb -y
      # mkfs.xfs -L DBSYS /dev/VGExaDb/LVDbSys1 -f
    3. スワップ・ディレクトリの論理ボリュームを作成して、ラベルを付けます。
      # lvm lvcreate -n LVDbSwap1 -L16G VGExaDb -y
      # mkswap -L SWAP /dev/VGExaDb/LVDbSwap1
    4. 2つ目のシステム・パーティションの論理ボリュームを作成し、その論理ボリュームにxfsファイル・システムを構築します。
      # lvm lvcreate -n LVDbSys2 -L15G VGExaDb -y
      # mkfs.xfs /dev/VGExaDb/LVDbSys2
    5. HOMEパーティションの論理ボリュームを作成してラベル付けし、その論理ボリュームにxfsファイル・システムを構築します。
      # lvm lvcreate -n LVDbHome -L4G VGExaDb -y
      # mkfs.xfs -L HOME /dev/VGExaDb/LVDbHome
    6. tmpパーティションの論理ボリュームを作成し、その論理ボリュームにxfsファイル・システムを構築します。
      # lvm lvcreate -n LVDbTmp -L3G VGExaDb -y
      # mkfs.xfs -L TMP /dev/VGExaDb/LVDbTmp -f
    7. 最初のvarパーティションの論理ボリュームを作成し、その論理ボリュームにxfsファイル・システムを構築します。
      # lvm lvcreate -n LVDbVar1 -L2G VGExaDb -y
      # mkfs.xfs -L VAR /dev/VGExaDb/LVDbVar1 -f
    8. 2つ目のvarパーティションの論理ボリュームを作成し、その論理ボリュームにxfsファイル・システムを構築します。
      # lvm lvcreate -n LVDbVar2 -L2G VGExaDb -y
      # mkfs.xfs /dev/VGExaDb/LVDbVar2 -f
    9. LVDbVarLogパーティションの論理ボリュームを作成してラベル付けし、その論理ボリュームにxfsファイル・システムを構築します。
      # lvm lvcreate -n LVDbVarLog -L18G VGExaDb -y
      # mkfs.xfs -L DIAG /dev/VGExaDb/LVDbVarLog -f
    10. LVDbVarLogAuditパーティションの論理ボリュームを作成してラベル付けし、その論理ボリュームにxfsファイル・システムを構築します。
      # lvm lvcreate -n LVDbVarLogAudit -L1G VGExaDb -y
      # mkfs.xfs -L AUDIT /dev/VGExaDb/LVDbVarLogAudit -f
    11. LVDoNotRemoveOrUse論理ボリュームを作成します。
      # lvm lvcreate -n LVDoNotRemoveOrUse -L2G VGExaDb -y
    12. ゲスト記憶域リポジトリの論理ボリュームを作成し、その論理ボリュームにxfsファイル・システムを構築します。
      # lvm lvcreate -n LVDbExaVMImages -L1500G VGExaDb -y
      # mkfs.xfs -m crc=1 -m reflink=1 -L EXAVMIMAGES /dev/VGExaDb/LVDbExaVMImages -f
    13. /dev/sda1パーティションにファイル・システムを作成し、ラベルを付けます。
      # mkfs.xfs -L BOOT /dev/sda1 -f
    14. /dev/sda2パーティションにファイル・システムを作成し、ラベルを付けます。
      # mkfs.vfat -v -c -F 32 -s 2 /dev/sda2
      # dosfslabel /dev/sda2 ESP
  8. すべてのパーティションのマウント・ポイントを作成して、各パーティションをマウントします。
    たとえば、/mntが最上位ディレクトリとして使用されると、マウントされるパーティションのリストは次のようになります。
    /dev/VGExaDb/LVDbSys1 on /mnt
    /dev/sda1 on /mnt/boot
    /dev/sda2 on /mnt/boot/efi
    /dev/VGExaDb/LVDbHome on /mnt/home
    /dev/VGExaDb/LVDbTmp on /mnt/tmp
    /dev/VGExaDb/LVDbVar1 on /mnt/var
    /dev/VGExaDb/LVDbVarLog on /mnt/var/log
    /dev/VGExaDb/LVDbVarLogAudit on /mnt/var/log/audit
    /dev/VGExaDb/LVDbExaVMImages on /mnt/EXAVMIMAGES
    次の例では、システム・パーティションをマウントし、ブート・パーティション用に2つのマウント・ポイントを作成します
    # mount /dev/VGExaDb/LVDbSys1 /mnt -t xfs
    # mkdir /mnt/boot
    # mount /dev/sda1 /mnt/boot -t xfs
    # mkdir /mnt/boot/efi
    # mount /dev/sda2 /mnt/boot/efi -t vfat
    # mkdir /mnt/home
    # mount /dev/VGExaDb/LVDbHome /mnt/home -t xfs
    # mkdir /mnt/tmp
    # mount /dev/VGExaDb/LVDbTmp /mnt/tmp -t xfs
    # mkdir /mnt/var
    # mount /dev/VGExaDb/LVDbVar1 /mnt/var -t xfs
    # mkdir /mnt/var/log
    # mount /dev/VGExaDb/LVDbVarLog /mnt/var/log -t xfs
    # mkdir /mnt/var/log/audit
    # mount /dev/VGExaDb/LVDbVarLogAudit /mnt/var/log/audit -t xfs
    # mkdir /mnt/EXAVMIMAGES
    # mount /dev/VGExaDb/LVDbExaVMImages /mnt/EXAVMIMAGES -t xfs
  9. eth0でネットワークを起動し、(DHCPを使用していない場合は)ホストのIPアドレスおよびネットマスクを割り当てます。DHCPを使用している場合は、ホストのIPアドレスを手動で構成します。
    # ip link set eth0 up
    # ip address add ip_address_for_eth0/netmask_for_eth0 dev eth0
    # ip route add default via gateway_ip_address dev eth0
  10. バックアップを保持するNFSサーバーをマウントします。
    # mkdir -p /root/mnt
    # mount -t nfs -o ro,intr,soft,proto=tcp,nolock nfs_ip:/location_of_backup  /root/mnt
  11. バックアップからファイルをリストアします。

    スナップショットベースのバックアップを使用したKVMホストのバックアップの手順を使用してバックアップが作成されている場合、次のコマンドを使用してファイルをリストアできます。

    # tar --acls --xattrs --xattrs-include=* --format=pax -pjxvf /root/mnt/myKVMbackup.tar.bz2 -C /mnt
  12. kdumpサービス用のディレクトリを作成します
    # mkdir /mnt/EXAVMIMAGES/crashfiles
  13. efibootmgrを使用して起動デバイスを設定します。
    1. Oracle Linuxの起動デバイスを無効にして削除します。
      エントリExadataLinux_1が表示された場合、このエントリを削除して再作成します。次に例を示します:
      # efibootmgr
      BootCurrent:  0000
      Timeout:  1 seconds
      BootOrder: 0000,0001,000A,000B,0007,0008,0004,0005
      Boot0000*  ExadataLinux_1
      Boot0001*  NET0:PXE IP4 Intel(R) I210 Gigabit Network Connection
      Boot0004*  PCIE1:PXE IP4 Oracle dual 25Gb Ethernet Adapter or dual 10Gb Ethernet Adapter
      Boot0005*  PCIE1:PXE IP4 Oracle dual 25Gb Ethernet Adapter or dual 10Gb Ethernet  Adapter
      Boot0007*  NET1:PXE IP4 Oracle Dual Port 10Gb/25Gb SFP28 Ethernet Controller
      Boot0008*  NET2:PXE IP4 Oracle Dual Port 10Gb/25Gb SFP28 Ethernet Controller
      Boot000A   PCIE2:PXE IP4 Mellanox Network Adapter - 50:6B:4B:CB:EF:F2
      Boot000B   PCIE2:PXE IP4 Mellanox Network Adapter - 50:6B:4B:CB:EF:F3
      MirroredPercentageAbove4G:  0.00
      MirrorMemoryBelow4GB:  false    
      この例では、ExadataLinux_1 (Boot000)は無効になり削除されます。次のコマンドを使用して、起動デバイスを無効にして削除します。

      古いExadataLinux_1を無効にします。

      # efibootmgr -b 0000 -A
      古いExadataLinux_1を削除します。
      # efibootmgr -b 0000 -B
    2. ExadataLinux_1の起動エントリを再作成してから、起動順序エントリを表示します。
      # efibootmgr -c -d /dev/sda  -p 2 -l '\EFI\REDHAT\SHIM.EFI' -L 'ExadataLinux_1'
      # efibootmgr
      BootCurrent:  0000
      Timeout:  1 seconds
      BootOrder: 0000,0001,0007,0008,0004,0005,000B,000C
      Boot0000*  ExadataLinux_1
      Boot0001*  NET0:PXE IP4 Intel(R) I210 Gigabit Network Connection
      Boot0004*  PCIE1:PXE IP4 Oracle dual 25Gb Ethernet Adapter or dual 10Gb Ethernet  Adapter
      Boot0005*  PCIE1:PXE IP4 Oracle dual 25Gb Ethernet Adapter or dual 10Gb Ethernet  Adapter
      Boot0007*  NET1:PXE IP4 Oracle Dual Port 10Gb/25Gb SFP28 Ethernet Controller
      Boot0008*  NET2:PXE IP4 Oracle Dual Port 10Gb/25Gb SFP28 Ethernet Controller
      Boot000B*  PCIE2:PXE IP4 Mellanox Network Adapter - EC:0D:9A:CC:1E:46
      Boot000C*  PCIE2:PXE IP4 Mellanox Network Adapter - EC:0D:9A:CC:1E:47
      MirroredPercentageAbove4G: 0.00
      MirrorMemoryBelow4GB: false
    3. efibootmgrコマンドの出力で、ExadataLinux_1の起動順序番号をノートにとり、次のコマンドでその値を使用します。
      # efibootmgr -b entry number -A
      # efibootmgr -b entry number -a
      たとえば、ステップ13.bで表示された前の出力では、ExadataLinux_1は(Boot0000)としてリストされていました。したがって、次のコマンドを使用します。
      # efibootmgr -b 0000 -A
      # efibootmgr -b 0000 -a
    4. 正しい起動順序を設定します。最初の起動デバイスとしてExadataLinux_1を設定します。
      残りのデバイスの起動順序は同じに保つ必要があります
      # efibootmgr -o 0000,0001,0004,0005,0007,0008,000B,000C
    5. 起動順序を確認します。
      起動順序は次のようになります。
      # efibootmgr
      BootCurrent: 0000
      Timeout: 1 seconds
      BootOrder: 0000,0001,0004,0005,0007,0008,000B,000C
      Boot0000* ExadataLinux_1
      Boot0001* NET0:PXE IP4 Intel(R) I210 Gigabit Network Connection
      Boot0004* PCIE1:PXE IP4 Oracle dual 25Gb Ethernet Adapter or dual 10Gb Ethernet Adapter
      Boot0005* PCIE1:PXE IP4 Oracle dual 25Gb Ethernet Adapter or dual 10Gb Ethernet Adapter
      Boot0007* NET1:PXE IP4 Oracle Dual Port 10Gb/25Gb SFP28 Ethernet Controller
      Boot0008* NET2:PXE IP4 Oracle Dual Port 10Gb/25Gb SFP28 Ethernet Controller
      Boot000B* PCIE2:PXE IP4 Mellanox Network Adapter - EC:0D:9A:CC:1E:46
      Boot000C* PCIE2:PXE IP4 Mellanox Network Adapter - EC:0D:9A:CC:1E:47
      MirroredPercentageAbove4G: 0.00
      MirrorMemoryBelow4GB: false 
    6. ubiosconfigコマンドを使用して、起動順序を確認します。
      # ubiosconfig export all -x /tmp/ubiosconfig.xml
      ExadataLinux_1のエントリがboot_orderの最初の子要素であることを確認します。
      # cat /tmp/ubiosconfig.xml
      <boot_order>
       <boot_device>
        <description>ExadataLinux_1</description>
        <instance>1</instance> </boot_device>
       <boot_device>
        <description>NET0:PXE IP4 Intel(R) I210 Gigabit Network Connection</description>
        <instance>1</instance>
       </boot_device>
       <boot_device>
        <description>PCIE1:PXE IP4 Oracle dual 25Gb Ethernet Adapter or dual 10Gb Ethernet Adapter</description>
        <instance>1</instance> 
       </boot_device>
       <boot_device>
        <description>PCIE1:PXE IP4 Oracle dual 25Gb Ethernet Adapter or dual 10Gb Ethernet Adapter</description>
        <instance>2</instance> 
       </boot_device>
       <boot_device>
        <description>NET1:PXE IP4 Oracle Dual Port 10Gb/25Gb SFP28 Ethernet Controller</description>
        <instance>1</instance>
       </boot_device>
       <boot_device>
        <description>NET2:PXE IP4 Oracle Dual Port 10Gb/25Gb SFP28 Ethernet Controller</description>
        <instance>1</instance> 
       </boot_device>
       <boot_device>
        <description>PCIE2:PXE IP4 Mellanox Network Adapter - EC:0D:9A:CC:1E:46</description>
        <instance>1</instance>
       </boot_device>
       <boot_device> <description>PCIE2:PXE IP4 Mellanox Network Adapter - EC:0D:9A:CC:1E:47</description>
        <instance>1</instance> </boot_device> </boot_order>
    7. リストアしたfstabファイルを確認し、/EXAVMIMAGESへの参照をコメント・アウトします。

      /mnt/etcに移動します。

      # cd /mnt/etc

      /mount/etc/fstabファイルで、/EXAVMIMAGESを参照する行をすべてコメント・アウトします。

KVMホストがリカバリされました。