G 手動でディスク構成するステップ

ディスク・エラーを解決したり、Oracle Big Data Applianceのデータ・ディスクまたはオペレーティング・システム・ディスクを構成または再構成したりするには、bdaconfigurediskユーティリティを実行することをお薦めします。このユーティリティによって処理が自動化されます。これらの手動ステップは必須ではありませんが、必要な場合に参照できるようにフォールバックとして含められています。

G.1 ディスク・ドライブの機能の識別

障害ディスクのあるサーバーはHDFSまたはOracle NoSQL Databaseをサポートするように構成され、ほとんどのディスクはその目的のみに使用されます。ただし、2つのディスクはオペレーティング・システム専用です。新しいディスクを構成する前に、障害ディスクがどのように構成されたかを確認します。

Oracle Big Data Applianceは、最初の2つのディスク上にオペレーティング・システムが構成されます。

障害ディスクでオペレーティング・システムがサポートされていたことを確認するには、次の手順を実行します。

  1. 交換ディスクが/dev/sdaまたは/dev/sdb (オペレーティング・システム・ディスク)に対応しているかどうかを確認します。

    # lsscsi
    

    ディスク・ドライブの交換のステップ11での出力を参照してください。

  2. /dev/sdaおよび/dev/sdbがオペレーティング・システムのミラー化パーティション・ディスクであることを確認します。

    # mdadm -Q –-detail /dev/md2
    /dev/md2:
            Version : 0.90
      Creation Time : Mon Jul 22 22:56:19 2013
         Raid Level : raid1
         .
         .
         .
        Number   Major   Minor   RaidDevice State
           0       8        2        0      active sync   /dev/sda2
           1       8       18        1      active sync   /dev/sdb2
    
  3. 前のステップで障害ディスクがオペレーティング・システム・ディスクであることがわかった場合、「オペレーティング・システム・ディスクの構成」に進みます。

G.2 オペレーティング・システム・ディスクの構成

最初の2つのディスクによって、Linuxオペレーティング・システムがサポートされます。これらのディスクには、ミラー化されたオペレーティング・システムのコピー、スワップ・パーティション、ミラー化されたブート・パーティションおよびHDFSデータ・パーティションが格納されます。

オペレーティング・システム・ディスクを構成するには、稼働を続けているディスクからパーティション表をコピーし、HDFSパーティション(ext4ファイル・システム)を作成して、オペレーティング・システムのソフトウェアRAIDパーティションとブート・パーティションを追加する必要があります。

スロット0またはスロット1のディスクを交換した後、次の手順を実行します。

G.2.1 オペレーティング・システム・ディスクのパーティション化

G.2.1.1 Oracle Linux 6のパーティション化

