Come espandere lo spazio tmpfs in Linux

Contenuti

Bash Shell

Hai mai sentito parlare di tmpfs su Linux?? È quel piccolo filesystem temporaneo che risiede in memoria ed è installato di default sulle distribuzioni Linux. Ultra veloce ma regolarmente di dimensioni limitate. Puoi crescere facilmente?? Per saperne di più!

Che cos'è tmpfs?

Tutto all'interno di un computer ha una certa velocità operativa nativa. Si inizia con la CPU (l'unità centrale di elaborazione) Sul tuo computer, che ha un set di cache L1-Lx (Livello 1 al livello x), sono molto piccoli (come esempio, 16 Kb) ma ultraveloce (e probabilmente ultraveloce). -costoso).

Dopo la cache della CPU, sono i principali banchi di memoria, che sono ancora molto più veloci (e byte per byte più costoso) che il disco rigido, eccetera. Come potete vedere, si tratta di costi contro dimensioni contro velocità. La regola generale è che il costo aumenta all'aumentare della velocità e le dimensioni diminuiscono per limitare i costi, eccetera.

Se hai memorizzato tutti i tuoi dati all'interno dei chip di memoria principale del tuo computer, che è tecnicamente molto fattibile e abbastanza semplice da fare, il suo lavoro letteralmente mosca rispetto a quando si utilizza un disco singolo, poiché i chip di memoria sono molto più veloci della maggior parte dei dischi rigidi.

Nonostante questo, ci sono alcune limitazioni tecniche con questo. Una volta spento il computer, i tuoi file scompariranno. Un errore irreversibile dell'applicazione potrebbe essere sufficiente per dover riavviare il computer e perdere i file. Allo stesso tempo, non potresti mai più spegnere il computer, a meno che non avesse alcune funzionalità avanzate (che non esiste per quanto ne so) per mantenere i tuoi file su chip di memoria, equivalente a una cache compatibile BBU (Unità di backup della batteria) in un raid controller.

Nonostante questo, nota che c'è una caratteristica equivalente (ma non identico) a questo che potresti già utilizzare: quando sospendi il tuo sistema nella RAM (usando dormire o altra terminologia equivalente utilizzata dai sistemi operativi), una parte dell'alimentazione verrà continuamente fornita ai tuoi chip di memoria per mantenere aggiornati i tuoi dati.

Successivamente, quando riavvii il sistema, puoi riprendere da dove avevi interrotto. Ma lo spegnimento mantenendo il contenuto della memoria generalmente non viene utilizzato con i computer. potenzialmente, potrebbe essere utilizzato da tablet intelligenti, anche se si potrebbe sostenere che tali stati non sono veri al di fuori degli stati, ma stati piuttosto a bassa potenza.

Dopo aver chiarito come, in termini generali, archiviare i file su chip di memoria probabilmente non è un'idea solida, ci sono altri usi in cui potrebbe essere utile. Come esempio, durante il test / controllo di qualità del programma, è probabile che avvii e chiuda il programma in prova di solito.

Questi file sono temporanei e di scarso valore individuale. (a meno che non venga trovato un bug, a quel punto i dati possono essere copiati sul disco principale) e, come tale, potrebbe essere memorizzato sui tuoi chip di memoria. Questo è ciò tmpfs è e lo fa: È un filesystem temporaneo all'interno della tua memoria. Alcuni di voi potrebbero immediatamente obiettare e dire: “Non è vero”, e avrebbero ragione. Continua a leggere.

Coloro che si opponevano avrebbero potuto immediatamente affermare che il tmpfs non è garantito che lo spazio sia in memoria, e questo è vero. Puoi vedere tmpfs come un ibrido tra un vero disco RAM (un disco creato in memoria volatile) e una vera memoria permanente su disco. In certi casi, il kernel linux scambierà il contenuto di tmpfs nello spazio di scambio del sistema, potrebbe essere sul disco. Questo è fatto in modo trasparente (senza la necessità dell'interazione dell'utente).

Per ulteriori informazioni su come configurare un disco RAM, consulta la nostra guida Come creare un'unità RAM in Linux.

