OSError: [Errno 16] Device or resource busy: ‘.nfs*‘报错解决办法

news2024/9/25 17:34:27

目录

  • 1 项目场景&问题描述:
  • 2 原因分析:
    • 2.1 问题背景:
  • 3 解决方案:
    • 3.1 创建存放临时文件的目录
    • 3.2 使用该目录
      • 3.2.1 设置环境变量 TMPDIR
      • 3.2.2 运行时设置(推荐)
      • 3.2.3 代码中设置
  • 4 总结


1 项目场景&问题描述:

Linux下在加载DataLoader中报错

Testing DataLoader 0: 100%|██████████| 21/21 [00:04<00:00,  5.06it/s]Traceback (most recent call last):
  File "/root/miniconda3/envs/pli/lib/python3.8/multiprocessing/util.py", line 300, in _run_finalizers
    finalizer()
  File "/root/miniconda3/envs/pli/lib/python3.8/multiprocessing/util.py", line 224, in __call__
    res = self._callback(*self._args, **self._kwargs)
  File "/root/miniconda3/envs/pli/lib/python3.8/multiprocessing/util.py", line 133, in _remove_temp_dir
    rmtree(tempdir)
  File "/root/miniconda3/envs/pli/lib/python3.8/shutil.py", line 718, in rmtree
    _rmtree_safe_fd(fd, path, onerror)
  File "/root/miniconda3/envs/pli/lib/python3.8/shutil.py", line 675, in _rmtree_safe_fd
    onerror(os.unlink, fullname, sys.exc_info())
  File "/root/miniconda3/envs/pli/lib/python3.8/shutil.py", line 673, in _rmtree_safe_fd
    os.unlink(entry.name, dir_fd=topfd)
OSError: [Errno 16] Device or resource busy: '.nfs05fc000000a862ca0000099b'
Traceback (most recent call last):
  File "/root/miniconda3/envs/pli/lib/python3.8/multiprocessing/util.py", line 300, in _run_finalizers
    finalizer()
  File "/root/miniconda3/envs/pli/lib/python3.8/multiprocessing/util.py", line 224, in __call__
    res = self._callback(*self._args, **self._kwargs)
  File "/root/miniconda3/envs/pli/lib/python3.8/multiprocessing/util.py", line 133, in _remove_temp_dir
    rmtree(tempdir)
  File "/root/miniconda3/envs/pli/lib/python3.8/shutil.py", line 718, in rmtree
    _rmtree_safe_fd(fd, path, onerror)
  File "/root/miniconda3/envs/pli/lib/python3.8/shutil.py", line 675, in _rmtree_safe_fd
    onerror(os.unlink, fullname, sys.exc_info())
  File "/root/miniconda3/envs/pli/lib/python3.8/shutil.py", line 673, in _rmtree_safe_fd
    os.unlink(entry.name, dir_fd=topfd)
OSError: [Errno 16] Device or resource busy: '.nfs65fc000000a862ca00000999'

2 原因分析:

与在 Linux 系统上使用无状态的文件服务器(如 NFS)时遇到的文件访问和临时文件处理有关。

2.1 问题背景:

当文件被一个进程使用时,Linux 在删除该文件时不会立即从磁盘上删除,而是将其重命名为一个以 .nfs 开头的临时文件(例如 .nfs0000)。这意味着,其他进程在文件被删除时仍然可以继续访问这个文件。
迁移文件时,将整个文件迁移到了文件服务器上,临时文件也存储在了这个无状态的文件服务器上。当一个进程在尝试删除这些临时文件时,由于其他进程仍在使用它们,就会引发 OSError: [Errno 16] Device or resource busy 错误。


3 解决方案:

3.1 创建存放临时文件的目录

mkdir -m 1777 /你要存放的路径/tmp

创建了一个目录,权限设为 1777,意味着任何用户都可以读、写、执行该目录。

3.2 使用该目录

3.2.1 设置环境变量 TMPDIR

可以通过设置环境变量 TMPDIR 来指定临时文件的目录。常见的环境变量包括:

  • TMPDIR
  • TEMP
  • TMP
    通过这些环境变量,系统或程序会将临时文件写入你指定的目录。具体设置可以通过在命令行运行以下命令:
export TMPDIR=/路径/tmp

3.2.2 运行时设置(推荐)

或者在启动容器时直接设置这个变量。例如,在运行 PyTorch 的程序时,你可以在命令行中运行:

TMPDIR=/路径/tmp python your_script.py

这样,程序中的临时文件就会被写入到 /路径/tmp。

