Eu preciso reduzir meu /tmp LV então eu digito este comando:
$ sudo lvreduce -r -L -2G /dev/myVG/tmp
Do you want to unmount "/tmp" ? [Y|n] y
umount: /tmp: target is busy.
fsadm: Cannot proceed with mounted filesystem "/tmp".
/sbin/fsadm failed: 1
Filesystem resize failed.
Então eu investiguei com fuser
e lsof
mas eles não mostram nada:
$ sudo fuser -vm /tmp
USER PID ACCESS COMMAND
/tmp: root kernel mount /tmp
$ sudo lsof /tmp
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1001/gvfs
Output information may be incomplete.
lsof: WARNING: can't stat() fuse file system /run/user/1001/doc
Output information may be incomplete.
$ sudo lsof +f -- /tmp
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1001/gvfs
Output information may be incomplete.
lsof: WARNING: can't stat() fuse file system /run/user/1001/doc
Output information may be incomplete.
$
EDIT0: Eu criei /tmp manualmente (e outras partições também) antes de instalar o Ubuntu 20.04:
$ mount | grep -w /tmp
/dev/mapper/myVG-tmp on /tmp type ext4 (rw,relatime)
EDIT1: Eu também tentei os mesmos comandos no modo de recuperação do Ubuntu, mas nem fuser
nem lsof
consegui me mostrar qual processo estava bloqueando o sistema de arquivos /tmp.
O manual lsof é difícil de compreender. Alguém sabe se existe outra opção lsof que pode me mostrar mais processos que eventualmente bloqueariam esse sistema de arquivos?
Sua única opção aqui é desligar o sistema e inicializar em um ambiente alternativo ou LiveUSB. Não há nenhum comando que liste
lsof
ofuser
que o sistema SystemD está usando/tmp
para armazenamento de coisas.SystemD entre outras coisas (processos críticos do sistema e outros) todos gravam
/tmp
- geralmente é por isso que você não cria LVs ou qualquer coisa para/tmp
e deixa-o viver na memória volátil, que é muito mais rápida do que gravar nos discos para arquivos temporários.O ambiente de recuperação também usa
/tmp
por causa do kernel e recursos críticos do systemd que estão sendo gravados lá. É aqui que você precisará entrar em seu sistema a partir do outro disco de inicialização, ativar o ambiente LVM e redimensionar seus LVs a partir daí quando não houver dados sendo gravados ou usados em seu/tmp
LV especial.Eu também recomendaria que, a menos que sua RAM seja premium, você remova o
/tmp
LV e o substitua por umtmpfs
que resida na RAM e seja apagado na reinicialização. É por isso que/tmp
geralmente não está no disco, mastmpfs
na maioria das instalações.