Inoltre tmpfs
e ramfs
, un'altra opzione è il /dev/ram0
dispositivo a blocchi. Nelle recenti versioni di Ubuntu, questo dispositivo non esiste per impostazione predefinita, ma può essere creato tramite modprobe brd
.
Questo approccio è più prevedibile poiché crea un vero ext4
filesystem e non supera mai il limite specificato. Ma ci vogliono più passaggi per configurare e usa la RAM in modo meno efficiente.
Uso del modulo del kernel brd (/ dev / ram0)
Per creare e inizializzare un disco RAM da 4 GB:
mkdir /ramdisk
modprobe brd rd_nr=1 rd_size=$((4 * 1048576))
mkfs.ext4 /dev/ram0
mount /dev/ram0 /ramdisk
Il rd_nr
parametro consente di specificare il numero di dischi RAM da creare (per impostazione predefinita, crea 16, ovvero /dev/ram0
attraverso /dev/ram15
). Il rd_size
parametro è la dimensione in kilobyte . La $(( ... ))
sintassi consente di eseguire l'aritmetica nella shell.
Per deallocare il disco RAM, smontalo e rimuovi il brd
modulo del kernel:
umount /ramdisk
modprobe -r brd
Creazione di un dispositivo a blocchi all'interno ramfs
In alternativa, puoi creare un dispositivo a blocchi all'interno di ramfs
:
mkdir /ramdisk-storage /ramdisk
mount -t ramfs ramfs /ramdisk-storage
truncate -s 4G /ramdisk-storage/ramdisk.img
mkfs.ext4 /ramdisk-storage/ramdisk.img
mount /ramdisk-storage/ramdisk.img /ramdisk
Il truncate
comando crea un file vuoto di una determinata dimensione in modo che sia inizializzato (cioè consuma memoria) su richiesta.
Per deallocare il disco RAM, smontarlo ed eliminare l'immagine del disco:
umount /ramdisk
rm /ramdisk-storage/ramdisk.img
Confronto con tmpfs
eramfs
Sebbene tmpfs
e ramfs
siano più efficienti dell'uso di un dispositivo a blocchi, di seguito sono riportati alcuni dei lati negativi.
tmpfs
può passare al disco. Questo è più efficiente, ma a volte potresti volere un disco RAM puro:
- I file con cui stai lavorando sono sensibili (ad es. File da una partizione crittografata).
- Stai eseguendo test delle prestazioni e non vuoi che l'I / O del disco sia un fattore (i tempi di scrittura SSD possono variare molto).
- Stai scompattando un file di grandi dimensioni e non vuoi consumare il tuo SSD.
ramfs
è facile da configurare, recupera spazio una volta eliminati i file e utilizza la RAM in modo più efficiente (il sistema non memorizza i file perché sa che sono nella RAM). Ma ha i suoi lati negativi e sorprese:
L' df
utilità non segnala l'utilizzo dello spazio:
root@cello-linux:~# df -h /ramdisk
Filesystem Size Used Avail Use% Mounted on
ramfs 0 0 0 - /ramdisk
Non esiste un parametro limite di dimensioni. Se si inserisce troppo nel ramdisk, il sistema si bloccherà.
I file sparsi possono diventare sparsi quando meno te lo aspetti. Questa mattina ho copiato un'immagine VM (150G, ma 49G utilizzata su disco) su ramfs
(ho 128G di RAM). Ha funzionato Ma quando ho copiato dalla per la destinazione, il mio sistema è diventato insensibile. L' utilità apparentemente ha riempito i buchi in lettura , ma non in scrittura.ramfs
cp
Entrambi tmpfs
e ramfs
possono comportarsi diversamente da un vero ext4
filesystem. La creazione di un dispositivo a blocchi nella RAM e l'inizializzazione con ext4
questo evita questo.
Per un confronto più approfondito: https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt
mount -o size=16G -t tmpfs none /mnt/tmpfs