Трюки BSD: Memory File System опубликовано admin числа 30/09/02

Статья является переводом текста Майкла Лукаса (Michael Lucas), опубликованного по адресу

http://www.oreillynet.com/pub/a/bsd/2000/09/07/Big_Scary_Daemons.html

Файловая система MFS (Memory File System -- файловая система в оперативной памяти) позволяет создавать виртуальный диск используя оперативную память вашего компьютера. Тем самым вы можете использовать память системы так же как жесткий диск. Вы можете записывать файлы на виртуальный диск так же как на любой жесткий диск вашей системы.
Поскольку файлы на MFS-диске уже находятся в памяти, к ним возможен доступ память-память. Это намного быстрее чем доступ диск-память. Однако как и в случае с оперативной памятью, вы теряете все данные на таком диске, когда выключаете компьютер.
Вы можете использовать MFS для реализации виртуального диска на бездисковых рабочих станциях. Некоторые администраторы используют MFS-диски для хранения history-файлов news-серверов, добиваясь тем самым существенного прироста их производительности. Использование MFS-диска в качестве хранилища lock-файлов систем управления базами данных также может значительно повысить производительность многих операций.
Вы также можете использовать MFS для создания временного виртуального диска для частой компиляции программ, архивации/разархивации или для манипуляций с большими количествами небольших файлов. Однако это не всегда является хорошей мыслью -- если на вашей системе не установлено достаточного количества памяти, то MFS-диск легко сможет поставить ее «на колени».
Если памяти достаточно, то вы, например, можете смонтировать MFS-диск в каталоге /usr/obj; вы еще не видели как быстро будет выполнена команда "make world".
Все BSD-подобные системы поддерживают MFS. Я использую FreeBSD в качестве примера. Однако несмотря на то, что команды для организации MFS-дисков в NetBSD и OpenBSD должны быть похожи, я думаю что вам следует обратиться к man-руководству и документации по компиляции ядра этих систем прежде чем двигаться с нами дальше.
После монтирования MFS-диск будет пустым. Вы можете скопировать туда нужные вам файлы или оставить его чистым, как например раздел /tmp.
MFS-диск будет эффективен в случае, когда свопинг системы регулярен. Ядро FreeBSD сохраняет часто используемую информацию в памяти, перемещая реже используемые данные в своп. Такое поведение великолепно подходит для разделов типа /tmp, где доступ к маленьким часто используемым файлам будет осуществляться очень быстро, в то время как большие файлы, которые обычно используются реже и поэтому находятся в своп-файле, будут доступны со скоростью похожей на обычную UFS-систему.
Можно даже использовать MFS-диск большего размера чем физическая оперативная память вашего компьютера. В этом случае MFS будет использовать своп. Это позволяет вам временно разархивировать крупные файлы на такой диск. FreeBSD позволит вам создать MFS-диск большего размера чем общий объем физической и виртуальной (своп) памяти, при попытке использовать который вы можете столкнуться с серьезными проблемами.
MFS как и UFS не может быть загружаемым модулем. Для использования MFS необходимо перекомпилировать ядро с включенными следующими опциями:

option MFS #Memory File Sysytem

Теперь скомпилируйте и установите ядро. Перезагрузитесь.
Вы можете монтировать MFS-диск на этапе загрузки. Во-первых узнайте как называется партиция отведенная под своп:

grep swap /etc/fstab
/dev/ad0s1b none swap sw 0 0

На моей машине это ad0s1b. Если у вас несколько своп-партиций, выберите какую-нибудь одну.
Добавьте похожую строку в /etc/fstab:

/dev/ad0s1b /var/db/lockfiles mfs rw 0 0

Вы можете выбрать любые другие стандартные параметры монтирования (см. man 8 mount). Обычно добавляют параметры nosuid, nodev и async. Параметр async не уменьшает надежность системы при использовании его с MFS, в отличии от других файловых систем: в случае краха системы вам так или иначе придется заполнять MFS-диск данными.
Вы можете смонтировать MFS-диск и после загрузки. Просто укажите точку монтирования и выполните команду mount_mfs:

mount_mfs –s 655360 /dev/ad0s1b /usr/obj

Этой командой мы смонтировали 320МБ файловую систему в каталоге /usr/obj. Вы потеряете содержимое этого каталога при перезагрузке, но если вы всегда выполняете операцию сборки цели world с нуля и у вас уже настроен /etc/fstab, то это не проблема.
Флаг -s устанавливает максимальный размер партиции в 512КБ блоках. Если вы хотите создать MFS-диск ограниченный объемом доступной памяти, вы можете пропустить этот флаг. Однако это может создать вам впоследствии определенные проблемы, так что будьте уверены, что это именно то что вам нужно.
Следует отметить один нюанс связанный с монтированием MFS-дисков -- этот процесс скрывает все файлы в точке монтирования (это замечание относится к монтированию вообще, применительно к любой файловой системе -- примечание переводчика). Например если вы монтируете MFS-диск на каталог /tmp, содержащий файлы, то после монтирования эти файлы не будут доступны системе. Если вы запущенная программа рассчитывает иметь доступ к некоторым файлам в /tmp (скажем как X'ы), это может вызвать некоторые проблемы. Когда вы размонтируете MFS-диск, файлы станут видны вновь. Существует способ видеть одновременно оба набора файлов, если использовать объединенное монтирование, но реализация объединенного монтирования FreeBSD пользуется дурной славой и обладает серьезными проблемами.
Правильно использованная MFS может добавить производительности вашей системе. Неаккуратно использованная, она может привести к разнообразным проблемам. Наслаждайтесь.


Комментарии: 0
Отправить другу

Домашняя страничка Станислава Лапшанского

RusHelp.com - вся компьютерная документация на русском!