すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:破損したローカルディスクの交換

最終更新日:Aug 22, 2026

i シリーズや d シリーズなど、ローカルディスクを備えたインスタンスファミリーで構築された E-MapReduce (EMR) クラスターを使用している場合、ローカルディスクの障害が通知されることがあります。本トピックでは、クラスター内の破損したローカルディスクを交換する方法について説明します。

注意事項

  • 長時間のサービス中断を避けるため、障害が発生したノードを交換することを推奨します。障害が発生したディスクを持つノードをデコミッションし、新しいノードをクラスターに追加できます。

  • 交換したディスク上のデータは失われます。開始する前に、データに十分なレプリカがあるか、またはバックアップされているかを確認してください。

  • 交換プロセスには、サービスの停止、ディスクのアンマウント、新しいディスクのマウント、およびサービスの再起動が含まれます。このプロセスには通常、最大 5 営業日かかります。続行する前に、サービスの停止中に、残りのディスク領域とクラスターのワークロードで業務を維持できるかどうかを評価してください。

操作手順

ECS コンソールにログインして、インスタンス ID、ステータス、破損したディスク ID、イベントの進捗状況、関連する操作などのイベント詳細を表示します。

ステップ1:破損したディスク情報の取得

  1. SSH を使用して、破損したディスクがあるノードにログインします。詳細については、「クラスターへのログイン」をご参照ください。

  2. 次のコマンドを実行して、ブロックデバイス情報を表示します。

    lsblk

    コマンドの出力は、次の例のようになります。

    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    vdd    254:48   0  5.4T  0 disk /mnt/disk3
    vdb    254:16   0  5.4T  0 disk /mnt/disk1
    vde    254:64   0  5.4T  0 disk /mnt/disk4
    vdc    254:32   0  5.4T  0 disk /mnt/disk2
    vda    254:0    0  120G  0 disk
    └─vda1 254:1    0  120G  0 part /
  3. 次のコマンドを実行して、ディスク情報を表示します。

    sudo fdisk -l

    コマンドの出力は、次の例のようになります。

    Disk /dev/vdd: 5905.6 GB, 5905580032000 bytes, 11534336000 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
  4. 前の 2 つのステップの出力に基づいて、デバイス名を $device_name として、マウントポイントを $mount_path として記録します。

    例えば、障害が発生したディスクデバイスが vdd の場合、デバイス名は /dev/vdd で、マウントポイントは /mnt/disk3 です。

ステップ2:破損したローカルディスクの分離

  1. 破損したディスクを読み書きするすべてのアプリケーションを停止します。

    EMR コンソールで、障害が発生したディスクがあるクラスターに移動します。Services タブで、HDFS、HBase、Kudu など、ディスクを使用するサービスを見つけます。サービスのアクション列で、more > Stop を選択します。

    または、ノードで sudo fuser -mv $device_name コマンドを実行して、ディスクを使用するすべてのプロセスを一覧表示します。その後、EMR コンソールで対応するサービスを停止します。

  2. 次のコマンドを実行して、ローカルディスクへの読み書き操作を禁止します。

    sudo chmod 000 $mount_path
  3. 次のコマンドを実行して、ローカルディスクをアンマウントします。

    sudo umount $device_name;sudo chmod 000 $mount_path
    重要

    ディスクのアンマウントに失敗すると、修復後にデバイス名が変更され、アプリケーションが間違ったディスクに読み書きする可能性があります。

  4. fstab ファイルを更新します。

    1. 既存の/etc/fstab ファイルをバックアップします。

    2. /etc/fstab ファイルからディスクのエントリを削除します。

      例えば、障害が発生したディスクが /dev/vdd の場合、そのディスクのエントリを削除する必要があります。disk

  5. 停止したサービスを再起動します。

    クラスターの Services タブで、手順 2 で停止したサービスを探し、サービスの [操作] 列で more > START を選択します。

ステップ3:ディスクの交換

ECS コンソールでディスクを修復します。詳細については、「ローカルディスクの分離または修復」をご参照ください。

ステップ4:ディスクのマウント

