3.3.5 ハード・ディスクの事前交換

Exadata Storageソフトウェアでは、ハード・ディスクで障害が発生したり、問題のあるディスクとしてフラグ付けされた場合に、自動化された一連の操作でディスクを保守できます。ただし、状況によっては、構成からハード・ディスクを事前に取り外すことが必要になります。

CellCLIのALTER PHYSICALDISKコマンドでは、DROP FOR REPLACEMENTオプションによって、データ損失のリスクなく安全に、正常に機能しているハード・ディスクを削除できるかどうかが確認されます。ただし、コマンドを実行した後、ストレージ・セルでハード・ディスクのグリッド・ディスクが非アクティブ化され、Oracle ASMディスク・グループでオフラインに設定されます。

ディスク・グループで十分な冗長性を確保できないリスクを抑えて、事前にハード・ディスクを交換するには、次の手順を実行します。

  1. ハード・ディスクに関連付けられたLUN、セル・ディスクおよびグリッド・ディスクを特定します。

    次のようなコマンドを使用します。ここで、X:Yは交換するドライブのハード・ディスク名を示します。

    # cellcli –e "list diskmap" | grep 'X:Y'

    出力は次のようになります。

       20:5            KEBTDJ          5                       normal  559G           
        CD_05_exaceladm01    /dev/sdf                
        "DATAC1_CD_05_exaceladm01, DBFS_DG_CD_05_exaceladm01, 
         RECOC1_CD_05_exaceladm01"
    

    LUNを取得するには、次のようなコマンドを発行します。

    CellCLI> list lun where deviceName='/dev/sdf/'
             0_5     0_5     normal
    
  2. ディスクを削除します。
    • Oracle Exadata System Softwareリリース21.2.0以上を使用している場合は、次のコマンドを使用して、冗長性を維持しながら物理ディスクを削除します。

      CellCLI> alter physicaldisk X:Y drop for replacement maintain redundancy

      操作が完了するまで待ってから続行します。

    • 21.2.0より前のOracle Exadata System Softwareリリースを使用している場合は、次の手順を実行します。

      1. 通常のモードで、影響を受けるグリッド・ディスクをOracle ASMディスク・グループから削除します。

        SQL> ALTER DISKGROUP diskgroup_name DROP DISK asm_disk_name;
      2. ASMリバランス操作が完了するまで待ってから続行します。

      3. 物理ディスクを削除します。

        次のようなコマンドを使用します。ここで、X:Yは交換するドライブのハード・ディスク名を示します。

        CellCLI> alter physicaldisk X:Y drop for replacement
  3. ディスクを取り外す前に、ディスクの青い取外しOKのLEDが点灯していることを確認します。
  4. 新しいハード・ディスクに交換します。
  5. ハード・ディスクに関連付けられたLUN、セル・ディスクおよびグリッド・ディスクが作成されていることを確認します。
    CellCLI> list lun lun_name
    CellCLI> list celldisk where lun=lun_name
    CellCLI> list griddisk where celldisk=celldisk_name
  6. グリッド・ディスクがOracle ASMディスク・グループに追加されたことを確認します。

    次の問合せでは行が戻されません。

    SQL> SELECT path,header_status FROM v$asm_disk WHERE group_number=0;

    次の問合せでは、すべての障害グループのディスク数が同じかどうかが示されます。

    SQL> SELECT group_number, failgroup, mode_status, count(*) FROM v$asm_disk
         GROUP BY group_number, failgroup, mode_status;