ENOSPC设备-Nodejs上没有剩余空间

时间:2018-05-02 19:21:37

标签: node.js

我刚刚为一个上传视频教程的机构用expressJs构建了一个应用程序。起初视频正在上传到同一台服务器,但后来我切换到亚马逊。我的意思是只有视频被上传到亚马逊。现在,每当我尝试上传ENOSPC时,我都会收到此错误。我已经清除了tmp文件无济于事。我需要说我已经广泛搜索过这个问题但是d解决方案似乎都不适用于我

12 个答案:

答案 0 :(得分:31)

我遇到了同样的问题,请在这里查看Stackoverflow中的选定答案:

Node.JS Error: ENOSPC

这是我使用的命令(我的操作系统:LinuxMint 18.3 Sylvia,它是基于Ubuntu / Debian的Linux系统)。

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

答案 1 :(得分:3)

只需清理Docker系统即可解决它。为我工作。

$ docker system prune

答案 2 :(得分:1)

在我自己的情况下。实际发生的是文件上传到Amazon Web服务上时,我没有从temp文件夹中删除文件。每个开发人员都知道,将文件上传到服务器时,它们最初存储在temp文件夹中,然后再复制到您想要的任何文件夹中(我知道Nodejs和php);因此,尝试删除您的temp文件夹并查看。并且确保您的上传方法在每次上传后都能立即清除您的temp文件夹

答案 3 :(得分:1)

我的脚本尝试创建新文件时出现此错误。看起来磁盘上有很多空间,但是如果磁盘上有数百万个小文件,那么您可能已经用尽了所有可用的索引节点。运行df -hi以查看有多少可用的inode。

答案 4 :(得分:1)

您可以使用以下方法临时设置新的限制:

sudo sysctl fs.inotify.max_user_watches=524288

sudo sysctl -p

如果您想将限额设为永久性,请使用:

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf

sudo sysctl -p

答案 5 :(得分:0)

在我的情况下,在docker中运行nodeJS时出现错误“ npm WARN tar ENOSPC:设备上没有剩余空间”,我只是使用以下命令回收空间。

garage <- lapply( 1:5, function(v1) {
                        matrix( rnorm(v1^2, 10, 3), v1, v1)
                       } )
names(garage) <- sprintf("cart_%d", 1:5)
garage[["cart_3"]]
tmpvar <- "cart_5"
garage[[tmpvar]]

sapply(garage, det)

rm(garage)

答案 6 :(得分:0)

我遇到过类似的情况,其中磁盘可用,但系统无法创建新文件。我永远使用我的节点应用程序。永远需要打开一个文件来跟踪其运行的节点进程。

如果您的系统上有可用的可用存储空间,但是不断收到错误消息,例如“设备上没有剩余空间”;您可能会遇到inode表中没有足够空间的问题。

使用df -i给出IUser%这样的 文件系统索引节点IUse IFree IUse%Mounted on udev 992637 537 992100 1%/ dev tmpfs 998601 1023 997578 1%/运行

如果您的IUser%达到100%,则意味着您的inode表已用尽

识别系统中的虚拟文件或不必要的文件并将其删除

答案 7 :(得分:0)

  1. 打开`Docker Desktop
  2. 转到“疑难解答”
  3. 点击“重置为出厂默认值”

答案 8 :(得分:0)

先前的答案在短时间内解决了我的问题。 我必须找到未被使用的大文件并正在填充磁盘。 在运行的主机上:df 我知道了,我的问题是:/ dev / nvme0n1p3

Filesystem     1K-blocks      Used Available Use% Mounted on
udev            32790508         0  32790508   0% /dev
tmpfs            6563764    239412   6324352   4% /run
/dev/nvme0n1p3 978611404 928877724         0 100% /
tmpfs           32818816    196812  32622004   1% /dev/shm
tmpfs               5120         4      5116   1% /run/lock
tmpfs           32818816         0  32818816   0% /sys/fs/cgroup
/dev/nvme0n1p1    610304     28728    581576   5% /boot/efi
tmpfs            6563764        44   6563720   1% /run/user/1000

我安装了ncdu并在根目录下运行它,您可能需要手动删除一个小文件来为ncdu腾出空间,如果无法这样做,则可以使用df手动查找这些文件:

sudo apt-get install ncdu
sudo ncdu /

可以帮助我识别文件,在我的情况下,这些文件位于/ tmp文件夹中,然后我使用此命令删除了最近10天未使用的文件: 使用此应用程序,我可以识别大文件并删除tmp文件:(Sep-4 12:26)

sudo find /tmp -type f -atime +10 -delete

答案 9 :(得分:0)

我很努力地解决了这个问题,有一段时间,下面的命令奏效了。


docker 系统修剪


但后来我检查了音量,它已满。我检查了才知道node_modules成了真正的麻烦。

所以,我删除了 node_modules,再次运行 NPM 安装,它的效果非常好。

注意:- 这对我适用于 NODEJS 和 REACTJS 项目。

答案 10 :(得分:0)

我遇到了同样的问题,如果您还没有清理垃圾,请为我工作:

(我从论坛搜索的命令,所以在你决定使用它之前先阅读它,我是一个初学者,只是复制它,我不知道它的全部作用)

$ rm -rf ~/.local/share/Trash/*

命令来自这个论坛:

https://askubuntu.com/questions/468721/how-can-i-empty-the-trash-using-terminal

答案 11 :(得分:0)

就我而言,Linux ext4 文件系统,应启用 large_dir 功能。

// check if it's enabled
sudo tune2fs -l /dev/sdc  | grep large_dir

// enable it
sudo tune2fs -O  large_dir  /dev/sda

在 Ubuntu 上,除非启用 large_dir,否则默认情况下 ext4 FS 对单个目录中的文件数有 64M 的限制。