Come creare un'unità RAM in Linux

Contenuti

Nel caso te lo stessi chiedendo, Le unità RAM e le istanze tmpfs non sono le stesse. Questo post spiegherà la differenza e ti mostrerà come creare un'unità RAM in Linux usando la riga di comando. Configura un'unità RAM veloce in pochi minuti!

Che cos'è un? Unità RAM?

I chip RAM del tuo computer possono essere utilizzati per memorizzare un'unità virtuale. Questa unità non è memorizzata sul disco rigido ma nella RAM. Non solo la velocità di questo disco virtuale sarà significativamente più veloce di quella di un disco normale (e soprattutto rispetto ad un disco rotante di vecchio tipo, poiché il movimento fisico delle parti all'interno di un disco rotante provoca ulteriori ritardi), I chip RAM non si consumano velocemente come i dischi, e ancora soprattutto e ancora di più con le unità fisiche di tipo più vecchio.

Sembra troppo bello per essere vero? Bene, in realtà c'è un avvertimento; Se riavvii accidentalmente il computer, o se fallisce, tutti i tuoi dati scompariranno. RAM (memoria ad accesso casuale), i chip di memoria nel tuo computer, richiedono energia costante per conservare le tue informazioni. La memoria RAM è considerata volatile.

In altre parole, Le unità RAM si prestano ad applicazioni temporanee o ottimizzazioni specifiche. Come esempio, quando usiamo server di test per testare il software, abbiamo impostato un'unità RAM per consentire ai numerosi test simultanei di essere più veloci. E anche se il server perde potenza, non ti mancherebbe molto; vorremmo solo iniziare un'altra corsa di prova.

Un'altra applicazione è il precaricamento dei dati a cui si accede più volte su un'unità RAM. Come esempio, se hai un server che accede costantemente a un determinato database di sola lettura (la lettura e la scrittura possono essere più complesse se i dati devono essere conservati), che risiede regolarmente su disco, quindi puoi copiare automaticamente il database di sola lettura nella RAM (con alcuni script automatici all'avvio del server, come esempio, o con un cron job), e poi lascia che il server del database usi quei dati.

In altre parole, si possono riassumere due casi d'uso principali, uno sta memorizzando nella cache (come il nostro esempio di database R / oh), l'altro è l'archiviazione dei dati “inestimabile” (come nostro esempio di prova). Successivamente, può fare un passo avanti (un terzo caso d'uso se vuoi) e sincronizzare i dati su disco a intervalli specificati. Come esempio, con esempio di prova, che include anche le scritture nella memoria RAM, potresti scrivere il riassunto e / o testare i dati su disco (archiviazione permanente) alla fine di ogni prova completa.

Un altro avvertimento con le unità RAM è che sono limitate alla dimensione della memoria sul tuo sistema e probabilmente a meno., poiché ha bisogno di altra memoria per eseguire il sistema operativo e altro software.

Dimensionamento di un'unità RAM più grande di, diciamo un 80-85% memoria di sistema arbitraria, potrebbe essere in cerca di guai. In ogni caso, se hai 256 GB di RAM sul tuo server, includendo il 90% allocato per un'unità di RAM lascerebbe più di 25 GB per sistema operativo e applicazioni. Con solo 4 GB, un incarico di 90% alla RAM me ne andrei 0,4 GB (400 MB), che rischia di causare problemi. Perciò, Dipende, fino a un certo punto, qual è la memoria totale della macchina e quanta sarà necessaria per altri software.

Allo stesso tempo, un'unità RAM non funziona come l'allocazione / istanza tmpfs.

Unità RAM vs istanza tmpfs

È anche possibile memorizzare un tmpfs, ma non deve essere, sui chip RAM del tuo computer. Il solito /dev/shm La mappatura tmpfs configurata automaticamente con l'installazione di most, se non tutti i sistemi operativi Linux, è utile ma non funziona come un'unità RAM.