Il tuo attuale tmpfs Taglia

Ora che abbiamo tmpfs spazio meglio definito, Diamo un'occhiata alle dimensioni attuali del tuo tmpfs spazio. Potresti pensare a lui? tmpfs sistema come unità virtuale, temporaneo e volatile. Puoi vedere lo spazio in uso usando df -h (utilizzo dello spazio su disco del file system (df) in formato leggibile dall'uomo, Grazie al -h opzione):

df -h | grep -Ei 'shm|dimensione'

Controllo dell'utilizzo corrente di tmpfs usando df -h

Qui usiamo df -h (spiegato sopra) combinato con un tubo (|) inviare l'output risultante dal df -h ancora grep, usando un esteso (-E) formattare l'espressione regolare senza distinzione tra maiuscole e minuscole (-i o semplicemente io quando combinato con un'altra alternativa) per scegliere il titolo in alto (che include la parola Size) e qualsiasi riga che includa il testo shm.

Il motivo per cui grep shm è quasi sempre, come possiamo vedere anche nell'output qui, Lo spazio tmpfs è allocato alla directory del filesystem /dev/shm. Se il comando precedente non produce alcun output, corri df -h e rivedi i risultati totali per la ricerca tmpfs spazio, si C'è.

Notare che, per impostazione predefinita, il sistema operativo assegnerà anche / imposterà alcuni spazi tmpfs, quello potrebbe, come esempio, carta geografica / cavalcare /sys/fs/cgroup, /run e /run/lock directory. Non provare a modificarli.

Riguardo a /dev/shm e altre directory, nota per vedere queste cartelle nella struttura della directory del sistema operativo [albero] non significa che i file siano veramente / archiviato fisicamente su disco in qualche /dev/shm directory!

Significa semplicemente che, secondo e in linea con il modo standard di Linux di poter montare le unità (o per questo caso, tmpfs) in qualsiasi directory nella gerarchia del filesystem, se ci fossero file in quella directory prima del montaggio , semplicemente non sarebbero stati visibili fino a quando il punto di montaggio non fosse caduto.

In questo particolare sistema, il tmpfs lo spazio è di 32 GB e quasi tutto non viene utilizzato. Quel poco che serve (166 MB) è la tabella degli obiettivi / indice della directory stessa, che è invisibile agli utenti, ma è in atto per essere in grado di memorizzare i file nella struttura del file system. La dimensione del tmpfs è, per impostazione predefinita, metà della memoria di sistema per alcuni sistemi operativi.

Questo è abbastanza grande tmpfs e sarebbe solo tecnicamente giustificato, fino a un certo punto, in un sistema con, come esempio, 40 GB o più di memoria fisica, benché, a seconda delle circostanze, un particolare caso d'uso potrebbe giustificare altre configurazioni. Generalmente, Consiglio di tenere il tmpfs spazio inferiore a, Diciamo, il 70-80% della memoria, e quella percentuale sarebbe significativamente più bassa se la RAM (Memoria ad accesso casuale, un altro modo abbreviato o modo di riferirsi alla memoria di sistema) Ero piccolo per iniziare.

Il motivo è che vuoi rendere disponibile spazio di memoria sufficiente per eseguire altri programmi, sistemi operativi e servizi software.

Come esempio, Non vorrei premiare il 80% di memoria se il tuo sistema disponeva di 2 GB di memoria, poiché questo probabilmente lascerebbe molto poco per il corretto funzionamento di altre cose o del tutto. e, al contrario, ha una gran quantità di 256 GB di memoria, includendo il 90% di quella (230,4 GB) ne lascerei delle belle 25 GB disponibili, Quello, a seconda del caso d'uso, Potevo (o no) essere abbastanza.

In sintesi, Vi consiglio di regolare sempre la taglia di tmpfs secondo 1) di quanto spazio hai veramente bisogno in tmpfs, 2) quanta memoria c'è nel tuo sistema e 3) quanta memoria reale stanno usando le altre app contemporaneamente da tmpfs (comprese le tue operazioni, Servizi, eccetera.). L'esperienza con tutte queste cose aiuta qui.

