尝试安装 Tensorflow 时,Ubuntu 上的“设备上没有剩余空间”

Posted

技术标签:

【中文标题】尝试安装 Tensorflow 时,Ubuntu 上的“设备上没有剩余空间”【英文标题】:"No space left on device" on Ubuntu when trying to install Tensorflow 【发布时间】:2020-09-26 15:14:07 【问题描述】:

我正在尝试使用 Python 3.8.2 在 Oracle Virtualbox 上的 Linux 虚拟机上安装 Tensorflow 2。本机具有以下特点:

操作系统:Ubuntu 20.04 LTS(64位)

GNOME 版本:3.36.1

窗口系统:X11

内存:9.5 GiB

磁盘容量:10.7 GB

在终端执行 pip install tensorflow==2.2.0 时,在最后阶段(下载完成后)出现以下错误:

ERROR: Could not install packages due to an EnvironmentError: [Errno 28] No space left on device

在终端输入 du -sh

12K      .

而 df 产生

Filesystem     1K-blocks    Used Available Use% Mounted on
udev             4952816       0   4952816   0% /dev
tmpfs             996192    1324    994868   1% /run
/dev/sda5        9736500 6919960   2302236  76% /
tmpfs            4980940       0   4980940   0% /dev/shm
tmpfs               5120       4      5116   1% /run/lock
tmpfs            4980940       0   4980940   0% /sys/fs/cgroup
/dev/loop0         56320   56320         0 100% /snap/core18/1705
/dev/loop1         56320   56320         0 100% /snap/core18/1754
/dev/loop2        246656  246656         0 100% /snap/gnome-3-34-1804/24
/dev/loop3        261760  261760         0 100% /snap/gnome-3-34-1804/36
/dev/loop4         63616   63616         0 100% /snap/gtk-common-themes/1506
/dev/loop5         51072   51072         0 100% /snap/snap-store/433
/dev/loop6         51072   51072         0 100% /snap/snap-store/454
/dev/loop7         27776   27776         0 100% /snap/snapd/7264
/dev/loop8         31104   31104         0 100% /snap/snapd/7777
/dev/sda1         523248       4    523244   1% /boot/efi
tmpfs             996188      24    996164   1% /run/user/1000

我曾尝试关注https://www.maketecheasier.com/fix-linux-no-space-left-on-device-error/ 和https://github.com/pypa/pip/issues/5816,但他们的解决方案似乎都不适合我。谁能帮我找出问题所在?

【问题讨论】:

我建议使用 strace 或 truss,以便找出哪个文件系统似乎太满了,然后再往前走。 在我看来,tmpfs 似乎没有安装在 tmp 上(如 df 所示),所以我尝试对 root 执行 cd 并键入“sudo mount -t tmpfs tmpfs ./tmp” .在那之后,安装工作......但不完全确定发生了什么 【参考方案1】:

可能是 inode 问题。试一试

df -i

或打开的文件数太高 尝试杀死相关进程:

find /proc/*/fd -ls | grep '(deleted)'

【讨论】:

不幸的是,我无法确定任何有问题的进程。顺便说一句,我今天早上试图重新打开我的虚拟机,但我得到了一个无论如何都不会消失的黑屏。我试图取消虚拟机并从头开始重新创建它,但 Ubuntu 安装不断崩溃。我最终放弃并在 Microsoft Azure 上创建了一个 VM。尽管没什么特别的(只有 2 GiB 内存),但一切都在那里完美运行。我想知道为什么在 Virtualbox 中一切都那么痛苦【参考方案2】:

pippip install 期间将文件下载到临时目录/tmp

该错误表明/tmp 在安装过程中空间不足。查看df 输出显示/tmp 没有作为tmpfs 挂载点挂载,表明/tmp 当前挂载在/ 下。

/ 的可用存储空间为 2,302,236 个 1K 块(来自您的 df 输出),大约为 2.3 GB(下次使用 df -h 以获得更多可读值)。

但是通过执行:

sudo mount -t tmpfs tmpfs /tmp

tmpfs 已安装到 /tmp。通常,tmpfs 分区的最大大小设置为可用 RAM 的一半,在您的情况下为 4.75GB,实质上是pip 可用空间的两倍。

【讨论】:

谢谢,现在我至少知道该命令为何有用了!我仍然想知道为什么它抱怨空间不足,因为 Tensorflow 2“只是”大约 500 MB。顺便说一句,我最终发现 Docker 更适合我的用例【参考方案3】:

我还在 Oracle VirtualBox 上运行 Ubuntu 20.04 LTS(64 位),并开始收到有关磁盘空间不足的警告。

在我的例子中,罪魁祸首是占用 771 MB 的 /var/cache/apt/archives 目录,这可能是您系统上的相同问题。原因被 /var/ 下的一个目录所掩盖,因此使用的存储在此处聚合,而不是作为单独的挂载点。

我使用了大锤方法sudo apt clean 并清除了缓存,相信apt 稍后会重新下载它可能需要的任何包。使用的存储空间从 771 MB 减少到 36 KB。

答案为时已晚,无法帮助 OP,希望对其他人有所帮助。

$ sudo du -ch /var/cache/apt/archives/
4.0K    /var/cache/apt/archives/partial
771M    /var/cache/apt/archives/
771M    total
$ sudo apt clean
$ sudo du -ch /var/cache/apt/archives/
4.0K    /var/cache/apt/archives/partial
36K    /var/cache/apt/archives/
36K    total
$ sudo du -ch -d 1 /var/cache
40K    /var/cache/apt
1.8M    /var/cache/man
40K    /var/cache/dictionaries-common
56K    /var/cache/ldconfig
8.0K    /var/cache/PackageKit
2.6M    /var/cache/fontconfig
20K    /var/cache/cups
15M    /var/cache/app-info
5.2M    /var/cache/debconf
2.1M    /var/cache/fwupd
2.2M    /var/cache/snapd
6.1M    /var/cache/cracklib
4.0K    /var/cache/gdm
484K    /var/cache/private
6.7M    /var/cache/apparmor
42M    /var/cache
42M    total
$

【讨论】:

以上是关于尝试安装 Tensorflow 时,Ubuntu 上的“设备上没有剩余空间”的主要内容,如果未能解决你的问题,请参考以下文章

Tensorflow 安装问题:无法加载原生 TensorFlow 运行时

ubuntu14安装tensorflow并测试

ubuntu下tensorflow安装

如何使用 Tensorflow V.2.4 RTX 2070 Super Ubuntu 18.04 安装 Cuda 10.1

在 Ubuntu 上安装 Tensorflow GPU / CUDA

在 ubuntu 的 gpu 上安装 tensorflow