{"record":{"id":"a2deb936ae1cb4f1","repo":"apache/hadoop","slug":"too-many-failed-volumes-current-valid-volumes-a2deb9","errorCode":null,"errorMessage":"Too many failed volumes - current valid volumes: {}, volumes configured: {}, volumes failed: {}, volume failures tolerated: {}","messagePattern":"Too many failed volumes - current valid volumes: (.+?), volumes configured: (.+?), volumes failed: (.+?), volume failures tolerated: (.+?)","errorType":"exception","errorClass":"DiskErrorException","httpStatus":null,"severity":"error","filePath":"hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl.java","lineNumber":329,"sourceCode":"    volFailuresTolerated = datanode.getDnConf().getVolFailuresTolerated();\n\n    Collection<StorageLocation> dataLocations = DataNode.getStorageLocations(conf);\n    List<VolumeFailureInfo> volumeFailureInfos = getInitialVolumeFailureInfos(\n        dataLocations, storage);\n\n    volsConfigured = datanode.getDnConf().getVolsConfigured();\n    int volsFailed = volumeFailureInfos.size();\n\n    if (volFailuresTolerated < DataNode.MAX_VOLUME_FAILURE_TOLERATED_LIMIT\n        || volFailuresTolerated >= volsConfigured) {\n      throw new HadoopIllegalArgumentException(\"Invalid value configured for \"\n          + \"dfs.datanode.failed.volumes.tolerated - \" + volFailuresTolerated\n          + \". Value configured is either less than maxVolumeFailureLimit or greater than \"\n          + \"to the number of configured volumes (\" + volsConfigured + \").\");\n    }\n    if (volFailuresTolerated == DataNode.MAX_VOLUME_FAILURE_TOLERATED_LIMIT) {\n      if (volsConfigured == volsFailed) {\n        throw new DiskErrorException(\n            \"Too many failed volumes - \" + \"current valid volumes: \"\n                + storage.getNumStorageDirs() + \", volumes configured: \"\n                + volsConfigured + \", volumes failed: \" + volsFailed\n                + \", volume failures tolerated: \" + volFailuresTolerated);\n      }\n    } else {\n      if (volsFailed > volFailuresTolerated) {\n        throw new DiskErrorException(\n            \"Too many failed volumes - \" + \"current valid volumes: \"\n                + storage.getNumStorageDirs() + \", volumes configured: \"\n                + volsConfigured + \", volumes failed: \" + volsFailed\n                + \", volume failures tolerated: \" + volFailuresTolerated);\n      }\n    }\n\n    storageMap = new ConcurrentHashMap<String, DatanodeStorage>();\n    volumeMap = new ReplicaMap(lockManager);\n    ramDiskReplicaTracker = RamDiskReplicaTracker.getInstance(conf, this);","sourceCodeStart":311,"sourceCodeEnd":347,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl.java#L311-L347","documentation":"Error \"Too many failed volumes - current valid volumes: {}, volumes configured: {}, volumes failed: {}, volume failures tolerated: {}\" thrown in apache/hadoop.","triggerScenarios":"FsDataset initialization when the count of failed volumes exceeds dfs.datanode.failed.volumes.tolerated, aborting DataNode startup.","commonSituations":"See trigger scenarios.","solutions":["Identify and repair the failed volumes (check dmesg, smartctl, mount status) so the number of failed volumes drops within the tolerated limit.","Raise dfs.datanode.failed.volumes.tolerated if running with fewer volumes is acceptable, then restart the DataNode.","Remove dead volume paths from dfs.datanode.data.dir if the disks are permanently decommissioned."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"2add9630210752f88ceb1bb74eb65e37bf41da8e","analyzedAt":"2026-08-22T19:55:07.957Z","schemaVersion":2},"datasetVersion":"2026-08-23T01:17:44.959Z"}