Estensione tmpfs nel tuo sistema

Ora che conosciamo la dimensione del flusso tmpfs volume e che dimensione dargli in futuro utilizzando alcune delle considerazioni fornite nell'ultimo paragrafo sopra, possiamo dare un'occhiata per ingrandire (o ridurre) Nostro tmpfs spazio.

Farlo è abbastanza semplice. Tutto quello che faremo è, Invece del sistema operativo che configura automaticamente il /dev/shm tmpfs spazio per noi, impostarlo staticamente in posizione nel /etc/fstab file, che controlla le mappature dell'unità all'avvio. Aggiungiamo semplicemente:

# <file system> <punto di montaggio> <genere> <opzioni opzioni>                                       <Spazzatura> <passare>
tmpfs /dev/shm tmpfs impostazioni predefinite,rw,nodev,infallibile,noatime,nosuide,dimensione=2G   0      0

al /etc/fstab procedimento. Non copiare il primo commento (# prefisso), dal momento che sarà già lì. Allo stesso tempo, cambiare il 2G (2GB) in base al requisito calcolato / stimato per la dimensione tmpfs. Potrebbe non essere utile determinare questa dimensione vicina o superiore alla memoria disponibile, come abbiamo spiegato in precedenza.

I segni di intestazione nella casella /etc/fstab file spiegare il significato dei campi, e puoi trovare maggiori informazioni nella sezione fstab Per stampare su entrambi i lati del foglio per un unico lavoro di stampa, che può essere ottenuto digitando man fstab. Semplicemente, chiediamo al sistema operativo di montare a tmpfs File System (la posizione del sistema è in memoria, quindi invece di specificare un dispositivo, noi indichiamo tmpfs.) e il tipo tmpfs, montato su /dev/shm.

Stabiliamo anche una serie di alternative. Probabilmente vorrai lasciare il defaults,rw,nodev,nofail minimamente (usa le impostazioni predefinite, accesso in lettura / scrivere, nessun dispositivo fisico presente e non interrompere l'avvio del sistema operativo se questo montaggio non riesce in alcun modo).

Puoi anche scegliere di lasciare le alternative di ottimizzazione noatime,nosuid Se desideri (che è l'ideale per i test / impostazioni di controllo della qualità, poiché lo farà più velocemente mantenendo meno informazioni sui file nello spazio tmpfs), oppure puoi eliminarli (e le sue virgole corrispondenti). Allo stesso tempo, partire (e cambia / specifica la taglia) il size=xG parametro. In sintesi, abbiamo uno standard 0 0 di dump and pass (arbitro man fstab per maggiori informazioni su queste due opzioni).

Una volta effettuata la modifica, basta riavviare il sistema ed eseguire df -h per verificare che tu /dev/shm Lo spazio tmpfs ora ha la nuova dimensione che hai configurato. Se qualcosa è andato storto, controlla solamente dmesg (digitato al prompt dei comandi) e cerca i messaggi di errore rossi (probabilmente dovrai scorrere) per scoprire cosa è andato storto. Anche quando qualcosa è andato storto, il sistema avrebbe dovuto avviarsi bene comunque, fintanto che non hai cancellato il nofail opzione.

Per gli utenti Ubuntu, esiste, nonostante questo, un fattibile errore nofail Fai attenzione. C'era un'alternativa nobootwait opzione [Invece], anche se non è chiaro se può essere ancora utilizzato e, in quel caso, in quali versioni di Ubuntu e dei suoi derivati [soltanto]. Come ultima alternativa al test, fintanto che viene utilizzato SystemD, potresti considerare di usare x-systemd.device-timeout = 10 tempo di attesa, dove 10 è il numero di secondi che si è disposti ad aspettare durante l'inizio.

Fine

In questo post, analizziamo in profondità tmpfs dimensionamento, tenendo conto del caso d'uso e di altri fattori.

Spieghiamo anche tmpfs in dettaglio, capito come trovare la dimensione attuale della macchina tmpfs File System, e in breve ho visto come ridimensionare tmpfs.

Divertiti a usare tmpfs!

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.