Questo è un guest post scritto da SathiyaMoorthy.
Utilizzando ramfs o tmpfs è possibile allocare parte della memoria fisica da utilizzare come partizione. Puoi montare questa partizione e iniziare a scrivere e leggere file come una partizione del disco rigido. Dal momento che leggerai e scriverai sulla RAM, sarà più veloce.
Quando un processo vitale diventa drasticamente lento a causa delle scritture del disco, puoi scegliere tra i file system ramfs o tmpfs per scrivere i file nella RAM.
Sia tmpfs che ramfs mount ti daranno il potere di leggere e scrivere velocemente file da e verso la memoria primaria. Quando lo provi su un piccolo file, potresti non vedere un'enorme differenza. Noterai la differenza solo quando scrivi una grande quantità di dati su un file con qualche altro sovraccarico di elaborazione come la rete.
1. Come montare Tmpfs
# mkdir -p /mnt/tmp # mount -t tmpfs -o size=20m tmpfs /mnt/tmp
L'ultima riga nel seguente df -k mostra il file system /mnt/tmp tmpfs montato sopra.
# df -k Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 32705400 5002488 26041576 17% / /dev/sda1 194442 18567 165836 11% /boot tmpfs 517320 0 517320 0% /dev/shm tmpfs 20480 0 20480 0% /mnt/tmp
2. Come montare Ramfs
# mkdir -p /mnt/ram # mount -t ramfs -o size=20m ramfs /mnt/ram
L'ultima riga nel seguente comando mount mostra il file system /mnt/ram ramfs montato sopra.
# mount /dev/sda2 on / type ext3 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) /dev/sda1 on /boot type ext3 (rw) tmpfs on /dev/shm type tmpfs (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) fusectl on /sys/fs/fuse/connections type fusectl (rw) tmpfs on /mnt/tmp type tmpfs (rw,size=20m) ramfs on /mnt/ram type ramfs (rw,size=20m)
Puoi montare ramfs e tmpfs durante l'avvio aggiungendo una voce a /etc/fstab.
3. Ramfs vs Tmpfs
Principalmente sia ramfs che tmpfs fanno la stessa cosa con poche piccole differenze.
- Ramfs crescerà in modo dinamico . Quindi, è necessario controllare il processo che scrive i dati per assicurarsi che ramfs non superi la dimensione della RAM disponibile nel sistema. Diciamo che hai 2 GB di RAM sul tuo sistema e hai creato un ramfs da 1 GB e montato come /tmp/ram. Quando la dimensione totale di /tmp/ram supera 1 GB, puoi ancora scriverci dati. Il sistema non ti impedirà di scrivere dati superiori a 1 GB. Tuttavia, quando supera la dimensione totale della RAM di 2 GB, il sistema potrebbe bloccarsi, poiché non c'è spazio nella RAM per conservare i dati.
- Tmpfs non crescerà dinamicamente . Non ti permetterebbe di scrivere più della dimensione che hai specificato durante il montaggio del tmpfs. Quindi, non devi preoccuparti di controllare il processo che scrive i dati per assicurarti che tmpfs non superi il limite specificato. Potrebbe fornire errori simili a "Nessuno spazio disponibile sul dispositivo".
- Tmpfs utilizza lo scambio .
- Ramfs non usa lo scambio.
4. Svantaggi di Ramfs e Tmpfs
Poiché sia ramfs che tmpfs stanno scrivendo nella RAM di sistema, verrebbe cancellato una volta riavviato il sistema o arrestato in modo anomalo. Quindi, dovresti scrivere un processo per raccogliere i dati da ramfs/tmpfs su disco a intervalli periodici. Puoi anche scrivere un processo per annotare i dati da ramfs/tmpfs su disco mentre il sistema si sta spegnendo. Ma questo non ti aiuterà nel momento del crash del sistema.
Sperimentazione | Tmpfs | Ramf |
---|---|---|
Riempi lo spazio massimo e continua a scrivere | Viene visualizzato l'errore | Continuerò a scrivere |
Misura fissa | Sì | No |
Utilizza lo scambio | Sì | No |
Stoccaggio volatile | Sì | Sì |
Se vuoi che il tuo processo scriva più velocemente, optare per tmpfs è una scelta migliore con le precauzioni sul crash del sistema.
Questo articolo è stato scritto da SathiyaMoorthy. Lavora presso bksystems, è interessato a scrivere articoli e contribuisce all'open source nel suo tempo libero. The Geek Stuff accoglie con favore i tuoi suggerimenti e gli articoli degli ospiti.