创建文件报错 no space left on device
现象描述
在Linux云服务器中创建新文件时,出现nospaceleftondevice报错
可能原因
- 硬盘空间处于已满状态
- 文件系统inode满
- dfdu处于不一致状态
故障处理
硬盘空间处于已满状态
- 执行以下命令,查看硬盘使用率
df-h
- 定位硬盘使用率较高的挂载点,并执行以下命令进入该挂载点。
cd对应挂载点
例如,如需cd系统盘挂载点,则执行cd/
- 执行以下命令,查找占用空间较大的目录。
du-x--max-depth=1|sort-n
根据定位到占用空间最大的目录容量情况,执行以下步骤:
如果目录容量远低于硬盘总空间,请检查dfdu是否不一致步骤继续排查问题。
如果目录容量较大,若定位到占用空间较大的文件,综合业务情况评估是否可删除。若无法删除,请通过扩容云硬盘扩大硬盘存储空间。
检查文件系统是否inode满
- 执行以下命令,查看硬盘使用率。
df-i
- 定位硬盘使用率较高的挂载点,并执行以下命令进入该挂载点。
cd对应挂载点
- 执行以下命令,查找文件个数最多的目录,解决该问题。该命令较耗时,请耐心等待。
find/-typef|awk-F/-vOFS=/'{$NF="";dir[$0]++}END{for(iindir)printdir[i]""i}'|sort-k1-nr|head
检查dfdu是否不一致
解决进程占用文件句柄问题
执行以下命令,查看占用文件的进程
lsof|grepdelete
请根据返回结果,执行以下步骤:
kill对应进程。
重启服务。
若较多进程占用文件句柄,可重启服务器。
解决mount挂载嵌套问题
- 执行mount命令,mount占用空间大的磁盘到/mnt。例如:
mount/dev/vda1/mnt
- 执行以下命令,进入/mnt。
cd/mnt
- 执行以下命令,查找占用空间较大的目录。
du-x--max-depth=1|sort-n
根据返回结果,综合业务情况评估是否可删除目录或文件。
- 执行umount命令,umount磁盘。例如:
umount/mnt