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.
Вгору
|