Эта заметка доступна на: English Castellano Deutsch Francais Portugues Russian Turkce |
автор Mark Nielsen Об авторе: Марк работает независимым консультантом посвящая своё время таким вещам как GNUJobs.com, написанию статей, созданию свободных программ и работе добровольцем в eastmont.net. Содержание: |
Резюме:
RamFs это очень простая файловая система с интересными возможностями. Она появилась в ядре версии 2.4.
Что такое RamDisk? RamDisk это часть памяти которую вы используете в качестве раздела. Другими словами вы берете немного памяти и притворяетесь что это диск который вы можете форматировать, монтировать, сохранять на нём файлы и т.д.
Мы будем говорить о двух типах ramdisk. Первый это ramdisk который вы можете форматировать и монтировать . Второй вы не можете форматировать, но у него есть некоторые интересные особенности. Сравним их:
Старый /dev/ram1 подход:
Для использования с ядром 2.0 и 2.2 , просто наберите три команды:
mkfs -t ext2 /dev/ram1 mkdir -p /RAM1 mount /dev/ram1 /RAM1как root, и всё. Для большинства систем размер ограничен 4-мя мегабайтами. Его можно изменить во время загрузки или перекомпилировав ядро, но для этого прочитайте мою старую статью. Вы также можете добавить следующее,
mkfs -t ext2 /dev/ram2 mkdir -p /RAM2 mount /dev/ram2 /RAM2
Очень просто. Создайте директорию и смонтируйте в неё ramfs.
mkdir -p /RAM1 mount -t ramfs none /RAM1Если вы хотите второй, это очень просто. Создайте директорию и смонтируйте в неё ramfs.
mkdir -p /RAM2 mount -t ramfs none /RAM2
Это пример, как сделать ramdisk размером 10 мегабайт.
mkdir -p /RAM1 mount -t ramfs none /RAM1 -o maxsize=10000Взято прямо с http://www.linuxhq.com/kernel/v2.4/patch/patch-2.4.3-ac2/linux.ac_Documentation_filesystems_ramfs.txt.html
+ ramfs - Файловая система базирующаяся в памяти + и автоматически изменяющая размер. + + + Ramfs это файловая система которая хранит все свои файлы в памяти, + доступна для чтения и записи. В отличии от RAM дисков, которые + занимают фиксированный объём памяти, ramfs увеличивается и + уменьшается вместе с файлами, содержащимися в ней. + + Вы можете смонтировать ramfs так: + mount -t ramfs none /mnt/гдето + + Теперь просто создавайте и используйте файлы. После размонтирования + файловой системы всё её содержимое будет потеряно. + + ЗАМЕЧАНИЕ! Эта файловая система предназначена скорее не для + использования, а как пример того, как виртуальная файловая + система может быть написана. + +Ограничение ресурсов: + +По умолчанию одна ramfs использует максимум половину физической +памяти для хранения файлов, чуть больше, чем объём файлов, +содержащихся в ней. Можно ограничить использование ресурсов +с помощью параметров монтирования: + + maxsize=NNN + Устанавливает максимальный объём ramfs NNN килобайт. +По умолчанию это половина физической памяти. Примечание: в отличие +от многих других ограничений установка этого в 0 не означает +отсутствия лимита а действительно устанавливает лимит в 0 страниц. +Это может быть использовано для различных трюков. + + maxfilesize=NNN + Устанавливает максимальный размер любого файла в +этой файловой системе в NNN килобайт. Это число округляется вниз +до ближайшего кратного размеру страницы. Если NNN равно 0 то +лимит отсутствует. По умолчанию лимит отсутствует. + + maxdentries=NNN + Устанавливает максимальное количество элементов в +директории (твёрдых линков) в этой файловой системе равным NNN. +Если NNN равно 0, то лимита нет. По умолчанию он установлен как +maxsize/4. + + maxinodes=NNN + Устанавливает максимальное количество и-нодов +(явных файлов) на файловой системе в NNN. Если NNN равно 0, +то лимит отсутствует. По умолчанию этого лимита нет, но это +число всё равно не может быть больше чем dentries.
Память дешева сейчас. Недавно я купил 128 мегабайт памяти за 120 долларов, и я думаю что цены на память будут продолжать падать. Я могу легко поместить любой из моих веб серверов в 128 мегабайт памяти. Если сервер содержит большие файлы, то я могу сконфигурировать httpd.conf так, чтобы он брал их из другого каталога, не из RAM диска. Мой DNS сервер очень маленький. Моя самая большая база данных занимает всего 28 мегабайт. Учитывая тот факт, что вы можете приобрести сегодня гигабайт памяти не так уж и дорого, я думаю, что это было бы классно запускать всё из памяти. Единстенный недостаток с сервером баз данных это то, что нужно сначала запоминать изменения в другой базе данных и только потом заносить их в базу, хранящуюся в памяти. Это медленно, но учитывая, что чаще нужно читать из базы, чем записывать это должно увеличить скорость работы. Это возможно, если мы сможем зазеркалировать RAM диск на винчестер.
Я уже объяснял это в предыдущей статье, так что читайте здесь:http://www.gnujobs.com/mark/articles/Ramdisk.html#Example. Просто замените команды
### Создать разделы ramdisk /sbin/mkfs -t ext2 /dev/ram0 /sbin/mkfs -t ext2 /dev/ram1 /sbin/mkfs -t ext2 /dev/ram2 ### Снонтировать ram диски в нужные места mount /dev/ram0 /home/httpd/cgi-bin mount /dev/ram1 /home/httpd/icons mount /dev/ram2 /home/httpd/htmlна эти команды (увеличьте числа, если 10 мегабайт недостаточно):
mount -t ramfs none /home/httpd/cgi-bin -o maxsize=10000 mount -t ramfs none /home/httpd/icons -o maxsize=10000 mount -t ramfs none /home/httpd/html -o maxsize=10000
Есть три проблемы при комбинировании ram диска и раздела на жёстком диске.
raiddev /dev/md3 raid-level 1 nr-raid-disks 2 nr-spare-disks 0 chunk-size 4 persistent-superblock 1 device /dev/hdb6 raid-disk 1 device /dev/ram3 raid-disk 0После этого я запустил следующие команды,
mkraid /dev/md3 mkfs -t ext2 /dev/md3 mkdir -p /RAID1 mount /dev/md3 /RAID1Проблема в том, что до перезагрузки ram диск не существует. Ну а после перезагрузки,
raidstart /dev/md3 raidhotadd /dev/md3 /dev/ram3 mount /dev/md3 /RAID1Теперь запомните, что если вы не перенастроили ваши ram диски на размер больше 4-х мегабайт, то бессмысленно соединять их в raid с разделом на диске большем, чем 4 мегабайта.
Это будет здорово иметь зеркалированный raid с тремя разделами. Первый это ram диск и два других это разделы на винчестере, еще бы сделать так, чтобы чтение производилось только с ram диска. Я не знаю, возможно ли настроить чтение только с одного раздела в raid, но это было-бы здорово.
Спасибо Кате за помошь!
Копирайт © 4/2001 Марк Нильсен
Версия статьи 1.3 : Последнее изменение Суббота 19 Мая 2001 06:04:06
|
Webpages maintained by the LinuxFocus Editor team © Mark Nielsen, FDL LinuxFocus.org Click here to report a fault or send a comment to LinuxFocus |
Translation information:
|
2001-07-28, generated by lfparser version 2.17