Oracle Linux 6の論理ドライブをパーティション化するには、次の手順を実行します。

  1. 「ディスク・ドライブの交換」のステップを完了します。
  2. 新しいディスクにパーティション表が存在しないことを確認します。
    # parted /dev/disk/by-hba-slot/sn -s print
    

    通常は、欠落しているパーティション表に関するメッセージが表示されます。

  3. partedコマンドでパーティション表が表示された場合、それを消去します。
    # dd if=/dev/zero of=/dev/disk/by-hba-slot/sn bs=1M count=100
    

    ヒント:

    間違った場合、このコマンドを使用してオペレーティング・システム・ディスクの構成を再開できます。

  4. パーティション表を作成します。
    # parted /dev/disk/by-hba-slot/sn -s mklabel gpt print
    
  5. 稼働を続けているディスクのCylinder Head Sector (CHS)パーティション情報をリストします。つまり、/dev/disk/by-hba-slot/s0をパーティション化する場合、次のコマンドの/dev/disk/by-hba-slot/smとして/dev/disk/by-hba-slot/s1を入力します。
    # parted /dev/disk/by-hba-slot/sm -s unit chs print
     
    Model: LSI MR9261-8i (scsi)
    Disk /dev/sda: 243031,30,6
    Sector size (logical/physical): 512B/512B
    BIOS cylinder,head,sector geometry: 243031,255,63.  Each cylinder is 8225kB.
    Partition Table: gpt
     
    Number  Start        End          File system    Name    Flags
     1      0,0,34       25,127,7     ext4           primary boot
     2      25,127,8     21697,116,20                primary raid
     3      21697,116,21 23227,61,35  linux-swap(v1) primary
     4      23227,61,36  243031,29,36 ext4           primary
    
  6. 稼働を続けているディスクのパーティションを複製して、新しいドライブにパーティション1から3を作成します。次の書式で3つのコマンドを発行します。
    # parted /dev/disk/by-hba-slot/sn -s mkpart primary file_system start end
    

    次の例に示されているアドレスのかわりに、ステップ5で取得した開始アドレスと終了アドレスを使用してください。

    # parted /dev/disk/by-hba-slot/sn -s mkpart primary ext4 0,0,34 25,127,7
    # parted /dev/disk/by-hba-slot/sn -s mkpart primary ext4 25,127,8 21697,116,20
    # parted /dev/disk/by-hba-slot/sn -s mkpart primary linux-swap 21697,116,21 23227,61,35
    
  7. ステップ5で取得した開始アドレスと100%の終了アドレスを使用して、プライマリ・パーティション4を作成します。
    # parted /dev/disk/by-hba-slot/sn -s mkpart primary ext4 23227,61,36 100%
    

    パーティション4にはHDFSデータが格納され、この構文によってパーティションが可能なかぎり大きくなります。

  8. RAIDフラグを設定します。
    # parted -s /dev/disk/by-hba-slot/sn set 1 raid
    # parted -s /dev/disk/by-hba-slot/sn set 2 raid
    
  9. ブート・フラグを設定します。
    # parted -s /dev/disk/by-hba-slot/sn set 1 boot
  10. ブート・フラグが設定されていることを確認します。
    # parted /dev/disk/by-hba-slot/sn -s unit chs print
    出力例を次に示します。
    Model: LSI MR9261-8i (scsi)
    Disk /dev/sda: 243031,30,6
    Sector size (logical/physical): 512B/512B
    BIOS cylinder,head,sector geometry: 243031,255,63. Each cylinder is 8225kB.
    Partition Table: gpt
    Number Start         End           File system    Name    Flags 
    1      0,32,32       24,89,0       ext4           primary boot 
    2      24,89,1       60812,135,58                 primary raid 
    3      60812,135,59  65618,90,7    linux-swap(v1) primary 
    4      65618,90,8    243030,252,37 ext4           primary
  11. 「RAIDアレイの修理」のステップを完了します。

G.2.2 RAIDアレイの修理

ディスクをパーティション化した後、2つの論理RAIDアレイを修理できます。

  • /dev/md0には、/dev/disk/by-hba-slot/s0p1および/dev/disk/by-hba-slot/s1p1が含まれます。/bootとしてマウントされます。

  • /dev/md2には、/dev/disk/by-hba-slot/s0p2および/dev/disk/by-hba-slot/s1p2が含まれます。/ (root)としてマウントされます。

注意:

システムが停止する操作になるため、/dev/mdデバイスはディスマウントしないでください。

