
# HDFS目录配额不足导致写文件失败
#### 问题描述
给某目录设置quota后，往目录中写文件失败，出现如下问题"**The DiskSpace quota of** /tmp/tquota2 is**exceeded**"。
```
[omm@189-39-150-115 client]$ hdfs dfs -put switchuser.py  /tmp/tquota2
put: The DiskSpace quota of /tmp/tquota2 is exceeded: quota = 157286400 B = 150 MB but diskspace consumed = 402653184 B = 384 MB
```
#### 可能原因
目录配置的剩余的空间小于写文件实际需要的空间。
#### 原因分析
1. HDFS支持设置某目录的配额，即限制某目录下的文件最多占用空间大小，例如如下命令是设置"/tmp/tquota"目录最多写入150MB的文件（文件大小\*副本数）。 **hadoop dfsadmin -setSpaceQuota 150M /tmp/tquota2**
   
2. 使用如下命令可以查看目录设置的配额情况，SPACE_QUOTA是设置的空间配额，REM_SPACE_QUOTA是当前剩余的空间配额。 **hdfs dfs -count -q -h -v /tmp/tquota2**
   图1查看目录设置的配额   
   ![](https://support.huaweicloud.com/trouble-mrs/zh-cn_image_0264281697.png "点击放大") 
3. 日志分析，如下日志说明写入文件需要消耗384M，但是当前的空间配额是150M，因此空间不足。写文件前，需要的剩余空间是：块大小\*副本数，128M\*3副本=384M。
   ```
   [omm@189-39-150-115 client]$ 
   [omm@189-39-150-115 client]$ hdfs dfs -put switchuser.py  /tmp/tquota2
   put: The DiskSpace quota of /tmp/tquota2 is exceeded: quota = 157286400 B = 150 MB but diskspace consumed = 402653184 B = 384 MB
   ```
   
 
#### 处理步骤
1. 增加配额大小，即重新设置目录的配额大小。 
   **hadoop dfsadmin -setSpaceQuota 150G /** *目录名*
   
   
2. 清空配额。 
   **hdfs dfsadmin -clrSpaceQuota /** *目录名*
   
   
 
