Хостинг В Украине бесплатно
Початок розділу
Найкращий, з відомих мені, українських сайтів де можна придбати диск з будь-яким Linux
Найкращий, з відомих мені, українських сайтів де можна придбати диск з будь-яким Linux
linux.org.ua -- Linux/UNIX news
Український Linux на базі Slackware
Кращий браузер — Mozilla Firefox
Extensions.org.ua - українізовані розширення Frenzy - LiveCD на основе FreeBSD
Comp(OS)It
Пиши українською Linux.SU - Линукс в пять минут!
Сайт live дистрибутиву SLAX.
7-Zip
META-Ukraine
Портал Укрнет

Linux Ramdisk mini-HOWTO
by Van Emery

Вступ

     Що таке RAM диск? RAM це частина RAM (ОЗП), яка використовується ніби це дисковий пристрій. RAM має фіксований розмір і поводиться як звичайний дисковий розділ. Час доступу до RAM диску набагато швидше ніж до реального, фізичного диску. Звичайно, будь-які данні збережені на RAM диску втрачаються, коли система перезавантажується чи вимикається. RAM диск може бути чудовим місцем для збереження тимчасових даних.

     Ядро Linux версії 2.4 має вбудовану підтримку RAM дисків. RAM диски корисні для декількох речей, включаючи:

  • Робота з не зашифрованими даними з зашифрованих документів;
  • Збереження деяких типів вмісту мережі;
  • Монтування Loopback файлових систем (таких як run-from-floppy/CD distributions).

     Чому я написав цей документ? Тому що мені знадобилося встановити 16 MB RAM диск для перегляду і створення зашифрованих документів. Я не бажав, щоб незашифровані документи були записані на будь-який фізичний носій на моїй робочій станції. Я також знайшов дивовижним, що я можу легко створити «віртуальний диск» в ОЗП, який більше ніж мій перший жорсткий диск, 20 MB Winchester диск. На той час цей диск був настільки великим, що я ніколи навіть не припускав, що заповню його і ніколи не робив цього!

     Цей документ повинен крок за кроком провести вас крізь процес створення і використання RAM диску.

Вгору

Припущення/Встановлення

     Я використовував Red Hat 9 для цього тесту, але ви можете працювати з іншими дистрибутивами GNU/Linux, які використовують ядра 2.4.x. Я також припускаю, що дистрибутив, який ви використовуєте вже має вкомпільовану в ядро підтримку RAM дисків. Моя тестова машина була Pentium 4 з 256 MB ОЗП. Точна версія ядра, яку я використовував була: 2.4.20-20.9.

Вгору

Крок 1: Подивіться, що вже було створено вашою системою

     Red Hat створює 16 RAM дисків за умовчанням, хоч вони не «активні» чи не використовують ОЗП. Вони показуються пристроями ram0 - ram 19, але лише ram0 – ram15 використовуються за умовчанням. Щоб перевірити ці блочні пристрої використовуйте наступну команду:

