Znasz ten moment, prawda? Nagle Twój serwer FreeBSD, który dotąd działał jak szwajcarski zegarek, zaczyna stawiać opór. Pojawiają się dziwne błędy, aplikacje odmawiają posłuszeństwa, a w logach widzisz przerażający komunikat „No space left on device”. Panika! Ale spokojnie, to nie koniec świata. To sygnał, że nadszedł czas na gruntowne porządki i optymalizację. W tym artykule przeprowadzimy Cię krok po kroku przez proces uwalniania przestrzeni dyskowej, tak aby Twoja maszyna znów oddychała pełną piersią. Przygotuj się na solidną dawkę wiedzy i praktycznych wskazówek!
🔍 Pierwsze Kroki: Diagnostyka – Gdzie Podziało się Moje Miejsce?
Zanim zaczniesz cokolwiek usuwać, musisz wiedzieć, gdzie leży problem. Bez tego działanie na oślep może przynieść więcej szkody niż pożytku. Zacznijmy od podstawowych narzędzi diagnostycznych.
df -h
– Szybki Przegląd Sytuacji
To Twój pierwszy i najważniejszy przyjaciel. Polecenie df -h
(od „disk free” z opcją human-readable) pokaże Ci zajętość wszystkich zamontowanych systemów plików w czytelnej formie. Zwróć uwagę na kolumnę „Use%” i poszukaj wartości bliskich 100%. To one wskażą Ci newralgiczne punkty.
$ df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/gpt/rootfs 40G 38G 2.0G 95% /
devfs 1.0K 1.0K 0B 100% /dev
tmpfs 8.0G 4.0K 8.0G 0% /tmp
W powyższym przykładzie widać, że partycja główna (/
) jest niemal pełna. Mamy winowajcę, przynajmniej na wysokim poziomie.
du -shx *
– Wgłąb Katalogów
Kiedy już wiesz, która partycja jest zapchana, czas zejść niżej. Polecenie du -shx *
(od „disk usage”, sumarycznie, human-readable, z wykluczeniem innych systemów plików) wykonane w katalogu głównym (/
) lub w innym, wskazanym przez df -h
, pomoże Ci zidentyfikować największe podkatalogi.
$ cd /
$ du -shx *
4.0K bin
1.0K boot
...
20G usr
15G var
...
Bingo! Widzimy, że katalogi /usr
i /var
pochłaniają najwięcej miejsca. To są miejsca, gdzie najczęściej kryją się nasze „śmieci”. Kontynuuj schodzenie w dół hierarchii katalogów, używając du -shx *
, aż znajdziesz konkretne pliki lub foldery odpowiedzialne za zajętą przestrzeń. To żmudna praca, ale niezwykle efektywna. 🔍
🧹 Skuteczne Czyszczenie: Miejsca, Gdzie Najczęściej Kryją się Gigabajty
Teraz, gdy masz już pojęcie, gdzie szukać, czas na konkretne działania. Oto najczęstsze miejsca, które należy sprawdzić i oczyścić.
1. Logi Systemowe i Aplikacji (/var/log
)
Logi to prawdziwe pożeracze miejsca, zwłaszcza na intensywnie używanych serwerach. Dzienniki systemowe, bazy danych, serwery WWW – każdy generuje mnóstwo danych.
- Rotacja Logów: FreeBSD używa
newsyslog(8)
do rotacji logów. Upewnij się, że jest on prawidłowo skonfigurowany w pliku/etc/newsyslog.conf
. Możesz zmniejszyć liczbę przechowywanych rotacji (np. z 7 na 3) lub częściej kompresować stare logi. - Ręczne Czyszczenie: Jeśli masz gigabajty starych logów, które nie są już potrzebne do audytu, możesz je usunąć. Zawsze bądź ostrożny!
# Obejrzyj największe pliki logów
$ cd /var/log
$ du -sh * | sort -rh | head -n 10
# Usuń stare, niepotrzebne logi (PRZYKŁAD! UWAŻAJ!)
# Upewnij się, że wiesz, co usuwasz!
$ rm old_syslog.0.bz2
$ rm messages.3.bz2
Opinia Eksperta: Zawsze polecam zachować co najmniej kilka ostatnich rotacji logów. Są nieocenione przy diagnozowaniu problemów. Jednak logi starsze niż miesiąc, które nie są archiwizowane, to często zmarnowana przestrzeń.
2. Pliki Tymczasowe (/tmp
i /var/tmp
)
Te katalogi są przeznaczone do przechowywania plików tymczasowych, które w teorii powinny być automatycznie usuwane. W praktyce często tak nie jest.
/tmp
: Często montowany jakotmpfs
(RAM-dysk), więc nie wpływa bezpośrednio na fizyczną przestrzeń dyskową, ale może pochłaniać pamięć RAM. Jeśli jest to partycja fizyczna, upewnij się, że/etc/rc.conf
zawieraclear_tmp_enable="YES"
./var/tmp
: Przechowuje dłużej żyjące pliki tymczasowe. Ręczne usunięcie starych plików jest bezpieczne, o ile nie są używane przez aktywne procesy.
# Sprawdź zawartość /var/tmp
$ cd /var/tmp
$ du -sh * | sort -rh | head -n 10
# Usuń stare pliki (np. starsze niż 7 dni)
$ find /var/tmp -type f -atime +7 -delete
$ find /var/tmp -type d -empty -delete # Usuń puste katalogi
Pamiętaj, aby nigdy nie usuwać katalogu /tmp
ani /var/tmp
w całości, a jedynie ich zawartość! 🗑️
3. Cache Pakietów (/var/cache/pkg
) 📦
FreeBSD, podobnie jak wiele innych systemów, przechowuje pobrane pakiety w cache. Z czasem może to narosnąć do sporych rozmiarów.
- Czyszczenie Cache: Menedżer pakietów
pkg
ma wbudowane narzędzia do czyszczenia.
# Usuń wszystkie stare pakiety z cache
$ pkg clean
# Usuń również pakiety, które nie są już zainstalowane
$ pkg clean -a
# Dodatkowo możesz usunąć zależności, które nie są już potrzebne
$ pkg autoremove
Te proste komendy potrafią zwolnić gigabajty! Moim zdaniem, jest to jedno z pierwszych miejsc, które powinno się sprawdzić.
4. Stare Wersje Jądra i Bibliotek (/usr/obj
, /usr/src
)
Jeśli kompilujesz jądro systemu ze źródeł lub aktualizujesz go przy użyciu freebsd-update
, możesz mieć zalegające stare pliki obiektowe i źródłowe.
- Usunięcie Starych Kerneli: Po pomyślnym uruchomieniu nowego jądra, stare staje się zbędne.
# W katalogu ze źródłami (zazwyczaj /usr/src)
$ cd /usr/src
$ make delete-old
$ make delete-old-kernel
Pamiętaj, aby uruchomić te komendy po upewnieniu się, że nowy kernel działa poprawnie. Usunięcie starego jądra przed weryfikacją nowego może przysporzyć problemów! ⚠️
- Czyszczenie Katalogów Obiektowych: Katalog
/usr/obj
gromadzi pliki wynikowe kompilacji.
# Usuń wszystkie pliki obiektowe
$ rm -rf /usr/obj/*
Jeśli nie kompilujesz niczego ze źródeł, możesz rozważyć usunięcie całego katalogu /usr/src
, ale tylko jeśli jesteś pewien, że nie będziesz go potrzebować. Jest to dość drastyczny krok, ponieważ stracisz lokalne źródła systemu. Dla większości użytkowników bezpieczniej jest pozostawić źródła, a skupić się na ich regularnym aktualizowaniu i czyszczeniu plików obiektowych.
5. Migawki ZFS (ZFS Snapshots) 💾
Jeśli używasz ZFS, migawki (snapshots) to błogosławieństwo – do czasu, gdy zaczynają zajmować całą dostępną przestrzeń. ZFS migawki są bardzo wydajne, ale jeśli tworzysz ich zbyt wiele i nie usuwasz, mogą drastycznie zmniejszyć wolne miejsce.
- Lista Migawki:
$ zfs list -t snapshot
- Usuwanie Migawki:
$ zfs destroy nazwa_puli/nazwa_systemu_plikow@nazwa_migawki
Zawsze sprawdzaj, ile miejsca zajmują migawki przed usunięciem. Możesz użyć zfs list -o space
, aby zobaczyć, ile miejsca jest odzyskiwane po zniszczeniu migawki.
6. Dane Użytkowników i Aplikacji
Czasami to po prostu dane użytkowników lub konkretnych aplikacji są problemem. Duże bazy danych, pliki multimedialne, kopie zapasowe – to wszystko może nagle eksplodować.
- Katalogi Domowe:
$ du -sh /home/* | sort -rh
Sprawdź, który użytkownik zajmuje najwięcej miejsca. Może to być archiwum starych zdjęć, filmów lub niepotrzebnych pobrań.
- Bazy Danych: Jeśli używasz baz danych (PostgreSQL, MySQL/MariaDB), mogą one zajmować gigabajty. Regularne
VACUUM FULL
(PostgreSQL) lub optymalizacja tabel (MySQL) może pomóc zredukować ich rozmiar, choć często wymaga to przestoju. - Pliki Aplikacji: Czy serwer WWW gromadzi stare kopie zapasowe stron? Czy Twoja aplikacja generuje ogromne logi, które nie są prawidłowo rotowane? Sprawdź konfigurację.
⚙️ Zaawansowane Techniki i Dobre Praktyki
Znajdowanie Gigantycznych Plików
Czasem jeden, nieoczekiwany plik potrafi zapchać cały dysk. Może to być źle skonfigurowany dump bazy danych, wielki plik tymczasowy pozostawiony przez proces, czy cokolwiek innego. Użyj find
, aby namierzyć największych „pożeraczy”.
# Znajdź pliki większe niż 1 GB
$ find / -xdev -type f -size +1G -print0 | xargs -0 du -h | sort -rh
Opcja -xdev
zapobiega przeszukiwaniu innych systemów plików (np. zamontowanych dysków sieciowych), co jest kluczowe dla efektywności i bezpieczeństwa. Po znalezieniu, przeanalizuj, czy plik jest faktycznie potrzebny.
Monitorowanie Dostępnej Przestrzeni
Prewencja jest zawsze lepsza niż leczenie. Ustaw monitoring przestrzeni dyskowej, który będzie Cię ostrzegał, zanim dysk zapełni się krytycznie. Narzędzia takie jak Nagios, Zabbix, Prometheus + Grafana, czy nawet proste skrypty sprawdzające df -h
i wysyłające e-mail, są nieocenione. Nigdy nie polegaj wyłącznie na „ręcznym” sprawdzaniu.
„Prawdziwa sztuka zarządzania serwerem to nie tylko naprawianie problemów, ale przede wszystkim ich przewidywanie i zapobieganie im. Monitoring dysku to fundament stabilności.”
Rozszerzenie Przestrzeni Dysku
Jeśli po wszystkich operacjach czyszczenia dysk nadal jest bliski zapełnienia, być może nadszedł czas na rozważenie rozszerzenia fizycznej przestrzeni. Dla maszyn wirtualnych jest to zazwyczaj proste. W przypadku fizycznych serwerów może oznaczać dodanie nowego dysku i użycie go jako nowej partycji lub Logical Volume Manager (LVM), choć FreeBSD tradycyjnie preferuje proste partycje lub ZFS, które oferuje elastyczność podobną do LVM.
Automatyzacja Czyszczenia
Niektóre zadania, takie jak czyszczenie cache pakietów czy usuwanie starych plików tymczasowych, można zautomatyzować za pomocą cron
. Pamiętaj jednak, aby być bardzo ostrożnym przy automatyzacji usuwania plików. Zawsze testuj skrypty w bezpiecznym środowisku, zanim wdrożysz je na produkcji.
# Przykład wpisu w crontab (niezalecane do kopiowania bez zrozumienia!)
# Codziennie o 3:00 rano czyść cache pakietów
0 3 * * * /usr/sbin/pkg clean -a > /dev/null 2>&1
Warto pamiętać, że zbyt agresywne czyszczenie może prowadzić do problemów, np. usuwanie plików tymczasowych używanych przez aktywne procesy. Zawsze miej to na uwadze, planując automatyzację.
🌱 Podsumowanie i Ostatnie Wskazówki
Brak miejsca na dysku to klasyczny problem każdego administratora, ale na FreeBSD mamy szereg potężnych narzędzi i dobrze zorganizowaną strukturę, która pozwala na skuteczne zaradzenie tej sytuacji. Kluczem do sukcesu jest cierpliwość, metodyczność i zrozumienie, co się usuwa. Nigdy nie działaj w panice. Zawsze rób kopie zapasowe ważnych danych przed drastycznymi operacjami. Regularne przeglądy i proaktywny monitoring to najlepsza strategia, aby Twój serwer działał płynnie i bez nieprzyjemnych niespodzianek.
Mam nadzieję, że ten przewodnik pomoże Ci okiełznać rozrastające się pliki i odzyskać cenną przestrzeń na dysku. Powodzenia!