RAIDアレイを修理するには、次の手順を実行します。

  1. RAIDアレイからパーティションを削除します。

    # mdadm /dev/md0 -r detached
    # mdadm /dev/md2 -r detached
    
  2. RAIDアレイが縮退していることを確認します。

    # mdadm -Q –-detail /dev/md0
    # mdadm -Q –-detail /dev/md2
    
  3. 各アレイの縮退ファイルが1に設定されていることを確認します。

    # cat /sys/block/md0/md/degraded
    1
    # cat /sys/block/md2/md/degraded
    1
    
  4. RAIDアレイにパーティションをリストアします。

    # mdadm –-add /dev/md0 /dev/disk/by-hba-slot/snp1
    # mdadm –-add /dev/md2 /dev/disk/by-hba-slot/snp2
    
  5. /dev/md2がリカバリ状態になり、アイドル状態でなくなるように、再同期が開始されていることを確認します。

    # cat /sys/block/md2/md/sync_action
    repair
    
  6. 再同期の進行を確認するには、mdstatファイルを監視します。カウンタによって、完了した割合が示されます。

    # cat /proc/mdstat
    
    Personalities : [raid1]
    md0 : active raid1 sdb1[1] sda1[0]
          204736 blocks [2/2] [UU]
     
    md2 : active raid1 sdb2[2] sda2[0]
          174079936 blocks [2/1] [U_]
          [============>........]  recovery = 61.6% (107273216/174079936) finish=18.4min speed=60200K/sec
    

    次の出力は、同期が完了したことを示しています。

    Personalities : [raid1]
    md0 : active raid1 sdb1[1] sda1[0]
          204736 blocks [2/2] [UU]
     
    md2 : active raid1 sdb2[1] sda2[0]
          174079936 blocks [2/2] [UU]
     
    unused devices: <none>
    
  7. /etc/mdadm.confのコンテンツを表示します。

    # cat /etc/mdadm.conf
    
    # mdadm.conf written out by anaconda
    DEVICE partitions
    MAILADDR root
    ARRAY /dev/md0 level=raid1 num-devices=2 UUID=df1bd885:c1f0f9c2:25d6...
    ARRAY /dev/md2 level=raid1 num-devices=2 UUID=6c949a1a:1d45b778:a6da...
    
  8. 次のコマンドの出力をステップ7の/etc/mdadm.confの内容と比較します。

    # mdadm --examine --brief --scan --config=partitions
    
  9. ファイル内のUUIDがmdadmコマンドの出力内のUUIDと異なる場合は、次の手順を実行します。

    1. テキスト・エディタで/etc/mdadm.confを開きます。

    2. ARRAYからファイルの末尾までを選択し、選択した行を削除します。

    3. ファイルの行を削除した部分に、コマンドの出力をコピーします。

    4. 変更したファイルを保存して終了します。

  10. 「オペレーティング・システム・ディスクのHDFSパーティションのフォーマット」のステップを完了します。

G.2.3 オペレーティング・システム・ディスクのHDFSパーティションのフォーマット

オペレーティング・システム・ディスクのパーティション4 (sda4)は、HDFSに使用されます。パーティションをフォーマットして適切なラベルを設定すると、ディスク領域が必要な場合にパーティションを使用するようにHDFSによってジョブの負荷がリバランスされます。

HDFSパーティションをフォーマットするには、次の手順を実行します。

  1. ext4ファイル・システムとしてHDFSパーティションをフォーマットします。

    # mkfs -t ext4 /dev/disk/by-hba-slot/snp4
    

    ノート:

    デバイスがマウントされているためにこのコマンドが失敗する場合、ここでドライブをディスマウントし、ステップ3を省略してください。ディスマウントの手順については、「障害ディスクを交換するための前提条件」を参照してください。

  2. パーティション・ラベル(s0p4に対する/u01など)が存在しないことを確認します。

    # ls -l /dev/disk/by-label
    
  3. 適切なHDFSパーティション(/dev/sdaの場合は/u01/dev/sdbの場合は/u02)をディスマウントします。

    # umount /u0n
    
  4. パーティション・ラベルを再設定します。

    # tune2fs -c -1 -i 0 -m 0.2 -L /u0n /dev/disk/by-hba-slot/snp4
    
  5. HDFSパーティションをマウントします。

    # mount /u0n
    
  6. 「スワップ・パーティションのリストア」のステップを完了します。

G.2.4 スワップ・パーティションのリストア

HDFSパーティションをフォーマットした後、スワップ・パーティションをリストアできます。

