Obsługa dysków i systemów plików: df, du, lsblk, lscsi
Zarządzanie dyskami i miejscem na nich to kluczowa część administracji systemów. W serwerach (szczególnie Proxmox, FreeBSD czy serwery gier) ważne jest monitorowanie pojemności dysków i szybkie diagnozowanie problemów z miejscem na dysku. Gdy dysk się zapełni, serwis przestaje działać – stąd konieczność bieżącego monitorowania i konserwacji.
Komenda df – informacje o systemach plików
df
Wyświetla użycie dysku dla wszystkich zamontowanych systemów plików (domyślnie w blokach 1K). Jest to podstawowe narzędzie do szybkiego sprawdzenia "ile miejsca zostało".
df -h
Format czytelny (B, KB, MB, GB) – najczęstszy sposób użycia. Zamiast liczb takich jak 15360000 zobaczymy 15G.
df -H
Format dziesiętny (1000 zamiast 1024 jako podstawa) – dla jednostek SI. Niektórzy wolą taki zapis.
df -T
Dodaje kolumnę z typem systemu plików (ext4, xfs, btrfs, zfs, ntfs, etc.). Przydatne gdy zarządzasz różnymi typami systemów plików.
df -i
Wyświetla inode'y zamiast bloków. Ważne: można mieć wolne miejsce, ale brak inode'ów (gdy mamy miliony małych plików). System wtedy nie pozwoli tworzyć nowych plików mimo wolnego miejsca!
Praktyczne kombinacje:
df -Th
Typ systemu plików i format czytelny – najbardziej praktyczna forma dla administratorów.
df -h | grep -v tmpfs
Ukryj tymczasowe systemy plików tmpfs, devtmpfs (często nieistotne).
df -h | awk '$5 > 80 {print $0}'
Pokaż tylko dyski zapełnione powyżej 80% (kolumna 5 to procent użycia).
df -hT | sort -k6 -rn
Posortuj dyski wg procentu zajęcia miejsca (kolumna 6) malejąco – szybko znajdziesz problematyczne dyski.
Komenda du – rozmiar katalogów i plików
du (disk usage) pokazuje ile miejsca zajmują poszczególne katalogi i pliki. Jest niezbędne gdy df pokazuje że dysk jest pełny, a potrzebujemy znaleźć które katalogi lub pliki odpowiadają za ten stan.
du
Domyślnie wyświetla rozmiary wszystkich podkatalogów rekurencyjnie (może wypisać tysiące linii!).
du -h
Format czytelny (KB, MB, GB).
du -sh katalog/
Podsumowanie (-s, summary) rozmiaru katalogu w czytelnym formacie.
Wszystkie pliki i katalogi (-a, all) z rozmiarami – pokaże też pojedyncze pliki, nie tylko katalogi.
du -d 1 -h /var
Ograniczenie głębokości (-d 1) do jednego poziomu – nie wchodzi głębiej w strukturę.
Znalezienie największych katalogów i plików:
du -ah /var | sort -rh | head -20
20 największych plików i podkatalogów w /var (sortuj malejąco wg rozmiaru czytelnego dla człowieka).
du -sh /* 2>/dev/null | sort -rh
Sprawdź rozmiar wszystkich głównych katalogów systemu (/, /home, /var, /usr itd), ignoruj błędy dostępu.
find /var -type f -size +100M -exec ls -lh {} \; | awk '{print $5, $9}' | sort -rh
Znajdź wszystkie pliki większe niż 100MB. Przydatne gdy szukasz co zabiera miejsce.
find /var/log -type f -size +1G
Znajdź pliki logów większe niż 1GB – często to one zapełniają dysk.
Praktyczne scenariusze z doświadczeń sysadmina:
# Dysk pełny na serwerze – diagnoza krok po kroku
df -h # Sprawdź który dysk jest pełny
du -sh /* | sort -rh # Szukaj dużych katalogów głównych
du -sh /var/* | sort -rh # Zagłębienie w /var
du -sh /var/log/* | sort -rh # Sprawdź logi
Sprawdź rozmiar bazy danych
du -sh /var/lib/mysql
du -sh /var/lib/postgresql
Sprawdź cache, tymczasowe pliki
du -sh /tmp /var/tmp /var/cache
Komenda lsblk – lista urządzeń blokowych
Wprowadzenie:
lsblk wyświetla strukturę dysków twardych, partycji, wolumenów logicznych (LVM) oraz punktów montowania. Niezastąpione gdy chcesz szybko zobaczyć "co jest podpięte i gdzie".
lsblk
Wyświetla wszystkie urządzenia blokowe w formie drzewa. Idealnie pokazuje relacje między dyskami, partycjami i punktami montowania.
lsblk -f
Dodatkowo pokazuje systemy plików, UUID, etykiety (labels) i procent użycia.
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,FSTYPE
Wybrane kolumny – dostosuj wyświetlanie do swoich potrzeb.
lsblk -p
Pokazuje pełne ścieżki urządzeń (np. /dev/sda zamiast sda).
Komenda lscsi – lista urządzeń SCSI/SATA
lscsi
Wyświetla listę podłączonych urządzeń SCSI/SATA. Przydatne do weryfikacji że wszystkie dyski fizyczne są widoczne w systemie.
lscsi -s
Dodaje rozmiar dysków.
Monitorowanie I/O dysku w czasie rzeczywistym
iostat -xz 1
Monitoruj operacje I/O na dyskach co sekundę (wymaga pakietu sysstat). Szukaj kolumny %util > 80% – oznacza mocne obciążenie dysku.
iotop
Interaktywne narzędzie pokazujące które procesy generują najwięcej operacji I/O (wymaga instalacji i uprawnień root).
watch -n 1 'df -h | grep -v tmpfs'
Monitoruj zmiany w zajęciu dysku co sekundę (przydatne gdy coś szybko zabiera miejsce).
Diagnostyka problemów z dyskiem – praktyczne scenariusze
Problem: Dysk nagle zapełniony
# Krok 1: Sprawdź który system plików
df -h
# Krok 2: Szukaj dużych katalogów (zacznij od głównych)
du -sh /* 2>/dev/null | sort -rh | head -10
# Krok 3: Zagłębienie (np. jeśli /var jest duży)
du -sh /var/* | sort -rh | head -10
# Krok 4: Sprawdź logi
du -sh /var/log/*
find /var/log -type f -size +500M -exec ls -lh {} \;
# Krok 5: Sprawdź czy nie ma usuniętych plików nadal otwartych
lsof +L1 | grep deleted
Problem: Brak miejsca mimo że pliki nie zajmują tyle
# Sprawdź inode'y (mogą się skończyć przy wielu małych plikach)
df -i
# Jeśli inode'y na wyczerpaniu, znajdź katalogi z wieloma plikami
find / -xdev -printf '%h\n' | sort | uniq -c | sort -rn | head -20
Problem: Serwer gry MT2SRV – logi zapełniają dysk
# Sprawdź rozmiar logów gry
du -sh /path/to/game/log/*
# Usuń stare logi (ostrożnie!)
find /path/to/game/log -name "*.log" -mtime +7 -delete
# Skompresuj duże logi zamiast usuwać
find /path/to/game/log -name "*.log" -size +100M -exec gzip {} \;
Czyszczenie dysku – bezpieczne metody:
# Wyczyść cache pakietów (Debian/Ubuntu)
apt clean
apt autoclean
# Wyczyść cache pakietów (RedHat/CentOS)
yum clean all
# Usuń stare kernele (Ubuntu - ostożnie!)
apt autoremove --purge
# Wyczyść dzienniki systemd starsze niż 7 dni
journalctl --vacuum-time=7d
# Wyczyść pliki tymczasowe starsze niż 10 dni
find /tmp -type f -mtime +10 -delete
Monitorowanie trendu zajęcia dysku
# Zapisz snapshot dziennie
df -h > /var/log/disk_usage_$(date +%Y%m%d).txt
# Porównaj z wczoraj
diff /var/log/disk_usage_20251122.txt /var/log/disk_usage_20251123.txt
# Prosty skrypt alertu gdy dysk > 90%
#!/bin/bash
USAGE=$(df -h / | awk 'NR==2 {print $5}' | tr -d '%')
if [ $USAGE -gt 90 ]; then
echo "ALERT: Dysk zapełniony w $USAGE%" | mail -s "Disk Alert" admin@example.com
fi
Sprawdzanie stanu zdrowia dysku (S.M.A.R.T.) (wymaga pakietu smartmontools).
smartctl -a /dev/sda
Wyświetla szczegółowe informacje o stanie dysku z S.M.A.R.T. (wymaga pakietu smartmontools).
smartctl -H /dev/sda
Szybki test zdrowia dysku (PASSED/FAILED).
LVM, RAID i ZFS
Dla systemów z LVM:
lvs # Lista logical volumes
pvs # Lista physical volumes
vgs # Lista volume groups
lvdisplay # Szczegóły LV
Dla systemów z RAID:
cat /proc/mdstat # Status software RAID
mdadm --detail /dev/md0 # Szczegóły RAID array
Dla systemów z ZFS (FreeBSD, Linux z ZFS):
zpool list # Lista pool'i ZFS
zpool status # Status pool'i
zfs list # Lista systemów plików ZFS
zfs get all # Wszystkie właściwości
Podsumowanie praktycznych komend
# Quick check – co się dzieje z dyskami
df -Th
du -sh /* | sort -rh | head -10
lsblk -f
# Deep dive – znajdź największe pliki
find / -type f -size +1G -exec ls -lh {} \; 2>/dev/null
# Monitoring w czasie rzeczywistym
watch -n 2 'df -h; echo ""; du -sh /var/log /var/cache /tmp'
# Diagnoza performance
iostat -xz 2 5
iotop -o # tylko aktywne procesy I/O
























