Tous les produits
Search
Centre de documentation

E-MapReduce:Remplacer un disque local endommagé

Dernière mise à jour :Aug 21, 2026

Lorsque vous utilisez un cluster E-MapReduce (EMR) basé sur une famille d'instances dotée de disques locaux, comme les séries i ou d, une notification peut vous informer d'une défaillance d'un disque local. Cette rubrique explique comment remplacer un disque local endommagé dans votre cluster.

Précautions

  • Pour éviter une interruption de service prolongée, nous vous recommandons de remplacer le nœud défectueux. Mettez hors service le nœud dont le disque a échoué et ajoutez un nouveau nœud au cluster.

  • Les données présentes sur le disque remplacé seront perdues. Avant de commencer, assurez-vous que vos données disposent de suffisamment de réplicas ou qu'elles ont fait l'objet d'une sauvegarde.

  • Le processus de remplacement implique l'arrêt des services, le démontage du disque, le montage d'un nouveau disque et le redémarrage des services. Cette opération prend généralement jusqu'à cinq jours ouvrables. Avant de poursuivre, évaluez si l'espace disque restant et la charge de travail du cluster peuvent soutenir vos activités pendant l'arrêt des services.

Procédure

Connectez-vous à la console ECS pour consulter les détails de l'événement, y compris l'ID de l'instance, le statut, l'ID du disque endommagé, la progression de l'événement et les opérations associées.

Étape 1 : Obtenir les informations sur le disque endommagé

  1. Connectez-vous au nœud doté du disque endommagé via SSH. Pour plus d'informations, consultez Se connecter à un cluster.

  2. Exécutez la commande suivante pour afficher les informations sur les périphériques bloc.

    lsblk

    Le résultat de la commande ressemble à l'exemple suivant.

    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. Exécutez la commande suivante pour afficher les informations sur le disque.

    sudo fdisk -l

    Le résultat de la commande ressemble à l'exemple suivant.

    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. Sur la base des résultats des deux étapes précédentes, notez le nom du périphérique en tant que $device_name et le point de montage en tant que $mount_path.

    Par exemple, si le périphérique du disque défaillant est vdd, le nom du périphérique est /dev/vdd et le point de montage est /mnt/disk3.

Étape 2 : Isoler le disque local endommagé

  1. Arrêtez toutes les applications qui lisent ou écrivent sur le disque endommagé.

    Dans la console EMR, accédez au cluster dont le disque a échoué. Sous l'onglet Services, repérez les services utilisant le disque, tels que HDFS, HBase et Kudu. Dans la colonne Actions du service, choisissez more > Stop.

    Vous pouvez également exécuter la commande sudo fuser -mv $device_name sur le nœud pour répertorier tous les processus utilisant le disque. Arrêtez ensuite les services correspondants dans la console EMR.

  2. Exécutez la commande suivante pour empêcher les opérations de lecture et d'écriture sur le disque local.

    sudo chmod 000 $mount_path
  3. Exécutez la commande suivante pour démonter le disque local.

    sudo umount $device_name;sudo chmod 000 $mount_path
    Important

    Si vous ne démontez pas le disque, son nom de périphérique risque de changer après la réparation, ce qui pourrait amener les applications à lire ou écrire sur le mauvais disque.

  4. Mettez à jour le fichier fstab.

    1. Sauvegardez le fichier /etc/fstab existant.

    2. Supprimez l'entrée correspondant au disque du fichier /etc/fstab.

      Par exemple, si le disque défaillant est /dev/vdd, vous devez supprimer l'entrée associée à ce disque.disk

  5. Redémarrez les services que vous avez arrêtés.

    Sous l'onglet Services du cluster, repérez les services arrêtés à l'étape Étape 2. Dans la colonne Actions du service, choisissez more > START.

Étape 3 : Remplacer le disque

Réparez le disque depuis la console ECS. Pour plus d'informations, consultez Isoler ou réparer un disque local.

Étape 4 : Monter le disque

Une fois le disque réparé, montez-le pour le rendre disponible.

  1. Exécutez la commande suivante pour normaliser le nom du périphérique.

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

    Cette commande normalise les noms de périphériques tels que /dev/xvdk en supprimant la lettre x, ce qui modifie le nom en /dev/vdk.

  2. Exécutez la commande suivante pour créer le répertoire du point de montage.

     mkdir -p "$mount_path"
  3. Exécutez la commande suivante pour monter le disque.

    mount $device_name $mount_path;sudo chmod 755 $mount_path

    Si le montage du disque échoue, effectuez les étapes suivantes :

    1. Exécutez la commande suivante pour formater le disque.

      fdisk $device_name << EOF
      n
      p
      1
      
      wq
      EOF
    2. Exécutez la commande suivante pour remonter le disque.

      mount $device_name $mount_path;sudo chmod 755 $mount_path
  4. Exécutez la commande suivante pour mettre à jour le fichier fstab.

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

    Exécutez which mkfs.ext4 pour vérifier si ext4 est installé. Si c'est le cas, définissez $fstype sur ext4. Sinon, définissez $fstype sur ext3.

  5. Créez un fichier de script et ajoutez le script correspondant à votre type de cluster.

    Clusters Data Lake (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

    Autres clusters

    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. Exécutez les commandes suivantes pour lancer le script, créer les répertoires de service, puis supprimer le script. Remplacez $file_path par le chemin d'accès à votre fichier de script.

    chmod +x $file_path
    sudo $file_path -p $mount_path
    rm $file_path
  7. Utilisez le nouveau disque.

    Dans la console EMR, redémarrez les services sur le nœud et vérifiez que le disque fonctionne correctement.