Inoltre tmpfse ramfs, un'altra opzione è il /dev/ram0dispositivo 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 ext4filesystem 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_nrparametro consente di specificare il numero di dischi RAM da creare (per impostazione predefinita, crea 16, ovvero /dev/ram0attraverso /dev/ram15). Il rd_sizeparametro è la dimensione in kilobyte . La $(( ... ))sintassi consente di eseguire l'aritmetica nella shell.
Per deallocare il disco RAM, smontalo e rimuovi il brdmodulo 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 truncatecomando 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 tmpfseramfs
Sebbene tmpfse ramfssiano più efficienti dell'uso di un dispositivo a blocchi, di seguito sono riportati alcuni dei lati negativi.
tmpfspuò 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' dfutilità 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.ramfscp
Entrambi tmpfse ramfspossono comportarsi diversamente da un vero ext4filesystem. La creazione di un dispositivo a blocchi nella RAM e l'inizializzazione con ext4questo 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