スワップ・パーティションをリストアするには、次の手順を実行します。

  1. スワップ・ラベルを設定します。

    # mkswap -L SWAP-sdn3 /dev/disk/by-hba-slot/snp3
    Setting up swapspace version 1, size = 12582907 kB
    LABEL=SWAP-sdn3, no uuid
    
  2. スワップ・パーティションがリストアされたことを確認します。

    # bdaswapon; bdaswapoff
    Filename                          Type            Size    Used    Priority
    /dev/sda3                         partition       12287992        0       1
    /dev/sdb3                         partition       12287992        0       1
    
  3. 交換したディスクがオペレーティング・システムによって認識されることを確認します。

    $ ls -l /dev/disk/by-label
    total 0
    lrwxrwxrwx 1 root root 10 Aug  3 01:22 BDAUSB -> ../../sdn1
    lrwxrwxrwx 1 root root 10 Aug  3 01:22 BDAUSBBOOT -> ../../sdm1
    lrwxrwxrwx 1 root root 10 Aug  3 01:22 SWAP-sda3 -> ../../sda3
    lrwxrwxrwx 1 root root 10 Aug  3 01:22 SWAP-sdb3 -> ../../sdb3
    lrwxrwxrwx 1 root root 10 Aug  3 01:22 u01 -> ../../sda4
    lrwxrwxrwx 1 root root 10 Aug  3 01:22 u02 -> ../../sdb4
    lrwxrwxrwx 1 root root 10 Aug  3 01:22 u03 -> ../../sdc1
    lrwxrwxrwx 1 root root 10 Aug  3 01:22 u04 -> ../../sdd1
         .
         .
         .
    
  4. 出力に交換したディスクがリストされない場合:

    • Linux 6で、udevadm triggerを実行します。

    その後、ステップ3を繰り返します。lsscsiコマンドも、ディスクの正しい順序をレポートする必要があります。

  5. 「GRUBマスター・ブート・レコードおよびHBAブート順序のリストア」のステップを完了します。

G.2.5 GRUBマスター・ブート・レコードおよびHBAブート順序のリストア

スワップ・パーティションをリストアした後、Grand Unified Bootloader (GRUB)のマスター・ブート・レコードをリストアできます。

device.mapファイルによって、オペレーティング・システム・デバイスにBIOSドライブがマップされます。次に、デバイス・マップ・ファイルの例を示します。

# this device map was generated by anaconda
(hd0)     /dev/sda
(hd1)     /dev/sdb

ただし、GRUBデバイス・マップはシンボリック・リンクをサポートしていないため、デバイス・マップ内のマッピングは/dev/disk/by-hba-slotによって使用されているものと一致しない場合があります。この手順では、必要に応じてデバイス・マップを修正する方法について説明します。

