You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure IoT Edge设备Node-RED模块故障及磁盘空间问题求助

Azure IoT Edge模块运行时错误(磁盘空间不足)排查与解决

故障根因

  • 磁盘空间完全耗尽是触发Connection reset by peer (os error 104)错误的核心原因:Docker及IoT Edge模块在磁盘满的情况下无法正常读写数据,导致网络连接被强制重置。
  • Node-RED模块未配置日志轮转策略,持续生成无限制的日志文件,逐步占满磁盘。同类设备因日志管理策略合理,磁盘占用仅维持在10%左右。

紧急解决方法

1. 快速释放磁盘空间

  • 先停止IoT Edge服务避免清理时冲突:
    sudo systemctl stop iotedge
    
  • 清理Docker闲置资源(未使用的镜像、容器、卷等):
    sudo docker system prune -af
    
  • 定位并处理Node-RED的超大日志文件:
    • 找到Node-RED容器ID:
      sudo docker ps -a | grep node-red
      
    • 查询容器日志文件路径:
      sudo docker inspect <容器ID> | grep LogPath
      
    • 安全截断日志文件(避免直接删除导致容器异常):
      sudo truncate -s 0 <日志文件路径>
      
  • 重启IoT Edge服务并验证:
    sudo systemctl start iotedge
    # 检查磁盘空间
    df -h
    # 检查模块状态
    sudo iotedge list
    

2. 恢复模块连接

磁盘空间释放后,重启异常模块即可恢复连接:

sudo iotedge restart <模块名称>

长期预防措施

1. 配置全局Docker日志轮转

编辑Docker守护进程配置文件/etc/docker/daemon.json,添加日志大小与数量限制:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

重启Docker服务生效:

sudo systemctl restart docker

2. 为Node-RED模块单独配置日志限制

在IoT Edge部署清单中,针对Node-RED模块添加更精细的日志控制:

"node-red": {
  "settings": {
    "LogConfig": {
      "Type": "json-file",
      "Config": {
        "max-size": "5m",
        "max-file": "2"
      }
    }
  }
}

3. 定期监控磁盘空间

添加定时任务,定期检查磁盘使用率并触发告警:

# 编辑定时任务
sudo crontab -e
# 添加以下内容(每天凌晨2点检查根分区,使用率超80%则记录告警)
0 2 * * * df -h | grep '/dev/root' | awk '{if($5+0 > 80) print "["$(date)"] Disk space warning: " $5 " used" >> "/var/log/disk_warn.log"}'

4. 定期清理IoT Edge冗余数据

  • 清理未使用的模块镜像:
    sudo docker image prune -af
    
  • 清理IoT Edge HSM缓存:
    sudo rm -rf /var/lib/iotedge/hsm/cache/*
    

内容的提问来源于stack exchange,提问作者Arseniy Sleptsov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 13:07:29