
Problema
Aparentemente, estou com pouco espaço em disco na minha partição raiz. Na hora de instalar meu SO (openSUSE Leap 15 em uma VM) escolhi o particionamento padrão. Agora recebo o aviso/erroPouco espaço em disco na "raiz do sistema de arquivos". Ele me avisa quando inicio o sistema e quando tento compilar um projeto grande gera um erro.
Análise
Vamos verificar a situação do armazenamento:
relatar o uso do espaço em disco do sistema de arquivos:
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 13G 0 13G 0% /dev
tmpfs 13G 34M 13G 1% /dev/shm
tmpfs 13G 82M 13G 1% /run
tmpfs 13G 0 13G 0% /sys/fs/cgroup
/dev/sda2 40G 38G 2.2G 95% /
/dev/sda2 40G 38G 2.2G 95% /root
/dev/sda2 40G 38G 2.2G 95% /boot/grub2/i386-pc
/dev/sda3 204G 165G 40G 81% /home
/dev/sda2 40G 38G 2.2G 95% /boot/grub2/x86_64-efi
/dev/sda1 500M 5.0M 495M 1% /boot/efi
/dev/sda2 40G 38G 2.2G 95% /usr/local
/dev/sda2 40G 38G 2.2G 95% /srv
/dev/sda2 40G 38G 2.2G 95% /opt
/dev/sda2 40G 38G 2.2G 95% /.snapshots
/dev/sda2 40G 38G 2.2G 95% /tmp
/dev/sda2 40G 38G 2.2G 95% /var
tmpfs 2.6G 20K 2.6G 1% /run/user/462
tmpfs 2.6G 48K 2.6G 1% /run/user/1000
Estimar o uso do espaço no arquivo:
$ sudo du -hsx /* | sort -rh | head -n 40
[sudo] password for root:
du: cannot access '/proc/8809/task/8809/fd/4': No such file or directory
du: cannot access '/proc/8809/task/8809/fdinfo/4': No such file or directory
du: cannot access '/proc/8809/fd/4': No such file or directory
du: cannot access '/proc/8809/fdinfo/4': No such file or directory
51G /home
5.5G /usr
972M /opt
894M /var
792M /lib
63M /boot
38M /tmp
24M /etc
18M /run
11M /sbin
11M /lib64
2.1M /bin
320K /root
0 /sys
0 /srv
0 /selinux
0 /proc
0 /mnt
0 /dev
$ sudo du -hsx /.snapshots
2.2M /.snapshots
$ sudo du -hs /.snapshots
129G /.snapshots
Listando instantâneos como sugerido por @Kamil Maciorowsk:
$ sudo snapper list
Type | # | Pre # | Date | User | Cleanup | Description | Userdata
-------+-----+-------+----------------------------------+------+---------+-----------------------+--------------
single | 0 | | | root | | current |
single | 1 | | Tue 02 Oct 2018 02:42:20 PM CEST | root | | first root filesystem |
pre | 74 | | Mon 08 Oct 2018 03:25:32 PM CEST | root | number | zypp(zypper) | important=yes
post | 75 | 74 | Mon 08 Oct 2018 03:27:17 PM CEST | root | number | | important=yes
pre | 82 | | Tue 16 Oct 2018 09:11:33 AM CEST | root | number | zypp(zypper) | important=yes
post | 83 | 82 | Tue 16 Oct 2018 09:12:04 AM CEST | root | number | | important=yes
pre | 108 | | Thu 01 Nov 2018 01:25:41 PM CET | root | number | zypp(zypper) | important=yes
post | 109 | 108 | Thu 01 Nov 2018 01:27:12 PM CET | root | number | | important=yes
pre | 122 | | Thu 08 Nov 2018 09:26:09 AM CET | root | number | zypp(zypper) | important=yes
post | 123 | 122 | Thu 08 Nov 2018 09:27:40 AM CET | root | number | | important=yes
pre | 128 | | Mon 12 Nov 2018 08:40:03 AM CET | root | number | zypp(zypper) | important=yes
post | 129 | 128 | Mon 12 Nov 2018 08:41:36 AM CET | root | number | | important=yes
pre | 144 | | Mon 19 Nov 2018 09:52:15 AM CET | root | number | zypp(zypper) | important=no
post | 145 | 144 | Mon 19 Nov 2018 09:54:33 AM CET | root | number | | important=no
pre | 146 | | Wed 21 Nov 2018 11:07:33 AM CET | root | number | zypp(zypper) | important=no
post | 147 | 146 | Wed 21 Nov 2018 11:07:56 AM CET | root | number | | important=no
pre | 148 | | Thu 22 Nov 2018 09:19:51 AM CET | root | number | zypp(zypper) | important=no
post | 149 | 148 | Thu 22 Nov 2018 09:19:54 AM CET | root | number | | important=no
pre | 150 | | Mon 26 Nov 2018 09:12:02 AM CET | root | number | zypp(zypper) | important=no
post | 151 | 150 | Mon 26 Nov 2018 09:12:19 AM CET | root | number | | important=no
pre | 152 | | Thu 29 Nov 2018 09:34:37 AM CET | root | number | zypp(zypper) | important=no
post | 153 | 152 | Thu 29 Nov 2018 09:35:22 AM CET | root | number | | important=no
Também ouvi falar de Kernels antigos não utilizados, então verifiquei e descobri isto:
$ ls -la /lib/modules
total 0
drwxr-xr-x 1 root root 108 Nov 8 09:29 .
drwxr-xr-x 1 root root 78 Oct 4 16:13 ..
drwxr-xr-x 1 root root 354 Oct 16 09:11 4.12.14-lp150.12.22-default
drwxr-xr-x 1 root root 354 Nov 8 09:26 4.12.14-lp150.12.25-default
Ideias para uma solução:
- Redimensione a partição raiz. (dar mais 10 shows ao root seria bom)
- Excluir a versão antiga do kernel e espero não quebrar as coisas e os 245 MB liberados serão suficientes por enquanto.
Eu realmente prefiro dar mais espaço ao root, mas não tenho ideia de como fazer isso ou se é uma boa ideia mexer com isso. Que solução você proporia e como posso fazer isso?
Responder1
/dev/sda2
montado em pontos de montagem diferentes (onde você deveria ter conteúdo diferente) me faz acreditar que você está usando o Btrfs. Você também /.snapshots
montou o que indica a presença dePargo. É altamente provável que /.snapshots
ocupe a maior parte do espaço usado.
Observe que sua análise du -hsx /*
nem foi levada /.snapshots
em consideração porque *
glob não se expande para nomes começando com .
.
Não tenho experiência com Snapper. Eu suspeito que existam subvolumes Btrfs (shapshots) dentro de /.snapshots
. O comando du -hsx /.snapshots
pode até retornar 0
por causa da -x
opção utilizada. Por outro lado, du -hs /.snapshots
provavelmente retornará um valor enorme. Pode ser muito maior que o tamanho de /dev/sda2
(que é 40GiB
) porque você provavelmente tem vários instantâneos que compartilham espaço em disco (é assim que o Btrfs funciona), ainda assim du
os considerará como sistemas de arquivos separados.
Para analisar mais detalhadamente, você precisa de ferramentas específicas do Btrfs e/ou Snapper. Tenho alguma experiência com Btrfs, mas não com Snapper. Não sei dizer se você pode confundir o Snapper alterando manualmente os instantâneos que ele criou, pode ser possível; mas tenho certeza que você não pode quebrar o Btrfs usando o Snapper. Portanto, a abordagem segura é lidar com a situação com tudo o que o Snapper fornece, não diretamente com as ferramentas Btrfs.
O tutorial já mencionadonos dá algumas dicas sobre o que você pode fazer:
Listar todos os instantâneos da configuração padrão (raiz)
snapper list
Excluindo instantâneos
Exclua o snapshot 65 para a configuração padrão (raiz):
snapper delete 65
Mas também:
Mecanismos automáticos de limpeza de instantâneos
Para evitar que o espaço em disco fique cheio, o Snapper limpa periodicamente os instantâneos. Por padrão, este período = 1 dia.
A tarefa de limpeza automática de instantâneos pode ser gerenciada de duas maneiras:
- agendador cron (
/etc/cron.daily/suse.de-snapper
).- agendador de timer systemd (
snapper-cleanup.timer
esnapper-cleanup.service
unidades systemd).Por padrão, o mecanismo cron está em uso.
Talvez algo tenha falhado com esse mecanismo de limpeza?
Como eu disse, não tenho experiência com Snapper, então não posso ajudá-lo mais. No entanto, se eu estiver certo, agora você sabe o que investigar. Para resumir:
- você perdeu totalmente
/.snapshots
o diretório, provavelmente ele é responsável pela maior parte do espaço usado; - Os instantâneos do Btrfs provavelmente estão envolvidos;
- Snapper provavelmente está envolvido.
Responder2
A primeira coisa a fazer é fazer um backup de tudo que é importante. Ir mais longe nesse caminho envolve fazer coisas que podem resultar em perda de dados. Algumas opções abaixo:
compre um novo disco rígido USB SATA. Troque a unidade USB SATA pela unidade antiga no seu gabinete. Reinstale o Linux na nova unidade SATA. Sempre que precisar acessar seus arquivos antigos, conecte o drive USB e lá estão eles.
Se você particionou usando LVM (o que o SuSE provavelmente não fez), então veja se você pode estender (
lvmresize -L+10G /dev/mapper/whatever
) sua partição de barra e então redimensionar (resize2fs /dev/mappper/whatever
). Esta é a solução mais fácil.se você tiver partições rígidas (por exemplo: root is on
/dev/sda1
), você pode tentar inicializar com o Gparted Live (https://gparted.org/livecd.php) e brincar tentando estender sua partição rígida. Geralmente, o sucesso aqui depende de quanto espaço livre resta em sua unidade e como você particionou as coisascompre um novo disco rígido. Mesma capacidade ou maior. conecte-o e crie partições maiores (use LVM se possível). A primeira partição no novo disco deve ter tamanho de 1G (pode ser menor, apenas para ser breve) e existe para compatibilidade com o Grub. Depois, inicialize em seu disco antigo e crie diretórios/monte as novas partições de disco
/mnt/new_disk/
; sincronize novamente todas as partições antigas no novo disco. (por exemplo:rsync -av / /mnt/new_disk/slash/; rsync -av /usr /mnt/new_disk/usr/;
...). Depois de terminar, você precisará instalar o grub no novo disco de alguma forma. Normalmente faço isso usando um chroot,/mnt/new_disk/slash/
mas pode ser assustador. Normalmente o grub.cfg fica confuso sobre as coisas. Deve haver maneiras mais fáceis de fazer isso.