Як я можу змінити кількість та розмір рамбових дисків Linux (/ dev / ram0 - / dev / ram15)?


27

Використовуючи Linux, коли я завантажуюся, у мене автоматично є 16 16 Мб рамка, але я хотів би створити один дійсно великий рамбіск для тестування деякого програмного забезпечення.

Я виявив, що я можу відрегулювати розмір рамкових дисків, які вже є в системі за допомогою параметра завантаження ядра, ramdisk_sizeоднак це робить усі 16 ramdisks (/ dev / ram0 - / dev / ram15) вказаним розміром. Тож якщо я хочу створити рамковий диск на 1 ГБ, мені знадобиться 16 Гб пам'яті.

В основному, я хочу створити один 10 Гб ramdisk, який був би / dev / ram0. Як би я пішов робити це? Я припускаю, що є параметр завантаження ядра, але я його просто не знайшов.

Відповіді:


18

Час компіляції ядра

У вашому .configфайлі можна встановити два варіанти конфігурації ядра :

CONFIG_BLK_DEV_RAM_COUNT=1
CONFIG_BLK_DEV_RAM_SIZE=10485760

Це налаштувало моє ядро ​​для створення одного ramdisk, який становить 10G під час завантаження.

Примітки:

  • CONFIG_BLK_DEV_RAM_SIZE знаходиться в КБ.
  • Не вказуйте більше пам'яті, ніж у вас є оперативна пам'ять у вашому комп’ютері.
  • У menuconfigпогляді під Device Drivers-> Блокові пристрої.

Час завантаження

Ви можете вказати розмір створених дисків оперативної пам'яті за допомогою параметра завантаження ядра ramdisk_size. Наприклад:

kernel /vmlinuz-2.6.32.24 ro root=LABEL=/ rhgb quiet ramdisk_size=10485760

Тепер я можу завантажувати свою машину і робити на ній файлову систему, монтувати її та використовувати саме так, як блок-пристрій.

# mkfs.xfs /dev/ram0
# mount /dev/ram0 /mnt/ramdisk

Джерела:

  1. http://www.vanemery.com/Linux/Ramdisk/ramdisk.html [мертвий]
  2. https://www.kernel.org/doc/Documentation/blockdev/ramdisk.txt

16

Для цього слід використовувати tmpfs .

mount -t tmpfs -o size=10g none /mnt/point

Чи можу я створити файлову систему на tmpfs? Мені потрібно блоковий пристрій, який знаходиться в пам'яті, на якій я можу зробити файлову систему. Чи можу я це зробити на tmpfs?
Кевін С.

tmpfs - файлова система. Це просто трапляється в пам'яті.
Ігнасіо Васкес-Абрамс

3
Я ціную відповідь, і зазвичай tmpfs би зробив свою справу, але мені потрібно створити файлову систему xfs з тієї частини пам'яті, до якої я пишу.
Кевін С.

Проблема з tmpfs полягає в тому, що він підтримується свопом. Якщо ви почнете використовувати своп, то ви втрачаєте переваги перебування в чистій оперативній пам’яті. Крім того, деякі люди вважають за краще мати область, яка не підтримується для програм криптовалют.
друдру

Відповіді та деталі відповіді тут: unix.stackexchange.com/questions/66329/…
jocull

7

Зробити великий дисковий диск після завантаження, не возившись з параметрами ядра. Використовуйте tmpfs, створюйте файл, монтуйте його через цикл та монтуйте його через файлову систему:

mount -t tmpfs -o size=200M tmpfs temp/
cd temp/
dd if=/dev/zero of=disk.img bs=1M count=199
losetup /dev/loop0 disk.img
mkfs.ext4 /dev/loop0
cd ..
mount /dev/loop0 temp2/

Можливо, трохи покарання за продуктивність, яке проходить через кілька різних шарів ... але принаймні це працює.


6

Іншим варіантом є використання циклічних пристроїв (на відміну від функції loobpack, як було зазначено раніше):

dd if=dev/zero of=myfs.img bs=1M count=1024
losetup /dev/loop0 myfs.img
mkfs.xfs /dev/loop0

Тепер / dev / loop - це законний блоковий пристрій, на який ваша програма діятиме як фізичний пристрій або ramdisk, за винятком того, що це резервне копіювання файлів. Ви можете монтувати десь або застосувати додаток на вузол пристрою, який реалізує стандартний блок-йоктли. Економить ваш системний таран і корисно тримати біля тестів і т.д.

(Ви навіть можете fdisk myfs.img, створювати на ньому розділи та використовувати --offset та --sizelimit з lotup, щоб вказувати кожен / dev / loopX на конкретні розділи в зображенні, тому loop0, loop1 стають так само, як sdc1, sdc2 тощо) )


+1, оскільки для цього не потрібно перекомпілювати ядро
m-ric

3

Ви можете замість цього використати файл циклу. Просто створіть файл циклу потрібного вам розміру (якщо ви хочете помістити його в tmpfs ramdisk, добре), а потім відформатуйте файл циклу та змонтуйте його.

dd if=/dev/zero of=myfile bs=1G count=10
mkfs.xfs -d file myfile
mount -t xfs -o loop myfile mymntpoint

Я насправді спробував це, перш ніж розмістити своє запитання. Це чудове рішення, але програмне забезпечення, яке я тестую, діє по-різному, коли він має справу з файлом, а не блоковим пристроєм, тому я розглядав параметр ramdisk. Спасибі.
Кевін С.

2
Цифрові пристрої - це блокові пристрої, тож я не впевнений, як це можливо?
pjc50

2

Об'єкт наземного приводу - швидкість. Tmpfs - це не привід. Циклічні пристрої не є накопичувачами, але ви можете розмістити зображення приводу на циклічному пристрої. Рамкові диски "є" накопичувачами та дуже швидкими дисками. Спробуйте запустити:

hdparm -t /dev/sda 

і потім:

hdparm -t /dev/ram0

Ви побачите, що я маю на увазі! Але hdparm іноді руйнує таранний привід. Отже, вам доведеться це зробити ще раз.

Іноді немає пристроїв / dev / ram. Щоб зробити одне:

mknod -m 0777 /dev/ram0 b 1 0 

але він не матиме жодного розміру. Щоб надати його розмір:

dd if=/dev/zero of=/dev/ram0

і він зупиниться, коли накопичувач заповнений. Максимальний розмір визначається ядром конфігурації PARM: CONFIG_BLK_DEV_RAM_SIZE.

Тоді просто відформатуйте його, тобто

mke2fs /dev/ram0

І змонтуйте його:

mount /dev/ram0 /mnt/ramdrive

Моїм улюбленим є налагодження коду, що зберігається на ramdrive. Компіляції мають принаймні 10-кратну швидкість коду, що зберігається на жорсткому диску. Таблиці баз даних, що зберігаються на ramdrive, також летять, але у вас повинен бути сценарій, який періодично записує на жорсткий диск. Більшість адміністраторів не мають кишок розміщувати дані на оперативні диски. А деякі таблиці занадто великі.


1

На маяку 64 (puupy linux на базі slackware) я зробив це;

mke2fs /dev/ram1 4096000 # nearly 4G ramdisk, choose the size of ramdisk less than actual ram!
mount /dev/ram1 /mnt/dvd # dvd on my laptop is unused choose your device from /mnt/

Там у вас встановлений ramdisk в якості каталогу, /mnt/dvdкуди ви можете скопіювати збереження зберегти, зробіть все так, як у директорії hd, крім оперативної пам'яті. не забудьте зберегти свої файли в hd до відключення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.