Come e perché l'opzione noatime migliora le prestazioni dei sistemi Linux

L'aggiornamento di atime influisce sulle prestazioni del sistema. Cosa sta succedendo e cosa fare al riguardo - leggi nell'articolo.

Come e perché l'opzione noatime migliora le prestazioni dei sistemi Linux
Ogni volta che aggiorno Linux sul mio computer di casa, devo affrontare determinate attività. Con gli anni, è diventata una routine: faccio il backup dei miei file, cancello il sistema, reinstallo tutto da zero, recupero i miei file e poi reinstallo le mie applicazioni preferite. Modifico anche le impostazioni del sistema per adattarle a me. A volte, ci vuole troppo tempo. E recentemente mi sono chiesto se ne valga davvero la pena.

atime è uno dei tre timestamp per i file in Linux (ne parleremo più avanti). In particolare, mi sono chiesto se valga la pena disattivare atime nei sistemi Linux più recenti. Poiché atime viene aggiornato ogni volta che un file viene accesso, ho capito che influisce notevolmente sulle prestazioni del sistema.
Di recente ho aggiornato a Fedora 32 e, per abitudine, ho iniziato disattivando atime. Mi sono chiesto: ne ho davvero bisogno? Ho deciso di approfondire l'argomento e questo è quello che ho scoperto.

Un po' sui timestamp dei file

Per comprendere meglio, devi fare un passo indietro e ricordare alcune cose sui file system Linux e su come il kernel assegna i timestamp ai file e alle cartelle. Puoi vedere la data dell'ultima modifica dei file e delle cartelle eseguendo il comando ls -l (long) o semplicemente guardando le informazioni a riguardo nel gestore file. Ma dietro le quinte, il kernel Linux tiene traccia di diversi timestamp per file e cartelle:

  1. Quando il file è stato modificato per l'ultima volta (mtime)
  2. Quando le proprietà e i metadati del file sono stati modificati per l'ultima volta (ctime)
  3. Quando il file è stato accesso per l'ultima volta (atime)
  4. Puoi usare il comando stat, per visualizzare i dati sul file o sulla cartella. Ecco il file /etc/fstab da uno dei miei server di prova:

$ stat fstab
  File: fstab
  Size: 261             Blocks: 8          IO Block: 4096   regular file
