Крім того , tmpfs
і ramfs
ще один варіант є /dev/ram0
блоковим пристроєм. В останніх версіях Ubuntu цей пристрій за замовчуванням не існує, але його можна створити через modprobe brd
.
Цей підхід є більш передбачуваним, оскільки він створює реальну ext4
файлову систему і ніколи не перевищує визначений вами ліміт. Але для налаштування потрібно більше кроків, а оперативна пам’ять використовується менш ефективно.
Використання модуля ядра brd (/ dev / ram0)
Щоб створити та ініціалізувати диск 4 Гб оперативної пам’яті:
mkdir /ramdisk
modprobe brd rd_nr=1 rd_size=$((4 * 1048576))
mkfs.ext4 /dev/ram0
mount /dev/ram0 /ramdisk
rd_nr
Параметр визначає , скільки дисків RAM для створення (за замовчуванням він створює 16, тобто /dev/ram0
через /dev/ram15
). rd_size
Параметр розмір в кілобайтах . $(( ... ))
Синтаксис дозволяє виконувати арифметичні дії в оболонці.
Щоб розмістити диск RAM, відключіть його та видаліть brd
модуль ядра:
umount /ramdisk
modprobe -r brd
Створення блокового пристрою всередині ramfs
Крім того, ви можете створити блоковий пристрій всередині 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
truncate
Команда створює порожній файл заданого розміру таким чином, що вона инициализируется (тобто споживає пам'ять) на вимогу.
Щоб розмістити диск оперативної пам'яті, змініть його та видаліть образ диска:
umount /ramdisk
rm /ramdisk-storage/ramdisk.img
Порівняння з tmpfs
іramfs
Хоча tmpfs
і ramfs
ефективніше, ніж використання блочного пристрою, нижче наведено деякі їх мінуси.
tmpfs
може перейти на диск. Це більш ефективно, але, можливо, вам потрібен чистий диск RAM:
- Файли, з якими ви працюєте, є чутливими (наприклад, файли із зашифрованого розділу).
- Ви робите тестування продуктивності, і не хочете, щоб введення / виведення диска було фактором (час запису SSD може сильно відрізнятися).
- Ви розпаковуєте великий файл і не хочете зношувати свій SSD.
ramfs
налаштовується легко, повертає простір після видалення файлів і використовує оперативну пам’ять ефективніше (система не буферує файли, оскільки знає, що вони є в оперативній пам'яті). Але це має свої мінуси та сюрпризи:
df
Утиліта не повідомляє використання простору:
root@cello-linux:~# df -h /ramdisk
Filesystem Size Used Avail Use% Mounted on
ramfs 0 0 0 - /ramdisk
Немає параметра обмеження розміру. Якщо ви занадто багато помістите в рамбіск, ваша система зависне.
Рідкі файли можуть стати нерозбірливими, коли ви цього найменше очікуєте. Сьогодні вранці я скопіював зображення VM (150G, але 49G використовується на диску) у ramfs
(у мене 128G оперативної пам’яті). Це спрацювало. Але коли я скопіював зramfs
до місця призначення, моя система стала нечутливою. cp
Утиліта , по- видимому заповнені отвори на читання , але не писати.
І те, tmpfs
і ramfs
інше може поводитися інакше, ніж реальна ext4
файлова система. Створення блокового пристрою в оперативній пам’яті та ініціалізація цього за допомогою ext4
уникає цього.
Для більш поглибленого порівняння: https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt
mount -o size=16G -t tmpfs none /mnt/tmpfs