Linux中 [Error 28] 设备上没有空间

在Linux中设备空间有两个条件决定的:硬盘容量 和 索引节点(Inode)

  • 硬盘容量: 即硬盘可用容量
  • Inode : 即索引节点编号(记录文件的大小、拥有者、权限、区块地方等信息,可以通过 stat 命令查看)。每个分区中都会有固定大小的Inode容量,每个Inode节点也会占用硬盘空间,一般是128 bits 或256 bits。Inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个Inode,要查看各分区的Inode情况可以通过 df -i 查看。

硬盘与Inode其中一项超额就会造成设备上没有空间异常错误, 当出现这类错误基本上可以从这两个方面去考虑。


一般使用命令df显示每个文件所在的文件系统的信息,默认是显示所有文件系统。

df --help

用法:df  [选项]... [文件]...

长选项必须使用的参数对于短选项时也是必需使用的。

  -a, --all                                include dummy file systems
  -B, --block-size=SIZE      use SIZE-byte blocks
        --direct                          show statistics for a file instead of mount point
        --total                            produce a grand total
  -h, --human-readable       print sizes in human readable format (e.g., 1K 234M 2G)
  -H, --si                                likewise, but use powers of 1000 not 1024
  -i, --inodes                         显示inode 信息而非块使用量
  -k                                         即--block-size=1K
  -l, --local                             只显示本机的文件系统
      --no-sync                        取得使用量数据前不进行同步动作(默认)
  -P, --portability                   使用POSIX 兼容的输出格式
        --sync                           取得使用量数据前先进行同步动作
  -t, --type=类型                   只显示指定文件系统为指定类型的信息
  -T, --print-type                   显示文件系统类型
  -x, --exclude-type=类型  只显示文件系统不是指定类型信息
  -v                                       (忽略)
      --help                            显示此帮助信息并退出
      --version                      显示版本信息并退出

所显示的数值是来自 --block-size、DF_BLOCK_SIZE、BLOCK_SIZE 及 BLOCKSIZE 环境变量中第一个可用的 SIZE 单位。否则,默认单位是 1024 bits (或是 512bits,若设定 POSIXLY_CORRECT 的话)。

SIZE 可以是一个可选的整数,后面跟着以下单位中的一个:KB 1000,K 1024,MB 1000*1000,M 1024*1024,还有 G、T、P、E、Z、Y。

请向bug-coreutils@gnu.org 报告df 的错误
GNU coreutils 项目主页:http://www.gnu.org/software/coreutils/
GNU 软件一般性帮助:<http://www.gnu.org/gethelp/>
请向http://translationproject.org/team/zh_CN.html报告df 的翻译错误
要获取完整文档,请运行:info coreutils 'df invocation'


判断硬盘满:(发现有占用率达100% 就可以断定该分区满了)

df -h

 硬盘满了一般删除不要的临时文件,清空日志文件等不需要的文件即可(最好同时看下inode使用情况)。

 判断inode满:(发现有占用率达100%就可以断定该分区碎片文件超多)

df -ia

Inode满了一般就是垃圾小文件多造成的。Linux下有很多服务会生成日志文件,如果处理不当,几年下来删除都是个头痛事(上万文件后 rm 使用就困难,甚至rm无法全部删除)。常见 crontab 定时服务就会产生邮件日志,一般不需要邮件的可在 crontab -e 中最上面添加一行  MAILTO=""  关闭邮件发送。

当不知道有哪些目录中存在大量碎片文件时,可通过命令:(查找出超过10M的目录,再行处理)

find / -type d -size +10M

或者使用命令:(找出目录下文件总数,可能需要执行多次,直到找出具体的目录)

cd /
find */ ! -type l | cut -d / -f 1 | uniq -c

当找到的目录中存在上百万文件时 rm 是无法一次性删除的,可以使用rsync命令来删除:

mkdir /tmp/del_path  #创建临时空目录
rsync --delete  -a -H -v  /tmp/del_path/  /val/logs/   #删除/val/logs/下所有文件

本帖转自https://blog.csdn.net/u010455714/article/details/77711834

### 环境配置与解决方案 当使用 `pip` 安装 Python 包时,如果遇到 `[Errno 28] No space left on device` 的错误提示,这通常是因为当前系统的磁盘空间不足所导致的。以下是针对该问题的具体分析和解决方法: #### 1. **检查磁盘空间** 在 Linux 或类 Unix 系统中,可以运行命令来查看磁盘空间的占用情况: ```bash df -h ``` 此命令会列出各个挂载点及其可用空间大小。通过观察 `/tmp` 和其他可能涉及的操作路径是否有足够的剩余空间,确认是否存在实际的空间不足问题[^2]。 #### 2. **调整缓存目录** 默认情况下,`pip` 使用的是系统级别的临时目录作为其工作区(通常是 `/tmp`),而这些区域可能会因为频繁操作或其他程序占满而导致安装失败。可以通过设置自定义缓存目录解决问题: ```bash mkdir /data1/pip_cache pip install lmdeploy==0.5.3 --cache-dir /data1/pip_cache ``` 上述例子展示了如何创建新的存储位置并将其分配给 `--cache-dir` 参数以绕过原有限制。 #### 3. **修改环境变量 TMPDIR** 除了改变缓存外,还可以重新定义用于构建过程中的临时文件夹的位置。例如,在 shell 中执行以下语句前缀后再继续安装流程: ```bash export TMPDIR='/data1/pip_cache' pip install lmdeploy==0.5.3 --cache-dir /data1/pip_cache ``` 这里设置了 `TMPDIR` 到具有更多自由度的新分区上,从而避免原有路径上的容量瓶颈[^3]^,^[^5]。 #### 4. **清理不必要的数据释放资源** 有时即使采取了以上措施仍未能完全缓解状况,则需进一步排查整个服务器内部是否存在大量冗余资料占据宝贵额度;比如旧版本软件包副本、日志记录等都可以考虑删除掉以便腾出额外地方供后续动作所需[^1]. --- ### 总结说明 综上所述,面对由于磁盘空间短缺引发的一系列 pip 软件部署障碍,我们推荐先利用 df 命令检测具体哪部分最紧缺接着依据实际情况选用适当策略——要么转移至别处存放中间产物要么干脆清除一些无关紧要的东西最终达成顺利装载目标库的目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值