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

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:
- Quando il file è stato modificato per l'ultima volta (mtime)
- Quando le proprietà e i metadati del file sono stati modificati per l'ultima volta (ctime)
- Quando il file è stato accesso per l'ultima volta (atime)
- 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 -0500Qui 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 -0500Ma 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 -0500Queste 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 , 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 0Le modifiche avranno effetto al prossimo riavvio.
In base alla pubblicità
Hai bisogno di un server per ospitare il tuo sito? La nostra azienda offre con pagamento giornaliero o una tantum, ogni server è connesso a una banda internet di 500 Megabit e protetto gratuitamente da attacchi DDoS!
Fonte: habr.com