GRUBのブート・レコードをリストアするには、次の手順を実行します。

  1. ドライブがslot1で使用しているカーネル・デバイスを確認します。

    # ls -ld /dev/disk/by-hba-slot/s1
    lrwxrwxrwx 1 root root 9 Apr 22 12:54 /dev/disk/by-hba-slot/s1 -> ../../sdb
    
  2. ステップ1に示すとおり、出力に/dev/sdbが表示されている場合は、次のステップ(GRUBのオープン)に進みます。

    別のデバイス(/dev/sdnなど)が表示されている場合は、まずhd1が正しいデバイスを指すように設定する必要があります。

    1. device.mapファイルのコピーを作成します。

      # cd /boot/grub
      # cp device.map mydevice.map
      # ls -l *device*
      -rw-r--r-- 1 root root 85 Apr 22 14:50 device.map
      -rw-r--r-- 1 root root 85 Apr 24 09:24 mydevice.map
       
    2. mydevice.mapを編集して、hd1が新しいデバイスを指すようにします。この例では、ステップ1s1/deb/sdnを指していました。

      # more /boot/grub/mydevice.map
      # this device map was generated by bda install
      (hd0)     /dev/sda
      (hd1)     /dev/sdn
       
    3. 残りのステップでは、編集したデバイス・マップ(mydevice.map)を使用します。

  3. ここに示すようにdevice.mapを使用するか、編集したmydevice.mapを使用して、GRUBをオープンします。

    # grub --device-map=/boot/grub/device.map
    
        GNU GRUB  version 0.97  (640K lower / 3072K upper memory)
     
     [ Minimal BASH-like line editing is supported.  For the first word, TAB
       lists possible command completions.  Anywhere else TAB lists the possible
       completions of a device/filename.
    ]
  4. /dev/sdaの場合はhd0、/dev/sdbの場合はhd1を入力して、ルート・デバイスを設定します。

    grub> root (hdn,0)
    
    root (hdn,0)
     Filesystem type is ext2fs, partition type 0x83
    
  5. /dev/sdaの場合はhd0、/dev/sdbの場合はhd1を入力して、GRUBをインストールします。

    grub> setup (hdn)
    
    setup (hdn)
     Checking if "/boot/grub/stage1" exists... no
     Checking if "/grub/stage1" exists... yes
     Checking if "/grub/stage2" exists... yes
     Checking if "/grub/e2fs_stage1_5" exists... yes
     Running "embed /grub/e2fs_stage1_5 (hdn)"... failed (this is not fatal)
     Running "embed /grub/e2fs_stage1_5 (hdn,0)"... failed (this is not fatal)
     Running "install /grub/stage1 (hdn) /grub/stage2 p /grub/grub.conf "... succeeded
    Done.
    
  6. GRUBコマンドライン・インタフェースを終了します。

    grub> quit
    
  7. HBAのブート・ドライブが正しく設定されていることを確認します。

    # MegaCli64 /c0 show bootdrive
    

    BootDrive VD:0が設定されている場合、コマンド出力は次のようになります。

    Controller = 0
    Status = Success
    Description = None
    Controller Properties :
    =====================
    ----------------
    Ctrl_Prop Value
    ----------------
    BootDrive VD:0 
    ---------------- 

    BootDrive VD:0が設定されていない場合、コマンド出力に「No Boot Drive」と表示されます。

    Controller = 0
    Status = Success
    Description = None
    Controller Properties :
    =====================
    ----------------
    Ctrl_Prop Value
    ----------------
    BootDrive No Boot Drive
    ---------------- 
  8. ブート・ドライブが設定されていないことがMegaCli64 /c0 show bootdriveによって報告された場合は、次のように設定します。

    # MegaCli64 /c0/v0 set bootdrive=on
    Controller = 0
    Status = Success
    Description = None
    Detailed Status :
    ===============
    -----------------------------------------
    VD  Property   Value Status   ErrCd ErrMsg
    ----------------------------------------- 
    0   Boot Drive On    Success  0     - 
    ------------------------------------------
  9. ブート・ドライブが設定されたことを確認します。

    # MegaCli64 /c0 show bootdrive
    Controller = 0
    Status = Success
    Description = None
    Controller Properties :
    =====================
    ----------------
    Ctrl_Prop Value
    ----------------
    BootDrive VD:0 
    ----------------
  10. 自動選択ブート・ドライブ機能が有効であることを確認します。

    # MegaCli64 adpBIOS EnblAutoSelectBootLd a0
    Auto select Boot is already Enabled on Adapter 0.
    
  11. 構成を確認します。「ディスク構成の確認」を参照してください。

G.3 HDFSディスクまたはOracle NoSQL Databaseディスクの構成

オペレーティング・システムで使用されていないすべてのディスクで、次の手順を実行します。「ディスク・ドライブの機能の識別」を参照してください。

ディスクを構成するには、それをパーティション化してフォーマットする必要があります。

ノート:

次のコマンドのsnp1は、s4p1などの適切なシンボリック名に置き換えてください。