La differenza tra i due è che un'unità RAM (il termine duro Mi viene in mente) è memorizzato su 100% su veri chip RAM, mentre tmpfs è memorizzato nel pool di memoria del kernel Linux, che può includere cose come lo spazio di scambio, trovato regolarmente su disco. Anche se il kernel probabilmente ottimizzerebbe tutti gli accessi al gruppo, offre ancora l'opportunità di scrivere i dati sulla RAM fisica o sul DISCO fisico. E, si va al disco, sarà più lento.

creando un Unità RAM

La creazione di un'unità RAM è relativamente semplice. Puoi creare un piccolo script chiamato ramdrive.sh, con il seguente codice:

#!/bin/bash
if [ "$(montare | grep -o "/mnt/ram")" != "/mnt/ram" ]; then
  sudo mkdir -p /mnt/ram
  sudo mount -t ramfs -o size=1g ramfs /mnt/ram
  sudo chown -R $(chi sono):$(chi sono) /mnt/ram
fi
mount | ariete di presa

e un altro copione umount_ram.sh, con il seguente codice:

#!/bin/bash
sudo umount /mnt/ram

Diamo un'occhiata al primo script. Primo, indichiamo che vogliamo Bash come nostro interprete di comandi con il simbolo Shebang (#!). Per ulteriori informazioni su Shebang, dai un'occhiata a Bash Automation & Nozioni di base sugli script, il nostro post di 3 parti su automazione e scripting bash.

Dopo di che, controlliamo se abbiamo già un supporto sotto /mnt/ram (la directory che useremo per montare la nostra unità di memoria RAM), usando solo grep (grep -o) a partire dal /mnt/ram nella lista completa dei “montati oggi”, come è mostrato in mount. Se lo stesso non viene trovato, procediamo con tre comandi sudo. Tutti e tre richiedono sudo, anche quando per vari motivi.

Il primo comando ha bisogno di sudo, poiché crea una directory possibilmente root e almeno in /mnt, che sono directory privilegiate / protetto. Il seguente comando, il nostro montaggio e creazione di un vero disco RAM, hai bisogno di sudo poiché mount è un'operazione privilegiata. Impostiamo la dimensione su 1 GB usando size=1g. Indichiamo anche che vogliamo un'unità di tipo ramfs (-t ramfs) proveniente dal dispositivo ramfs (come indica il secondo ramfs), e in sintesi elenchiamo il punto di montaggio come /mnt/ram.

Nel terzo comando abilitato per sudo, cambiamo il proprietario del /mnt/ram directory (ora la nostra unità RAM, il nostro punto di montaggio delle ramfs) l'utente corrente e il gruppo dell'utente corrente utilizzando il whoami comando due volte. Potresti voler cambiare questo nel gruppo specifico e / o specifico per utilizzare ramdrive o per un gruppo più ampio se più utenti utilizzeranno ramdrive.

Dopo di che, finiamo il nostro condizionale if .. fi comando e fai un'ultima chiamata a mount con un grep per ram per assicurarsi che lo script riporti quanto già montato in termini di RAM, o cosa è stato montato proprio ora quando è stato eseguito lo script. Questo è un controllo pratico / veloce che lo script ha avuto successo quando è stato eseguito.

Il nostro sottoscript, umount_ram.sh, smontare l'unità basata su RAM con punto di montaggio /mnt/ram, In altre parole, l'unità ramfs che abbiamo appena creato. AVVERTIMENTO: esegui questo rimuove / cancella immediatamente tutti i dati archiviati nella memoria volatile e il rimontaggio dell'unità RAMFS non lo riporterà indietro; creerà solo una nuova unità RAM vuota. Stai attento!

Fine

In questo post, discutiamo delle unità RAM / ramfs (lo stesso) e le istanze / compiti tmpfs. Successivamente creiamo un'unità ramfs da 1 GB sotto /mnt/ram usando un piccolo script per montare o un'unità RAM.

Se vuoi continuare a leggere su Linux, dai un'occhiata ai nostri post Registrazione dello schermo in Linux con SimpleScreenRecorder o Bits, Byte y Binario o Da 0 a F: Esadecimale!

Godere!

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.