ディスクが修復された後、マウントして使用可能にします。

  1. 次のコマンドを実行して、デバイス名を正規化します。

    device_name=`echo "$device_name" | sed 's/x//1'`

    このコマンドは、/dev/xvdk のようなデバイス名から文字 x を削除して /dev/vdk に正規化します。

  2. 次のコマンドを実行して、マウントポイントディレクトリを作成します。

    sudo mkdir -p "$mount_path"
  3. 次のコマンドを実行して、ディスクをマウントします。

    sudo mount $device_name $mount_path;sudo chmod 755 $mount_path

    ディスクのマウントに失敗した場合は、次の手順を実行します。

    1. 次のコマンドを実行して、ディスクをフォーマットします。

      fdisk $device_name << EOF
      n
      p
      1
      
      wq
      EOF
    2. 次のコマンドを実行して、ディスクを再マウントします。

      sudo mount $device_name $mount_path;sudo chmod 755 $mount_path
  4. 次のコマンドを実行して、fstab ファイルを更新します。

    echo "$device_name $mount_path $fstype defaults,noatime,nofail 0 0" >> /etc/fstab
    説明

    which mkfs.ext4 を実行して、ext4 がインストールされているかを確認します。インストールされている場合は、$fstype を ext4 に設定します。それ以外の場合は、$fstype を ext3 に設定します。

  5. スクリプトファイルを作成し、お使いのクラスタータイプに応じたスクリプトを追加します。

    データレイク (Hadoop) クラスター

    while getopts p: opt
    do
    	case "${opt}" in
      	p) mount_path=${OPTARG};;
      esac
    done
    
    mkdir -p $mount_path/data
    chown hdfs:hadoop $mount_path/data
    chmod 1777 $mount_path/data
    
    mkdir -p $mount_path/hadoop
    chown hadoop:hadoop $mount_path/hadoop
    chmod 775 $mount_path/hadoop
    
    mkdir -p $mount_path/hdfs
    chown hdfs:hadoop $mount_path/hdfs
    chmod 755 $mount_path/hdfs
    
    mkdir -p $mount_path/yarn
    chown hadoop:hadoop $mount_path/yarn
    chmod 755 $mount_path/yarn
    
    mkdir -p $mount_path/kudu/master
    chown kudu:hadoop $mount_path/kudu/master
    chmod 755 $mount_path/kudu/master
    
    mkdir -p $mount_path/kudu/tserver
    chown kudu:hadoop $mount_path/kudu/tserver
    chmod 755 $mount_path/kudu/tserver
    
    mkdir -p $mount_path/log
    chown hadoop:hadoop $mount_path/log
    chmod 775 $mount_path/log
    
    mkdir -p $mount_path/log/hadoop-hdfs
    chown hdfs:hadoop $mount_path/log/hadoop-hdfs
    chmod 775 $mount_path/log/hadoop-hdfs
    
    mkdir -p $mount_path/log/hadoop-yarn
    chown hadoop:hadoop $mount_path/log/hadoop-yarn
    chmod 755 $mount_path/log/hadoop-yarn
    
    mkdir -p $mount_path/log/hadoop-mapred
    chown hadoop:hadoop $mount_path/log/hadoop-mapred
    chmod 755 $mount_path/log/hadoop-mapred
    
    mkdir -p $mount_path/log/kudu
    chown kudu:hadoop $mount_path/log/kudu
    chmod 755 $mount_path/log/kudu
    
    mkdir -p $mount_path/run
    chown hadoop:hadoop $mount_path/run
    chmod 777 $mount_path/run
    
    mkdir -p $mount_path/tmp
    chown hadoop:hadoop $mount_path/tmp
    chmod 777 $mount_path/tmp

    その他のクラスター

    while getopts p: opt
    do
    	case "${opt}" in
      	p) mount_path=${OPTARG};;
      esac
    done
    
    sudo mkdir -p $mount_path/flink
    sudo chown flink:hadoop $mount_path/flink
    sudo chmod 775 $mount_path/flink
    
    sudo mkdir -p $mount_path/hadoop
    sudo chown hadoop:hadoop $mount_path/hadoop
    sudo chmod 755 $mount_path/hadoop
    
    sudo mkdir -p $mount_path/hdfs
    sudo chown hdfs:hadoop $mount_path/hdfs
    sudo chmod 750 $mount_path/hdfs
    
    sudo mkdir -p $mount_path/yarn
    sudo chown root:root $mount_path/yarn
    sudo chmod 755 $mount_path/yarn
    
    sudo mkdir -p $mount_path/impala
    sudo chown impala:hadoop $mount_path/impala
    sudo chmod 755 $mount_path/impala
    
    sudo mkdir -p $mount_path/jindodata
    sudo chown root:root $mount_path/jindodata
    sudo chmod 755 $mount_path/jindodata
    
    sudo mkdir -p $mount_path/jindosdk
    sudo chown root:root $mount_path/jindosdk
    sudo chmod 755 $mount_path/jindosdk
    
    sudo mkdir -p $mount_path/kafka
    sudo chown root:root $mount_path/kafka
    sudo chmod 755 $mount_path/kafka
    
    sudo mkdir -p $mount_path/kudu
    sudo chown root:root $mount_path/kudu
    sudo chmod 755 $mount_path/kudu
    
    sudo mkdir -p $mount_path/mapred
    sudo chown root:root $mount_path/mapred
    sudo chmod 755 $mount_path/mapred
    
    sudo mkdir -p $mount_path/starrocks
    sudo chown root:root $mount_path/starrocks
    sudo chmod 755 $mount_path/starrocks
    
    sudo mkdir -p $mount_path/clickhouse
    sudo chown clickhouse:clickhouse $mount_path/clickhouse
    sudo chmod 755 $mount_path/clickhouse
    
    sudo mkdir -p $mount_path/doris
    sudo chown root:root $mount_path/doris
    sudo chmod 755 $mount_path/doris
    
    sudo mkdir -p $mount_path/log
    sudo chown root:root $mount_path/log
    sudo chmod 755 $mount_path/log
    
    sudo mkdir -p $mount_path/log/clickhouse
    sudo chown clickhouse:clickhouse $mount_path/log/clickhouse
    sudo chmod 755 $mount_path/log/clickhouse
    
    sudo mkdir -p $mount_path/log/kafka
    sudo chown kafka:hadoop $mount_path/log/kafka
    sudo chmod 755 $mount_path/log/kafka
    
    sudo mkdir -p $mount_path/log/kafka-rest-proxy
    sudo chown kafka:hadoop $mount_path/log/kafka-rest-proxy
    sudo chmod 755 $mount_path/log/kafka-rest-proxy
    
    sudo mkdir -p $mount_path/log/kafka-schema-registry
    sudo chown kafka:hadoop $mount_path/log/kafka-schema-registry
    sudo chmod 755 $mount_path/log/kafka-schema-registry
    
    sudo mkdir -p $mount_path/log/cruise-control
    sudo chown kafka:hadoop $mount_path/log/cruise-control
    sudo chmod 755 $mount_path/log/cruise-control
    
    sudo mkdir -p $mount_path/log/doris
    sudo chown doris:doris $mount_path/log/doris
    sudo chmod 755 $mount_path/log/doris
    
    sudo mkdir -p $mount_path/log/celeborn
    sudo chown hadoop:hadoop $mount_path/log/celeborn
    sudo chmod 755 $mount_path/log/celeborn
    
    sudo mkdir -p $mount_path/log/flink
    sudo chown flink:hadoop $mount_path/log/flink
    sudo chmod 775 $mount_path/log/flink
    
    sudo mkdir -p $mount_path/log/flume
    sudo chown root:root $mount_path/log/flume
    sudo chmod 755 $mount_path/log/flume
    
    sudo mkdir -p $mount_path/log/gmetric
    sudo chown root:root $mount_path/log/gmetric
    sudo chmod 777 $mount_path/log/gmetric
    
    sudo mkdir -p $mount_path/log/hadoop-hdfs
    sudo chown hdfs:hadoop $mount_path/log/hadoop-hdfs
    sudo chmod 755 $mount_path/log/hadoop-hdfs
    
    sudo mkdir -p $mount_path/log/hbase
    sudo chown hbase:hadoop $mount_path/log/hbase
    sudo chmod 755 $mount_path/log/hbase
    
    sudo mkdir -p $mount_path/log/hive
    sudo chown root:root $mount_path/log/hive
    sudo chmod 775 $mount_path/log/hive
    
    sudo mkdir -p $mount_path/log/impala
    sudo chown impala:hadoop $mount_path/log/impala
    sudo chmod 755 $mount_path/log/impala
    
    sudo mkdir -p $mount_path/log/jindodata
    sudo chown root:root $mount_path/log/jindodata
    sudo chmod 777 $mount_path/log/jindodata
    
    sudo mkdir -p $mount_path/log/jindosdk
    sudo chown root:root $mount_path/log/jindosdk
    sudo chmod 777 $mount_path/log/jindosdk
    
    sudo mkdir -p $mount_path/log/kyuubi
    sudo chown kyuubi:hadoop $mount_path/log/kyuubi
    sudo chmod 755 $mount_path/log/kyuubi
    
    sudo mkdir -p $mount_path/log/presto
    sudo chown presto:hadoop $mount_path/log/presto
    sudo chmod 755 $mount_path/log/presto
    
    sudo mkdir -p $mount_path/log/spark
    sudo chown spark:hadoop $mount_path/log/spark
    sudo chmod 755 $mount_path/log/spark
    
    sudo mkdir -p $mount_path/log/sssd
    sudo chown sssd:sssd $mount_path/log/sssd
    sudo chmod 750 $mount_path/log/sssd
    
    sudo mkdir -p $mount_path/log/starrocks
    sudo chown starrocks:starrocks $mount_path/log/starrocks
    sudo chmod 755 $mount_path/log/starrocks
    
    sudo mkdir -p $mount_path/log/taihao_exporter
    sudo chown taihao:taihao $mount_path/log/taihao_exporter
    sudo chmod 755 $mount_path/log/taihao_exporter
    
    sudo mkdir -p $mount_path/log/trino
    sudo chown trino:hadoop $mount_path/log/trino
    sudo chmod 755 $mount_path/log/trino
    
    sudo mkdir -p $mount_path/log/yarn
    sudo chown hadoop:hadoop $mount_path/log/yarn
    sudo chmod 755 $mount_path/log/yarn
  6. 次のコマンドを実行してスクリプトを実行し、サービスディレクトリを作成してからスクリプトを削除します。$file_path をスクリプトファイルのパスに置き換えてください。

    chmod +x $file_path
    sudo $file_path -p $mount_path
    rm $file_path
  7. 新しいディスクを使用します。

    EMR コンソールで、ノード上のサービスを再起動し、ディスクが正しく動作していることを確認してください。