尽管有空间并且设置了 tmpdir,Podman 仍显示错误“设备上没有剩余空间”

尽管有空间并且设置了 tmpdir,Podman 仍显示错误“设备上没有剩余空间”

我在 RHEL 8 VM 上安装了 150GB /docker 分区,并且以 root 身份以及具有 sudo 的本地用户身份运行了此命令:

export TMPDIR=/docker

让 Podman 更改其默认 tmpdir。但是,在导入 54GB .tar 时,我们遇到了以下错误。我缺少什么配置设置?

$  podman import dockerfile.tar
Getting image source signatures
Copying blob b45265b317a7 done
Error: writing blob: adding layer with blob "sha256:b45265b317a7897670ff015b177bac7b9d5037b3cfb490d3567da959c7e2cf71": Error processing tar file(exit status 1): write /a65be6ac39ddadfec332b73d772c49d5f1b4fffbe7a3a419d00fd58fcb4bb757/layer.tar: no space left on device

以下是我在此虚拟机上的分区:

$ df -h
Filesystem                                  Size  Used Avail Use% Mounted on
devtmpfs                                    3.9G     0  3.9G   0% /dev
tmpfs                                       3.9G   84K  3.9G   1% /dev/shm
tmpfs                                       3.9G   51M  3.8G   2% /run
tmpfs                                       3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/rhel_rhel86--svr-root            38G  7.2G   31G  20% /
/dev/sda2                                   495M  276M  220M  56% /boot
/dev/mapper/rhel_rhel86--svr-var             33G  1.4G   32G   5% /var
/dev/mapper/rhel_rhel86--svr-tmp            4.7G   66M  4.6G   2% /tmp
/dev/mapper/rhel_rhel86--svr-home            43G  1.6G   42G   4% /home
/dev/mapper/rhel_rhel86--svr-var_log        4.7G  104M  4.6G   3% /var/log
/dev/sdb                                    147G   56G   84G  40% /docker
/dev/mapper/rhel_rhel86--svr-var_log_audit  9.4G  168M  9.2G   2% /var/log/audit
/dev/mapper/rhel_rhel86--svr-var_tmp        1.9G   47M  1.9G   3% /var/tmp
/dev/sda1                                   500M  5.9M  494M   2% /boot/efi
tmpfs                                       785M  8.0K  785M   1% /run/user/42
tmpfs                                       785M     0  785M   0% /run/user/1000

这是 /etc/containers/storage.conf 的一部分

# Default Storage Driver, Must be set for proper operation.
driver = "overlay"

# Temporary storage location
runroot = "/docker"

# Primary Read/Write location of container storage
# When changing the graphroot location on an SELINUX system, you must
# ensure  the labeling matches the default locations labels with the
# following commands:
# semanage fcontext -a -e /var/lib/containers/storage /NEWSTORAGEPATH
# restorecon -R -v /NEWSTORAGEPATH
graphroot = "/docker"

该虚拟机正在运行 SELinux,因此我运行了两个命令并重新启动:

semanage fcontext -a -e /var/lib/containers/storage /docker
restorecon -R -v /docker

我能够使用 Podman 成功导入另外两个大约 800MB 的 .tar 文件,所以我知道 Podman 运行正常。有人知道为什么即使 tmpdir 设置为 /docker,我的空间仍然不足吗?谢谢!

答案1

您的命令输出有答案。它尝试写入的文件是“/a65be6ac39ddadfec332b73d772c49d5f1b4fffbe7a3a419d00fd58fcb4bb757/layer.tar”

podman 命令正在尝试将一个 54GB 的文件写入 / 分区,该分区只有 38GB,如 df -h 命令所示,还有 31GB 可用。

即使您有 /docker 作为 tmpdir 并且它有足够的空间,/ 分区也没有足够的空间。要么增加 / 分区的大小,要么想办法将文件写入 /docker,因为 tmpdir 命令没有这样做,您在 storage.conf 文件中的配置设置也没有这样做

相关内容