HDFSまたはOracle NoSQL Databaseで使用するためにディスクをフォーマットするには、次の手順を実行します。

  1. 「ディスク・ドライブの交換」のステップをまだ完了していない場合は完了します。

  2. ドライブをパーティション化します。

    # parted /dev/disk/by-hba-slot/sn -s mklabel gpt mkpart primary ext4 0% 100%
    
  3. ext4ファイル・システムのパーティションをフォーマットします。

    # mkfs -t ext4 /dev/disk/by-hba-slot/snp1
    
  4. 存在しないデバイスに適切なパーティション・ラベルを再設定します。表13-2を参照してください。

    # tune2fs -c -1 -i 0 -m 0.2 -L /unn /dev/disk/by-hba-slot/snp1
    

    たとえば、次のコマンドでは、/u03に対して/dev/disk/by-hba-slot/s2p1というラベルを再設定します。

    # tune2fs -c -1 -i 0 -m 0.2 -L /u03 /dev/disk/by-hba-slot/s2p1
    Setting maximal mount count to -1
    Setting interval between checks to 0 seconds
    Setting reserved blocks percentage to 0.2% (976073 blocks)
    
  5. 交換したディスクがオペレーティング・システムによって認識されることを確認します。

    $ ls -l /dev/disk/by-label
    total 0
    lrwxrwxrwx 1 root root 10 Aug  3 01:22 BDAUSB -> ../../sdn1
    lrwxrwxrwx 1 root root 10 Aug  3 01:22 BDAUSBBOOT -> ../../sdm1
    lrwxrwxrwx 1 root root 10 Aug  3 01:22 SWAP-sda3 -> ../../sda3
    lrwxrwxrwx 1 root root 10 Aug  3 01:22 SWAP-sdb3 -> ../../sdb3
    lrwxrwxrwx 1 root root 10 Aug  3 01:22 u01 -> ../../sda4
    lrwxrwxrwx 1 root root 10 Aug  3 01:22 u02 -> ../../sdb4
    lrwxrwxrwx 1 root root 10 Aug  3 01:22 u03 -> ../../sdc1
    lrwxrwxrwx 1 root root 10 Aug  3 01:22 u04 -> ../../sdd1
         .
         .
         .
    
  6. 出力に交換したディスクがリストされない場合:

    • Linux 6で、udevadm triggerを実行します。

    その後、ステップ5を繰り返します。lsscsiコマンドも、ディスクの正しい順序をレポートする必要があります。

  7. 適切なマウント・ポイントを入力してHDFSパーティションをマウントします。

    # mount /unn
    

    たとえば、mount /u03とします。

  8. 複数のドライブを構成する場合、前述のステップを繰り返します。

  9. Cloudera ManagerでHDFSドライブのマウント・ポイントを削除していた場合、リストにリストアします。

    1. Cloudera Managerのブラウザ・ウィンドウを開きます。次に例を示します。

      http://bda1node03.example.com:7180

    2. Cloudera Managerを開き、adminとしてログインします。

    3. 「Services」ページで、「hdfs」をクリックします。

    4. 「Instances」サブタブをクリックします。

    5. 「Host」列で、交換ディスクのあるサーバーを特定します。次に、「Name」列のサービス(datanodeなど)をクリックしてそのページを開きます。

    6. 「Configuration」サブタブをクリックします。

    7. 「Directory」フィールドにマウント・ポイントがない場合、リストに追加します。

    8. 「Save Changes」をクリックします。

    9. 「Actions」リストから、「Restart」を選択します。

  10. 以前に「NodeManager Local Directories」からマウント・ポイントを削除した場合、Cloudera Managerを使用してそれもリストにリストアします。

    1. 「Services」ページで、「Yarn」をクリックします。

    2. 「Status Summary」で、「NodeManager」をクリックします。

    3. リストから、障害ディスクのあるホスト上のNodeManagerをクリックして選択します。

    4. 「Configuration」サブタブをクリックします。

    5. 「NodeManager Local Directories」フィールドにマウント・ポイントがない場合、リストに追加します。

    6. 「Save Changes」をクリックします。

    7. 「Actions」リストから、「Restart」を選択します。

  11. 構成を確認します。「ディスク構成の確認」を参照してください。

G.4 ディスク構成の確認

Oracle Big Data Applianceソフトウェアをサーバーに再インストールする前に、新しいディスク・ドライブの構成が適切であることを確認する必要があります。

ディスク構成を確認するには、次の手順を実行します。

  1. ソフトウェア構成を確認します。

    # bdachecksw
    
  2. エラーが存在する場合、必要に応じて構成ステップを再実行して問題を修正します。

  3. /rootディレクトリでBDA_REBOOT_SUCCEEDEDというファイルを確認します。

  4. BDA_REBOOT_FAILEDという名前のファイルが見つかった場合には、そのファイルを読んで新しい問題を特定し、修正します。

  5. 次のスクリプトを使用して、BDA_REBOOT_SUCCEEDEDファイルを生成します。

    # /opt/oracle/bda/lib/bdastartup.sh
    
  6. BDA_REBOOT_SUCCEEDEDが存在することを確認します。まだBDA_REBOOT_FAILEDファイルが見つかる場合には、前のステップを繰り返します。