[root]# ls -l /dev/ram*
lrwxrwxrwx 1 root root 4 Jun 12 00:31 /dev/ram -> ram1
brw-rw---- 1 root disk 1, 0 Jan 30 2003 /dev/ram0
brw-rw---- 1 root disk 1, 1 Jan 30 2003 /dev/ram1
brw-rw---- 1 root disk 1, 10 Jan 30 2003 /dev/ram10
brw-rw---- 1 root disk 1, 11 Jan 30 2003 /dev/ram11
brw-rw---- 1 root disk 1, 12 Jan 30 2003 /dev/ram12
brw-rw---- 1 root disk 1, 13 Jan 30 2003 /dev/ram13
brw-rw---- 1 root disk 1, 14 Jan 30 2003 /dev/ram14
brw-rw---- 1 root disk 1, 15 Jan 30 2003 /dev/ram15
brw-rw---- 1 root disk 1, 16 Jan 30 2003 /dev/ram16
brw-rw---- 1 root disk 1, 17 Jan 30 2003 /dev/ram17
brw-rw---- 1 root disk 1, 18 Jan 30 2003 /dev/ram18
brw-rw---- 1 root disk 1, 19 Jan 30 2003 /dev/ram19
brw-rw---- 1 root disk 1, 2 Jan 30 2003 /dev/ram2
brw-rw---- 1 root disk 1, 3 Jan 30 2003 /dev/ram3
brw-rw---- 1 root disk 1, 4 Jan 30 2003 /dev/ram4
brw-rw---- 1 root disk 1, 5 Jan 30 2003 /dev/ram5
brw-rw---- 1 root disk 1, 6 Jan 30 2003 /dev/ram6
brw-rw---- 1 root disk 1, 7 Jan 30 2003 /dev/ram7
brw-rw---- 1 root disk 1, 8 Jan 30 2003 /dev/ram8
brw-rw---- 1 root disk 1, 9 Jan 30 2003 /dev/ram9
lrwxrwxrwx 1 root root 4 Jun 12 00:31 /dev/ramdisk -> ram0

     Тепер використовуючи grep через вивід dmesg дізнаймося розмір RAM дисків:

[root]# dmesg | grep RAMDISK
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
RAMDISK: Compressed image found at block 0

     Як ви можете бачити, за умовчанням розмір RAM диску 4 MB. Я бажаю RAM диск в 16 MB, отже наступний крок буде налаштовування Linux для використання більшого розміру RAM диску під час завантаження.

Вгору

Крок 2: Збільшення розміру RAM диску

     Розмір RAM диску контролюється опцією командного рядку, яка передається ядру під час завантаження. Оскільки для Red Hat 9 GRUB це стартовий завантажувач за умовчанням я модифікував /etc/grub.conf з новою опцією ядра. Опція ядра для розміру RAM диску це: ramdisk_size=xxxxx, де xxxxx це розмір вказаний у 1024-байтових блоках. Ось що я додав у /etc/grub.conf, щоб налаштувати 16 MB RAM диск:

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/hda5
# initrd /initrd-version.img
#boot=/dev/hda
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.4.20-20.9)
root (hd0,0)
kernel /vmlinuz-2.4.20-20.9 ro root=LABEL=/ hdc=ide-scsi ramdisk_size=16000
initrd /initrd-2.4.20-20.9.img

     Лишень ви зберегли файл, вам необхідно перезавантажити систему. Після перезавантаження, подивіться вивід dmesg він повинен підтвердити, що зміни були задіяні:

[root]# dmesg | grep RAMDISK
RAMDISK driver initialized: 16 RAM disks of 16000K size 1024 blocksize
RAMDISK: Compressed image found at block 0
Вгору

Крок 3: Форматування RAM диску

     Нема необхідності форматувати RAM диск як файлову систему, що журналюється, так що ми будемо просто використовувати всюдисущу файлову систему ext2. Я бажаю використовувати лише один RAM диск, так що я буду форматувати лише /dev/ram0:

[root]# mke2fs -m 0 /dev/ram0
mke2fs 1.32 (09-Nov-2002)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
4000 inodes, 16000 blocks
0 blocks (0.00%) reserved for the super user
First data block=1
2 block groups
8192 blocks per group, 8192 fragments per group
2000 inodes per group
Superblock backups stored on blocks:
8193

Writing inode tables: done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 22 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

     Опція -m 0 перешкоджає mke2fs резервувати простір файлової системи для користувача root, що є поведінкою за умовчанням. Я бажаю щоб весь простір RAM диску був доступний звичайному користувачу для роботи з зашифрованими файлами.

Вгору

Крок 4: Створення точки монтування і монтування RAM диску

     Тепер в вас є форматований RAM диск, ви повинні створити для нього точку монтування. Тоді ви зможете змонтувати і використовувати RAM диск. Ми можемо використовувати директорію /mnt/rd для цієї операції.

[root]# mkdir /mnt/rd
[root]# mount /dev/ram0 /mnt/rd

     Тепер перевіримо, зо новий RAM диск змонтовано:

