Mejorar velocidad del storage en podman

2022/08/26

Problema

podman funciona demasiado lento.

El sistema operativo es debian testing (Debian GNU/Linux bookworm/sid)

Diagnóstico

Una pista al problema se encuentra en los issues de podman, particularmente el issue 13226, el cual indica que el problema puede ser debido al driver utilizado por el storage. Allí se indica que el storage driver utilizado por el usuario que creó la incidencia puede ser vfs en lugar de overlay y que esto afecta significativamente la performance.

Buscando en la [documentacion de podman] se indica que el storage driver por defecto

is vfs for non-root users when fuse-overlayfs is not available

Si bien de lo anterior no queda muy claro que por defecto el storage driver utilizado vaya a ser overlay, esto se aclara en la nota al final:

The fuse-overlayfs package is a tool that provides the functionality of OverlayFS in user namespace that allows mounting file systems in rootless environments. It is recommended to install the fuse-overlayfs package.

Por lo tanto, buscamos cual es el storage utilizado por podman y si está instalado el paquete fuse-overlayfs:

$ podman info | grep graphDriverName
  graphDriverName: vfs
$ dpkg -s fuse-overlayfs | grep -e Status -e Version
Status: install ok installed
Version: 1.9-1

O sea, storage driver incorrecto (queremos utilizar el overlay) y paquete fuse-overlayfs instalado correctamente.

Intento de solución

Pasamos a eliminar (y confirmar) los archivos de podman que almacena el usuario local:

$ podman system reset --force
$ ls -lha $HOME/.local/share/containers
total 8.0K
drwx------  2 jmpc jmpc 4.0K Aug 26 20:46 .
drwx------ 23 jmpc jmpc 4.0K Aug 26 20:41 ..

Ahora, en teoría, ya que el default debería ser overlay lo comprobamos nuevamente:

$ podman info | grep graphDriverName
  graphDriverName: vfs

Solución

Buscando en el archivo troubleshooting en el código fuente de podman se encuentra que es posible utilizar el archivo ~/.config/containers/storage.conf para modificar la configuración del storage de podman (punto 7).

En este caso se utiliza:

$ mkdir -p ~/.config/containers/
$ cat > ~/.config/containers/storage.conf <<'END'
[storage]
driver = "overlay"
END

para configurar podman y corroboramos que el cambio fué aplicado correctamente utilizando:

$ podman info | grep graphDriverName
  graphDriverName: overlay

Determinación del problema

TODO.

Notas: