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:
-
El código de podman, https://github.com/containers/podman, utiliza https://github.com/containers/storage el cual tiene la utilidad
containers-storage
que puede utilizarse para confirmar elgraphdriver
por defecto:$ doas apt-get install -V containers-storage $ containers-storage --debug status DEBU[0000] Root: /home/jmpc/.local/share/containers/storage DEBU[0000] Run Root: /run/user/1000/containers DEBU[0000] Driver Name: vfs DEBU[0000] Driver Options: [] DEBU[0000] [graphdriver] trying provided driver "vfs" error initializing: chown /home/jmpc/.local/share/containers/storage/vfs: operation not permitted
-
Ver como a partir del comando
podman info
se llama a la función getRootlessStorageOpts donde se asigna por defecto el drivervfs
.