[root]# mount | grep ram0
/dev/ram0 on /mnt/rd type ext2 (rw)
[root]# df -h | grep ram0
/dev/ram0 16M 13K 16M 1% /mnt/rd

     Ви навіть можете детально подивиться на новий RAM диск командою tune2fs:

[root]# tune2fs -l /dev/ram0
tune2fs 1.32 (09-Nov-2002)
Filesystem volume name: none
Last mounted on: not available
Filesystem UUID: fbb80e9a-8e7c-4bd4-b3d9-37c29813a5f5
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: filetype sparse_super
Default mount options: (none)
Filesystem state: not clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 4000
Block count: 16000
Reserved block count: 0
Free blocks: 15478
Free inodes: 3989
First block: 1
Block size: 1024
Fragment size: 1024
Blocks per group: 8192
Fragments per group: 8192
Inodes per group: 2000
Inode blocks per group: 250
Filesystem created: Mon Dec 8 14:33:57 2003
Last mount time: Mon Dec 8 14:35:39 2003
Last write time: Mon Dec 8 14:35:39 2003
Mount count: 1
Maximum mount count: 22
Last checked: Mon Dec 8 14:33:57 2003
Check interval: 15552000 (6 months)
Next check after: Sat Jun 5 14:33:57 2004
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 128

     В моєму випадку мені необхідно, щоб користувачу «van» були доступні читання і запис на RAM диск, отже я повинен змінити володаря і дозволи директорії /mnt/rd:

[root]# chown van:root /mnt/rd
[root]# chmod 0770 /mnt/rd
[root]# ls -ald /mnt/rd
drwxrwx--- 2 van root 4096 Dec 8 11:09 /mnt/rd

     Володар і дозволи на RAM диск файлову систему / директорію повинні бути пристосовані до ваших специфічних потреб.

Вгору

Крок 5: Використання RAM диску

     Тепер, коли він створений, ви можете копіювати, переміщувати, видаляти, редагувати і переглядати файли на RAM диску так ніби вони на розділі фізичного диску. Це чудове місце для перегляду розшифрованих GPG чи OpenSSL файлів, також як гарне місце для створення файлів, які будуть зашифровані. Після того як ваш комп'ютер вимкнено, усі сліди створених на RAM диску файлів зникають.

     Щоб відмонтувати RAM диск, просто введіть наступне:

[root]# umount -v /mnt/rd
/dev/ram0 umounted

     Зауваження: Якщо ви перемонтуєте RAM диск, ваші дані все ще будуть там. Лишень пам'ять було виділено RAM диску, вона помічається так, щоб ядро не намагалося використовувати цю пам'ять багаторазово пізніше. Тому, ви не можете «вимагати назад» ОЗП після того як ви завершили використовувати RAM диск. З цієї причини ви забажаєте бути уважніше, щоб не виділити більше пам'яті RAM диску ніж це дійсно необхідно. У моєму випадку я виділяв < 10% фізичного простору ОЗП. Ви можете пристосувати розмір RAM диску до ваших потреб. Звичайно, ви завжди можете звільнити простір перезавантаженям!

Вгору

Автоматичне створення RAM диску

     Якщо вам необхідно створювати RAM диск кожного разу, коли ваша система завантажується, ви можете автоматизувати процес доданням деяких команд у ваш /etc/rc.local сценарій ініціалізації. Ось лінії, які я додав:

# Formats, mounts, and sets permissions on my 16MB ramdisk
/sbin/mke2fs -q -m 0 /dev/ram0
/bin/mount /dev/ram0 /mnt/rd
/bin/chown van:root /mnt/rd
/bin/chmod 0750 /mnt/rd
Вгору

Закінчення

     Ви тепер побачили як встановити і використовувати RAM диск в вашій GNU/Linux системі. Хотілося б сподіватися, що ви знайдете цю інформацію цікавою і корисною!

Вгору

Ресурси


Переклад Lucifer (Рукавишников Віталій С.) 02.07.2005.
Вгору
Початок розділу

Linux coutner Український рейтинг TOP.TOPUA.NET