Selain tmpfs
dan ramfs
, opsi lain adalah /dev/ram0
perangkat blokir. Pada versi Ubuntu terbaru, perangkat ini tidak ada secara default, tetapi dapat dibuat via modprobe brd
.
Pendekatan ini lebih dapat diprediksi karena ia menciptakan ext4
sistem file nyata dan tidak pernah melebihi batas yang Anda tentukan. Tetapi butuh lebih banyak langkah untuk mengatur, dan menggunakan RAM kurang efisien.
Menggunakan modul brd kernel (/ dev / ram0)
Untuk membuat dan menginisialisasi disk RAM 4GB:
mkdir /ramdisk
modprobe brd rd_nr=1 rd_size=$((4 * 1048576))
mkfs.ext4 /dev/ram0
mount /dev/ram0 /ramdisk
The rd_nr
parameter menentukan berapa banyak disk RAM untuk membuat (secara default, itu menciptakan 16, yaitu /dev/ram0
melalui /dev/ram15
). The rd_size
parameter ukuran dalam kilobyte . The $(( ... ))
sintaks memungkinkan Anda melakukan aritmatika di shell.
Untuk membatalkan alokasi disk RAM, unmount dan lepaskan brd
modul kernel:
umount /ramdisk
modprobe -r brd
Membuat perangkat blok di dalamnya ramfs
Atau, Anda dapat membuat perangkat blok di dalam 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
The truncate
Perintah menciptakan sebuah file kosong dari ukuran tertentu sedemikian rupa sehingga diinisialisasi (yaitu mengkonsumsi memori) on-demand.
Untuk membatalkan alokasi disk RAM, umount dan hapus gambar disk:
umount /ramdisk
rm /ramdisk-storage/ramdisk.img
Perbandingan dengan tmpfs
danramfs
Meskipun tmpfs
dan ramfs
lebih efisien daripada menggunakan perangkat blok, di bawah ini adalah beberapa kelemahannya.
tmpfs
dapat bertukar ke disk. Ini lebih efisien, tetapi mungkin ada saatnya Anda menginginkan disk RAM murni:
- File yang Anda kerjakan sensitif (misalnya file dari partisi yang dienkripsi).
- Anda melakukan pengujian kinerja dan Anda tidak ingin disk I / O menjadi faktor (waktu penulisan SSD dapat sangat bervariasi).
- Anda membongkar file besar dan Anda tidak ingin aus SSD Anda.
ramfs
mudah untuk diatur, mengambil kembali ruang setelah Anda menghapus file, dan menggunakan RAM lebih efisien (sistem tidak buffer file karena tahu mereka ada dalam RAM). Tetapi memiliki kelemahan dan kejutannya sendiri:
The df
utilitas tidak melaporkan penggunaan ruang:
root@cello-linux:~# df -h /ramdisk
Filesystem Size Used Avail Use% Mounted on
ramfs 0 0 0 - /ramdisk
Tidak ada parameter batas ukuran. Jika Anda menaruh terlalu banyak di ramdisk, sistem Anda akan hang.
File yang jarang dapat menjadi tidak jelas ketika Anda tidak mengharapkannya. Pagi ini, saya menyalin gambar VM (150G, tetapi 49G digunakan pada disk) ke ramfs
(saya punya 128G RAM). Itu berhasil. Tapi ketika saya disalin dari yang ramfs
ke tujuan, sistem saya menjadi tidak responsif. The cp
utilitas rupanya mengisi lubang di membaca , tetapi tidak pada menulis.
Keduanya tmpfs
dan ramfs
mungkin berperilaku berbeda dari ext4
sistem file nyata . Membuat perangkat blok dalam RAM dan menginisialisasi dengan ext4
menghindari ini.
Untuk perbandingan yang lebih mendalam: https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt
mount -o size=16G -t tmpfs none /mnt/tmpfs