推荐默认后台运行记录log,记得先创建与main.py同级目录的log文件夹

nohup TMPDIR=/路径/tmp python main.py > ./log/running.log &

3.2.3 代码中设置

如果你在代码中想要控制临时文件的路径,可以通过 Python 的 tempfile 模块来设置。例如,使用 tempfile 时可以显式指定 dir 参数:

import tempfile
# 创建一个临时文件,临时文件存放在指定的目录中
with tempfile.TemporaryDirectory(dir="/路径/tmp") as tmpdirname:
    print('Temporary directory created at', tmpdirname)

对于 PyTorch 中的 DataLoader,可以尝试设置临时路径到新目录:

import os
os.environ['TMPDIR'] = '/路径/tmp'

这样,PyTorch 生成的临时文件也会放置在你创建的新目录下,而不会出现 NFS 的问题。

4 总结

我的设置的临时文件目录是/dataNfs/tmp,这样运行的临时文件就在这里了。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2164308.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis 键值对数据库学习

目录 一、介绍 二、安装以及连接 三、设置连接密码 四、连接报错 五、redis 操作字符串以及过期时间 六、 redis 列表操作 七、redis 集合操作 八、hash 哈希操作 九、redis 发布和订阅操作 十、RDB和AOF的两种数据持久化机制 十一、 其他机器连接redis 十二、 pyt…

【Linux】解锁文件描述符奥秘,高效缓存区的实战技巧

fd和缓冲区 1. 文件描述符fd1.1. 概念与本质1.2. 打开文件的管理1.3. 一切皆文件的理解1.4. 分配规则1.5. 重定向的本质1.5.1. dup2 2. FILE中的缓冲区2.1. 概念2.2. 存在的原因2.3. 类型(刷新方案)2.4. 存放的位置2.4.1. 代码证明、现象解释 2.5. 模拟C标准库中的方法 1. 文件…

LiveGBS流媒体平台GB/T28181功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大

LiveGBS流媒体平台GB/T28181功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大 1、直播播放2、录像播放3、搭建GB28181视频直播平台 1、直播播放 国标设备-》查看通道-》播放 &#xff0c;左键单击可以拉取矩形框&#xff0c;放大选中的范围&#xff0c;释…

IPD如何解决产品开发的典型问题

IPD&#xff08;Integrated Product Development&#xff0c;集成产品开发&#xff09;是一种领先的、成熟的产品开发的管理思想和管理模式。它是根据大量成功的产品开发管理实践总结出来的&#xff0c;并被大量实践证明的高效的产品开发模式。从汉捷咨询二十多年来为五百多家企…

如何通过代理使用 Squid: 综合指南

文章目录 一、简介二、什么是 Squid?三、为什么在代理服务器中使用 Squid&#xff1f;四、设置代理五、使用代理设置 Squid5.1. 第一步5.2. 第二步5.3. 第三步 六、在网络搜索中使用代理&#xff1a;实用代码示例6.1. 使用代理的 cURL6.2. 使用代理的 Python 请求 七、结论 一…

嘉立创EDA-- 线宽、过孔和电流大小对比图

导线宽度和电流大小如何来考虑 1 电流大小需要考虑问题 1、允许的温升&#xff1a;如果能够允许的铜线升高的温度越高&#xff0c;那么允许通过的电流自然也就越高 2、走线的线宽&#xff1a;线越宽 &#xff0c;导线横截面积越大&#xff0c;电阻越小&#xff0c;发热越小&a…

磨具生产制造9人共用一台工作站

随着技术的不断进步与工业自动化的深入发展&#xff0c;如何优化生产流程、提高设备利用率成为了众多企业面临的重大课题。那么在磨具生产制造中实现9人共用一台工作站呢&#xff1f; 一、背景与挑战 在磨具制造行业&#xff0c;高精度、高效率的生产要求与复杂多变的工艺流程…

smartctl 命令:查看硬盘健康状态

一、命令简介 ​smartctl​ 命令用于获取硬盘的 SMART 信息。 介绍硬盘SMART 硬盘的 SMART (Self-Monitoring, Analysis, and Reporting Technology) 技术用于监控硬盘的健康状态&#xff0c;并能提供一些潜在故障的预警信息。通过查看 SMART 数据&#xff0c;用户可以了解硬…

如何选择渲染集群管理软件?

选择适合渲染集群管理软件可以考虑以下几个方面&#xff1a; 1.渲染需求&#xff1a;明确自己的渲染任务类型、规模和复杂度。如果需要处理大型、复杂的项目&#xff0c;对渲染效率和速度要求较高&#xff0c;就需要选择性能强劲的软件。 2.软件兼容性&#xff1a;确保软件支持…

