Chciałem przed chwilą dokonać aktualizacji mojej instalacji Cisco Modeling Labs do najnowszych wersji 2.7. Okazało się jednak, że na głównej partycji skończyło się miejsce. Było to trochę zaskakujące. Wszystkie obrazy jak i wirtualne maszyny przechowuję na zupełnie innym woluminie. Co zajmowało prawie cała przestrzeń dysku?
Dyskożerny kernel
Wszystkie pliki maszyn wirtualnych do topologii jak o obrazy, z których urządzenia w moim labie są uruchamiane przechowywane są na zupełnie zewnętrznym ewolucyjnie montowanym jako /var
. Wolumin /
służy jedynie do systemowych komponentów.
Dlaczego skończyło się miejsce na tym dysku? Niewiele jest rzeczy, które na głównym wolumenie powinny zajmować dużo miejsca. Mogą to być różnego rodzaju pliki tymczasowe, zawartości cache różnych aplikacji, albo pliki związane z jądrem systemu (kernel) i jego modułami. Szybkie wypisanie zainstalowanych pakietów pokazało, że przez ostatnie 2-3 lata trochę tych wersji kernela i modułów na dysku siedziało zajmując ponad 5GB.
Usuwamy zbędne instalacje kernela w CML
U mnie próba wyczyszczenia za pomocą polecenia apt autoremove
nic nie dała. Musiałem zatem podziałać ręcznie. Postanowiłem usunąć wszystkie wersje kernela i modułów poza aktualnie używanym najnowszym wydaniem. Na początek w pliku stworzyłem listę wszystkich zainstalowanych pakietów z kernelem i modułami.
dpkg --list | egrep -i --color 'linux-image|linux-headers|linux-modules' | awk '{ print $2 }' > apt_kernels.txt
Następnie z tej listy odfiltrowałem wpisy odnoszące się do używanej najnowszej wersją kernela.
grep -v $(uname -r) apt_kernels.txt > apt_kernels_del.txt
Mając tak przygotowaną listę pakietów mogę jednym ruchem wszystkie odinstalować
cat apt_kernels_del.txt | xargs sudo apt purge -y
Tak prezentuje się zajętość dysku po operacji czyszczenia
Skończyło się miejsce na głównym dysku. Na szczęście problem ten nie był trudny do rozwiązania.