Device: b303h/45827d    Inode: 2097285     Links: 1
Access: (0664/-rw-rw-r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:etc_t:s0
Access: 2019-04-25 21:10:18.083325111 -0500
Modify: 2019-05-16 10:46:47.427686706 -0500
Change: 2019-05-16 10:46:47.434686674 -0500
 Birth: 2019-04-25 21:03:11.840496275 -0500

Qui si può vedere che questo file è stato creato il 25 aprile 2019, quando ho installato il sistema. Il mio file /etc/fstab è stato modificato per l'ultima volta il 16 maggio 2019, e tutti gli altri attributi sono stati modificati più o meno nello stesso tempo.

Se copio /etc/fstab in un nuovo file, le date cambiano, indicando che si tratta di un nuovo file:

$ sudo cp fstab fstab.bak
$ stat fstab.bak
  File: fstab.bak
  Size: 261             Blocks: 8          IO Block: 4096   file regolare
Device: b303h/45827d    Inode: 2105664     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_t:s0
Access: 2020-05-12 17:53:58.442659986 -0500
Modify: 2020-05-12 17:53:58.443659981 -0500
Change: 2020-05-12 17:53:58.443659981 -0500
 Birth: 2020-05-12 17:53:58.442659986 -0500

Ma se rinomino semplicemente il file, senza modificarne il contenuto, Linux aggiornerà solo il timestamp di modifica del file:

$ sudo mv fstab.bak fstab.tmp
$ stat fstab.tmp
  File: fstab.tmp
  Size: 261             Blocks: 8          IO Block: 4096   file regolare
Device: b303h/45827d    Inode: 2105664     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_t:s0
Access: 2020-05-12 17:53:58.442659986 -0500
Modify: 2020-05-12 17:53:58.443659981 -0500
Change: 2020-05-12 17:54:24.576508232 -0500
 Birth: 2020-05-12 17:53:58.442659986 -0500

Queste timestamp sono molto utili per alcune applicazioni Unix. Ad esempio, biff è un programma che ti avvisa dell'arrivo di un nuovo messaggio di posta elettronica. Oggi è raramente usato biff, ma nei giorni in cui le caselle di posta erano locali al sistema, biff era abbastanza comune.

Come fa il programma a sapere se hai nuova posta in arrivo? biff confronta il timestamp dell'ultima modifica (quando il file della posta in arrivo è stato aggiornato con un nuovo messaggio di posta elettronica) e il timestamp dell'ultimo accesso (l'ultima volta che hai letto la tua email). Se la modifica è avvenuta dopo l'accesso, biff capirà che è arrivata una nuova lettera e te lo notificherà. Il client di posta Mutt funziona in modo simile.

Il timestamp dell'ultimo accesso è anche utile se devi raccogliere statistiche sull'utilizzo del file system e ottimizzare le prestazioni. Gli amministratori di sistema devono sapere a quali oggetti si accede per configurare correttamente il file system.

Ma per la maggior parte dei programmi moderni, questo timestamp non è più necessario, quindi è stata proposta la sua rimozione. Nel 2007, Linus Torvalds e alcuni altri sviluppatori del kernel discutevano atime nel contesto di un problema di prestazioni. Lo sviluppatore del kernel Linux Ingo Molnar fece la seguente osservazione su atime e sul file system ext3:

È piuttosto strano che ogni desktop e server Linux soffrano di una evidente diminuzione delle prestazioni di input/output a causa degli aggiornamenti costanti dell'atime, mentre gli utenti reali sono solo due: tmpwatch [che può essere configurato per utilizzare ctime, quindi non è un grosso problema] e alcuni strumenti di backup.

Ma le persone continuano a utilizzare alcuni programmi che hanno bisogno di questo timestamp. Pertanto, eliminare l'atime influenzerà il loro funzionamento. Gli sviluppatori del kernel Linux non dovrebbero limitare la libertà dell'utente.

La soluzione di Salomone

Le distribuzioni Linux includono molte applicazioni e, inoltre, gli utenti possono scaricare e installare altri programmi in base alle loro necessità. Questo è un vantaggio chiave dei sistemi operativi open source. Ma complica l'ottimizzazione delle prestazioni del file system. L'eliminazione di componenti che consumano risorse può compromettere il funzionamento del sistema.

Come compromesso, gli sviluppatori del kernel Linux hanno implementato una nuova opzione relaytime, progettata per garantire un equilibrio tra prestazioni e compatibilità:

l'atime viene aggiornato solo se il tempo di accesso precedente è inferiore al tempo di modifica o cambiamento di stato corrente ... A partire da Linux 2.6.30, il kernel utilizza questa opzione per impostazione predefinita (a meno che non venga specificato noatime) ... Inoltre, a partire da Linux 2.6.30, il tempo dell'ultimo accesso al file viene sempre aggiornato se è superiore a 1 giorno.

I moderni sistemi Linux (a partire da Linux 2.6.30, rilasciato nel 2009) utilizzano già relaytime, il che dovrebbe portare a un notevole incremento delle prestazioni. Questo significa che non è necessario configurare il file /etc/fstab, e con relaytime puoi fidarti del valore predefinito.

Incremento delle prestazioni del sistema tramite noatime

Ma se desideri configurare il tuo sistema per ottenere le massime prestazioni, disattivare l'atime è ancora possibile.

Il cambiamento delle prestazioni potrebbe non essere molto evidente su dischi molto veloci e moderni (come NVME o SSD veloci), ma ci sarà un leggero aumento.

Se sai di non utilizzare software che richiede atime, puoi migliorare leggermente le prestazioni attivando l'opzione noatime nel file. /etc /fstab. Dopo questo, il kernel non aggiornerà più l'atime costantemente. Usa l'opzione noatime durante il montaggio del file system:

/dev/mapper/fedora_localhost--live-root /          ext4   defaults,noatime,x-systemd.device-timeout=0 1 1
UUID=be37c451-915e-4355-95c4-654729cf662a /boot    ext4   defaults,noatime        1 2
UUID=C594-12B1                          /boot/efi  vfat   umask=0077,shortname=winnt 0 2
/dev/mapper/fedora_localhost--live-home /home      ext4   defaults,noatime,x-systemd.device-timeout=0 1 2
/dev/mapper/fedora_localhost--live-swap none       swap   defaults,x-systemd.device-timeout=0 0 0

Le modifiche avranno effetto al prossimo riavvio.

In base alla pubblicità

Hai bisogno di un server per ospitare il tuo sito? La nostra azienda offre server affidabili con pagamento giornaliero o una tantum, ogni server è connesso a una banda internet di 500 Megabit e protetto gratuitamente da attacchi DDoS!

Come e perché l'opzione noatime migliora le prestazioni dei sistemi Linux

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster