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

<p class="callout info">Komenda `df` – informacje o systemach plików</p>

```bash
df
```

<p class="callout info">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".</p>

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/WAAimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/WAAimage.png)

```bash
df -h
```

<p class="callout info">Format czytelny (B, KB, MB, GB) – najczęstszy sposób użycia. Zamiast liczb takich jak 15360000 zobaczymy 15G.</p>

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/ROQimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/ROQimage.png)

```bash
df -H
```

<p class="callout info">Format dziesiętny (1000 zamiast 1024 jako podstawa) – dla jednostek SI. Niektórzy wolą taki zapis.</p>

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/zJnimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/zJnimage.png)

```bash
df -T
```

<p class="callout info">Dodaje kolumnę z typem systemu plików (ext4, xfs, btrfs, zfs, ntfs, etc.). Przydatne gdy zarządzasz różnymi typami systemów plików.</p>

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/7NBimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/7NBimage.png)

```bash
df -i
```

<p class="callout info">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!</p>

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/eh7image.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/eh7image.png)

<p class="callout success">**Praktyczne kombinacje:**</p>

```bash
df -Th
```

<p class="callout info">Typ systemu plików i format czytelny – najbardziej praktyczna forma dla administratorów.</p>

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/7NBimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/7NBimage.png)

```bash
df -h | grep -v tmpfs
```

<p class="callout info">Ukryj tymczasowe systemy plików tmpfs, devtmpfs (często nieistotne).</p>

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/KU1image.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/KU1image.png)

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

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

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/4y2image.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/4y2image.png)

```bash
df -hT | sort -k6 -rn
```

<p class="callout info">Posortuj dyski wg procentu zajęcia miejsca (kolumna 6) malejąco – szybko znajdziesz problematyczne dyski.</p>

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/kMQimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/kMQimage.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.

```bash
du
```

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/03cimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/03cimage.png)

<p class="callout info">Domyślnie wyświetla rozmiary wszystkich podkatalogów rekurencyjnie (może wypisać tysiące linii!).</p>

```
du -h
```

<p class="callout info">Format czytelny (KB, MB, GB).</p>

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/mNZimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/mNZimage.png)

```
du -sh katalog/
```

<p class="callout info">Podsumowanie (-s, summary) rozmiaru katalogu w czytelnym formacie. </p>

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/AX4image.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/AX4image.png)

<p class="callout info">Wszystkie pliki i katalogi (-a, all) z rozmiarami – pokaże też pojedyncze pliki, nie tylko katalogi.</p>

```bash
du -d 1 -h /var
```

<p class="callout info">Ograniczenie głębokości (-d 1) do jednego poziomu – nie wchodzi głębiej w strukturę.</p>

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/ppximage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/ppximage.png)

<p class="callout info">**Znalezienie największych katalogów i plików:**</p>

```bash
du -ah /var | sort -rh | head -20
```

<p class="callout info">20 największych plików i podkatalogów w /var (sortuj malejąco wg rozmiaru czytelnego dla człowieka).</p>

```bash
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](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/PGlimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/PGlimage.png)

Znajdź wszystkie pliki większe niż 100MB. Przydatne gdy szukasz co zabiera miejsce.

```bash
find /var/log -type f -size +1G
```

Znajdź pliki logów większe niż 1GB – często to one zapełniają dysk.

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/4gEimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/4gEimage.png)

**Praktyczne scenariusze z doświadczeń sysadmina:**

```bash
# 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
```

<p class="callout info">Sprawdź rozmiar bazy danych</p>

```bash
du -sh /var/lib/mysql
du -sh /var/lib/postgresql
```

<p class="callout info">Sprawdź cache, tymczasowe pliki</p>

```bash
du -sh /tmp /var/tmp /var/cache
```

<p class="callout info">Komenda `lsblk` – lista urządzeń blokowych</p>

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

```bash
lsblk
```

Wyświetla wszystkie urządzenia blokowe w formie drzewa. Idealnie pokazuje relacje między dyskami, partycjami i punktami montowania.

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/c3Oimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/c3Oimage.png)

```bash
lsblk -f
```

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

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/eHgimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/eHgimage.png)

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

<p class="callout info">Wybrane kolumny – dostosuj wyświetlanie do swoich potrzeb.</p>

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/1Ftimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/1Ftimage.png)

```bash
lsblk -p
```

<p class="callout info">Pokazuje pełne ścieżki urządzeń (np. /dev/sda zamiast sda).</p>

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/sWIimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/sWIimage.png)

##### Komenda `lscsi` – lista urządzeń SCSI/SATA

```bash
lscsi
```

<p class="callout info">Wyświetla listę podłączonych urządzeń SCSI/SATA. Przydatne do weryfikacji że wszystkie dyski fizyczne są widoczne w systemie.</p>

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/xTQimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/xTQimage.png)

```
lscsi -s
```

<p class="callout info">Dodaje rozmiar dysków.</p>

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/F9cimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/F9cimage.png)

##### Monitorowanie I/O dysku w czasie rzeczywistym

```bash
iostat -xz 1
```

<p class="callout info">Monitoruj operacje I/O na dyskach co sekundę (wymaga pakietu `sysstat`). Szukaj kolumny %util &gt; 80% – oznacza mocne obciążenie dysku.</p>

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/Arlimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/Arlimage.png)

```bash
iotop
```

<p class="callout info">Interaktywne narzędzie pokazujące które procesy generują najwięcej operacji I/O (wymaga instalacji i uprawnień root).</p>

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/HGXimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/HGXimage.png)

```bash
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**

```bash
# 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**

```bash
# 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**

```bash
# 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:**

```bash
# 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
```

<p class="callout info">Monitorowanie trendu zajęcia dysku</p>

```bash
# 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
```

```bash
# 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
```

<p class="callout info">Sprawdzanie stanu zdrowia dysku (S.M.A.R.T.) (wymaga pakietu `smartmontools`).</p>

```bash
smartctl -a /dev/sda
```

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/XR7image.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/XR7image.png)

<p class="callout info">Wyświetla szczegółowe informacje o stanie dysku z S.M.A.R.T. </p>

```bash
smartctl -H /dev/sda
```

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/cL1image.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/cL1image.png)

<p class="callout info">Szybki test zdrowia dysku (PASSED/FAILED).</p>

##### LVM, RAID i ZFS

<p class="callout info">**Dla systemów z LVM:**</p>

```bash
lvs              # Lista logical volumes
pvs              # Lista physical volumes
vgs              # Lista volume groups
lvdisplay        # Szczegóły LV
```

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/ebUimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/ebUimage.png)

<p class="callout info">**Dla systemów z RAID:**</p>

```bash
cat /proc/mdstat           # Status software RAID
mdadm --detail /dev/md0    # Szczegóły RAID array
```

<p class="callout info">**Dla systemów z ZFS (FreeBSD, Linux z ZFS):**</p>

```bash
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
```

<p class="callout info">Podsumowanie praktycznych komend</p>

```bash
# 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

```