# Introduzione: journal

I moderni filesystem Linux hanno un *diario di bordo*. Questo significa che ogni operazione viene registrata in un log interno, il *journal*, prima di essere eseguita. Se un'operazione viene interrotta a causa di un errore di sistema, questa puo' essere ricostruita controllando il journal, evitando il danneggiamento del filesystem e la perdita di dati.

## Controllare l'utilizzo dei dischi

Un comando usato per controllare quanto spazio viene usato e quanto ne resta su un determinato filesystem é `du` o *disk usage*.

```bash
1.1G	./Film/S09
8.8G	./Film/S10
32G	./Film
55G	./Criterion
86G	.
```
Il comportamento predefinito é quello di mostrare l'utilizzo di ogni sottodirectory, quindi l'utilizzo totale della directory corrente, incluse le sottodirectory (86G nell'esempio). Per controllare quanto *profondo* l'output di `du` dovrebbe essere, si utilizza il parametro `-d N`, dove `N` indica il livello.

Per impostazione predefinita, `du` mostra solo il conteggio dell'utilizzo delle directory. Per mostrare un conteggio individuale per tutti i file, aggiungere il parametro `-a`.

Per escludere alcuni tipi di file dal conteggio si utilizza `--exclude="PATTERN"`:

```bash
 > du -h --exclude="*.mkv"
0	./Film/S09
0	./Film/S10
0	./Film
0	./Criterion
356K	.
```

## Controllare lo spazio libero

`du` funziona a livello di file e directory. `df` mostra invece quanto spazio é disponibile a livello di filesystem. Mostra un elenco di tutti i filesystem montati nel sistema, inclusa la loro dimensione totale, lo spazio utilizzato, quello ancora disponibile, la percentuale e il mount-point.

```bash
[21:03 Sun Jan 26]dado@dadopc (1425):~
 > df -h
Filesystem          Type      Size  Used Avail Use% Mounted on
udev                devtmpfs   15G     0   15G   0% /dev
tmpfs               tmpfs     3.0G  1.9M  3.0G   1% /run
/dev/mapper/VG0-LV0 btrfs     465G  117G  346G  26% /
```

Per mostrare gli inode usati/disponibili invece dei blocchi, si usa il parametro `-i`:

```bash
[21:03 Sun Jan 26]dado@dadopc (1427):~
 > df -i
Filesystem          Type     Inodes IUsed IFree IUse% Mounted on
udev                devtmpfs   3.7M   596  3.7M    1% /dev
tmpfs               tmpfs      3.7M  1.2K  3.7M    1% /run
/dev/mapper/VG0-LV0 btrfs         0     0     0     - /
```

Il parametro `-T` stampa il tipo di filesystem. É possibile anche filtrare l'output per mostrare solo un tipo di filesystem con `-t TYPE` o escludere un dato filesystem con `-x TYPE`:

```bash
[21:06 Sun Jan 26]dado@dadopc (1428):~
 > df -hTt btrfs
Filesystem          Type   Size  Used Avail Use% Mounted on
/dev/mapper/VG0-LV0 btrfs  465G  117G  346G  26% /
/dev/mapper/VG0-LV0 btrfs  465G  117G  346G  26% /var/cache
/dev/mapper/VG0-LV0 btrfs  465G  117G  346G  26% /home
/dev/mapper/VG0-LV0 btrfs  465G  117G  346G  26% /.snapshots
/dev/mapper/VG0-LV0 btrfs  465G  117G  346G  26% /var/crash
/dev/mapper/VG0-LV0 btrfs  465G  117G  346G  26% /var/lib/AccountsService
/dev/mapper/VG0-LV0 btrfs  465G  117G  346G  26% /var/lib/gdm3
/dev/mapper/VG0-LV0 btrfs  465G  117G  346G  26% /var/log
/dev/mapper/VG0-LV0 btrfs  465G  117G  346G  26% /var/tmp
```

## Manutenzione dei filesystem ext2, ext3 e ext4 

Esiste l'utility `fsck` (*filesystem check*). Sintassi:

```bash
fsck /dev/sda1
```

> NOTA: MAI, MAI eseguire fsck su un filesystem montato

Alcune opzioni:

- `-A`: controlla tutti i filesystem elencati in `/etc/fstab`
- `-C`: visualizza una barra di avanzamento durante il controllo (solo ext2/3/4)
- `-N`: *dry-run*
- `-R`: se usato insieme a `-A`, salta il controllo del filesystem root
- `-V`: verbose

`fsck` non controlla il filesystem, ma richiama l'utilitá appropriata per il tipo di filesystem; `e2fsck` nel caso di ext2/3/4. Per impostazione predefinita, viene eseguito in modalitá interattiva: quando viene rilevato un errore, viene chiesto all'utente come procedere. Ci sono alcune opzioni per eseguire `e2fsck` in modalitá automatica:

- `-p`: tenta di correggere autonomamente gli errori. Se l'errore richiede l'intervento dell'amministratore, fornisce una descrizione e terminerá la propria esecuzione
- `-y`: risponde `yes` a tutte le domande
- `-n`: risponde `no` a tutte le domande

## Manutenzione di un filesystem xfs

Esiste l'utility `xfs_repair`, la cui sintassi di base: 

```bash
xfs_repair /dev/sda1
```

- `-n`: *dry-run*. Nessuna modifica: il filesystem verrá controllato, ma non verrá effettuata alcuna riparazione.