[极客大挑战 2019]EasySQL1

前言&#xff1a; 记录一下web方面的题(第一次接触。。。&#xff09; 学校课程要学web…… - - 行吧&#xff0c;尝试一下&#xff0c;至少学过MySQL。。。 不过&#xff0c;实际上&#xff0c;现实现在SQL漏洞少得可怜&#xff0c;但学习不会有错。 参考&#xff1a;&…

vue-cli,element-plus,axios,proxy

一、vue-cli vue-cli俗称vue脚手架&#xff0c;是vue官方提供的快速生成vue 工程化项目的工具。 1.官网&#xff1a;https://cn.vuejs.org/ 中文官网: https://cli.vuejs.org/zh/ 特点&#xff1a;基于webpack&#xff0c;功能丰富且易于扩展&#xff0c;支持创建vue2和vu…

学校快递站点管理|基于springboot学校快递站点管理设计与实现(源码+数据库+文档)

学校快递站点管理系统目录 目录 基于springboot学校快递站点管理设计与实现 一、前言 二、系统功能设计 三、系统实现 前台功能模块 后台功能角模块 四、数据库设计 1、实体ER图 2、具体的表设计如下所示&#xff1a; 五、核心代码 六、论文参考 七、最新计算机毕设…

本地搭建OnlyOffice在线文档编辑器结合内网穿透实现远程协作

文章目录 前言1. 安装Docker2. 本地安装部署ONLYOFFICE3. 安装cpolar内网穿透4. 固定OnlyOffice公网地址 前言 本篇文章讲解如何使用Docker在本地Linux服务器上安装ONLYOFFICE&#xff0c;并结合cpolar内网穿透实现公网访问本地部署的文档编辑器与远程协作。 Community Editi…

LVM的基本概念,PD PP PV VG LV PE等概念

LVM&#xff08;Logical Volume Manager&#xff0c;逻辑卷管理器&#xff09;是 Linux 系统中一种灵活的磁盘分区管理工具&#xff0c;允许动态地调整存储设备的大小和配置&#xff0c;而无需停止系统。LVM 在传统的分区管理工具上添加了更灵活的管理功能&#xff0c;特别适合…

逆向推理+ChatGPT,让论文更具说服力

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 使用ChatGPT辅助“逆向推理”技巧&#xff0c;可以显著提升论文的质量和说服力。逆向推理从结论出发&#xff0c;倒推所需的证据和论点&#xff0c;确保整个论证过程逻辑严密且无漏洞。…

Linux快速安装ClickHouse(附官方文档)

在线安装 1.安装yum-utils yum-utils是一个与 yum 集成的实用程序集合&#xff0c;可以通过多种方式扩展其本机功能 yum install -y yum-utils 2.增加ClickHouse官方镜像源 yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo 3.安装Cl…

【推荐100个unity插件之34】在unity中实现和Live2D虚拟人物的交互——Cubism SDK for Unity

最终效果 文章目录 最终效果前言例子中文官网Live2d模型获取下载Live2D Cubism SDK for Unity使用文档限制unity导入并使用Live2D模型1、将SDK载入到项目2、载入模型3、显示模型4、 播放动画 表情动作修改参数眼神跟随看向鼠标效果部位触摸效果摸头效果摸头闭眼效果做成桌宠参考…

企业如何通过ETL工具实现主数据的同步

1、 主数据的定义与重要性 主数据&#xff0c;作为企业的核心数据资产&#xff0c;涵盖了客户、产品、供应商、员工等关键业务实体信息。这些数据的稳定性、共享性和对决策的影响力&#xff0c;使其成为企业运营和战略决策不可或缺的基础。主数据的质量与一致性直接关系到企业…

数据结构-4.栈与队列

本篇博客给大家带来的是栈和队列的知识点, 其中包括两道面试OJ题 用队列实现栈 和 用栈实现队列. 文章专栏: Java-数据结构 若有问题 评论区见 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条, 如果分享不成功, 那我就会回你一下,那样你就分享成功啦. 你们的…

在Unity编辑器中实现组件的复制与粘贴:完整指南

内容将会持续更新&#xff0c;有错误的地方欢迎指正&#xff0c;谢谢! 在Unity编辑器中实现组件的复制与粘贴&#xff1a;完整指南 TechX 坚持将创新的科技带给世界&#xff01; 拥有更好的学习体验 —— 不断努力&#xff0c;不断进步&#xff0c;不断探索 TechX —— 心…