我在 Ubuntu 18.04 上。我正在尝试运行一个涉及在缓存目录中创建大量文件的命令:$XDG_CACHE_HOME
。我已将此变量设置为/media/michael/Storage2/cache/
,以强制将缓存安装在此处而不是安装到我的 Linux 分区中。
所讨论的磁盘有足够的剩余空间和 inode:
$ df /media/michael/Storage2/
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdc1 1953512444 843210596 1110301848 44% /media/michael/Storage2
$ df -i /media/michael/Storage2/
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sdc1 1115872408 5527524 1110344884 1% /media/michael/Storage2
但是,当我运行有问题的命令(pre-commit run --all-files
涉及运行npm install
以安装节点包)时,出现以下错误:
23065 verbose stack Error: ENOSPC: no space left on device, mkdir '/media/michael/Storage2/cache/pre-commit/repo822s6gpl/node_modules/.staging/deep-is-660143e4'
23066 verbose cwd /media/michael/Storage2/cache/pre-commit/repo822s6gpl
23067 verbose Linux 4.19.34-041934-generic
23068 verbose argv "/usr/bin/node" "/home/michael/.nvm/versions/node/v10.22.0/bin/npm" "install"
23069 verbose node v14.13.1
23070 verbose npm v6.14.6
23071 error code ENOSPC
23072 error syscall mkdir
23073 error path /media/michael/Storage2/cache/pre-commit/repo822s6gpl/node_modules/.staging/deep-is-660143e4
23074 error errno -28
23075 error nospc ENOSPC: no space left on device, mkdir '/media/michael/Storage2/cache/pre-commit/repo822s6gpl/node_modules/.staging/deep-is-660143e4'
23076 error nospc There appears to be insufficient space on your system to finish.
23076 error nospc Clear up some disk space and try again.
23077 verbose exit [ -28, true ]
该驱动器最不寻常的地方是它通过 NTFS-3G(FUSE)使用 NTFS:
df -T /media/michael/Storage2/
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sdc1 fuseblk 1953512444 843220496 1110291948 44% /media/michael/Storage2
lsblk -no name,fstype /dev/sdc1
sdc1 ntfs
如果情况并非如此,那么可能出现什么问题导致无空间错误?
额外信息:
$ grep Storage2 /etc/mtab
/dev/sdc1 /media/michael/Storage2 fuseblk rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096 0 0
答案1
看起来您系统上的所有 docker 容器都共享相同的磁盘空间。——我找到了两个解决方案:——
1 => 进入Docker Desktop 的设置并增加可用的磁盘空间量。
2 => 运行 docker container prune 来释放已停止的容器正在使用的磁盘空间。
就我的情况而言,几个月前我就停止了一堆 Docker 容器,它们占用了分配给 Docker 的所有磁盘空间。