尝试安装 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】:pip
在pip 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 运行时
如何使用 Tensorflow V.2.4 RTX 2070 Super Ubuntu 18.04 安装 Cuda 10.1