Skip to main content

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".

image.png

df -h

Format czytelny (B, KB, MB, GB) – najczęstszy sposób użycia. Zamiast liczb takich jak 15360000 zobaczymy 15G.

image.png

df -H

Format dziesiętny (1000 zamiast 1024 jako podstawa) – dla jednostek SI. Niektórzy wolą taki zapis.

image.png

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.

image.png

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!

image.png

Praktyczne kombinacje:

df -Th

Typ systemu plików i format czytelny – najbardziej praktyczna forma dla administratorów.

image.png

df -h | grep -v tmpfs

Ukryj tymczasowe systemy plików tmpfs, devtmpfs (często nieistotne).

image.png

df -h | awk '$5 > 80 {print $0}'

Pokaż tylko dyski zapełnione powyżej 80% (kolumna 5 to procent użycia).

image.png

df -hT | sort -k6 -rn

Posortuj dyski wg procentu zajęcia miejsca (kolumna 6) malejąco – szybko znajdziesz problematyczne dyski.

image.png

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

image.png

Domyślnie wyświetla rozmiary wszystkich podkatalogów rekurencyjnie (może wypisać tysiące linii!).

du -h

Format czytelny (KB, MB, GB).

image.png

du -sh katalog/

Podsumowanie (-s, summary) rozmiaru katalogu w czytelnym formacie. 

image.png

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ę.

image.png

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

image.png

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.

image.png

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.

image.png

lsblk -f

Dodatkowo pokazuje systemy plików, UUID, etykiety (labels) i procent użycia.

image.png

lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,FSTYPE

Wybrane kolumny – dostosuj wyświetlanie do swoich potrzeb.

image.png

lsblk -p

Pokazuje pełne ścieżki urządzeń (np. /dev/sda zamiast sda).

image.png

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.

image.png

lscsi -s

Dodaje rozmiar dysków.

image.png

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.

image.png

iotop

Interaktywne narzędzie pokazujące które procesy generują najwięcej operacji I/O (wymaga instalacji i uprawnień root).

image.png

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

image.png

Wyświetla szczegółowe informacje o stanie dysku z S.M.A.R.T. 

smartctl -H /dev/sda

image.png

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

image.png

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