К списку статей
Автор: Алексей Федорчук
Обложка статьи

FreeBSD. Настраиваем файловые системы

После установки FreeBSD и перед тем, как начать работу, следует затратить некоторые (забегая вперед, скажу - не очень большие) усилия по созданию рабочей атмосферы. И одна из первейших задач при этом - настройка файловых систем.

Чем обусловлена необходимость этого занятия? Впервые столкнувшись с FreeBSD после общения, например, с Linux, обращаешь внимание на относительно низкое быстродействие операций с файлами. Особенно если приходится копировать/удалять/перемещать большое количество файлов, небольших по объему. Говорят, это врожденная особенность файловой системы UFS. Каковая, однако, поддается терапии, на что обратил мое внимание Павел Кайгородов (пользуясь случаю, выражаю ему свою признательность).

Так вот, с целью оптимизации действий над файлами во FreeBSD предусмотрена опция под названием soft updates. Это модификация кода UFS, ускоряющая ее работу и одновременно делающая файловую систему более устойчивой к сбоям (при пропадании питания, например). Она требует, чтобы ядро системы было собрано с ее поддержкой. Впрочем, опция эта по умолчанию включена в ядро GENERIC, создаваемое при инсталляции системы в виде строки

options SOFTUPDATES

в файле конфигурации ядра /usr/src/sys/i386/conf/GENERIC (отдельный разговор о котором - впереди). Однако, поскольку считается, что soft updates требует повышенного расхода памяти, по умолчанию в установленной впервые системе опция эта не активизирована. Что и надлежит исправить некими действиями.

Какими? Перво-наперво, активизировать soft updates можно только для размонтированных файловых систем. Полезно посмотреть, какие из них смонтированы в данный момент и какие устройства в каталоге /dev им соответствуют. Это делается, например, командой mount. Запущенная без параметров, она даст картину вроде

/home/alv=>>mount
/dev/ad0s1a on / (ufs, local)
/dev/ad0s1g on /home (ufs, local)
/dev/ad0s1f on /usr (ufs, local)
/dev/ad0s1e on /var (ufs, local)
procfs on /proc (procfs, local)

И тут самое время вспомнить, что в заметке про инсталляцию FreeBSD я предупреждал о целесообразности создания отдельного корневого раздела (/) и самостоятельных разделов /usr и /home. Ведь даже если и удастся размонтировать корневой раздел (я, честно говоря, не знаю, как), система, очевидно, полностью утратит работоспособность, и никакие дальнейшие манипуляции с ней будут невозможны.

А так - мы спокойно даем команду

umount -Af

где параметр A предписывает размонтирование всех файловых систем, кроме корневой, а параметр f - определяет принудительность этого процесса: без него, скорее всего, последует сообщение о невозможности размонтирования, так как какое-либо из имеющихся устройств наверняка используется.

Затем начинаем активизировать опцию soft updates. Для этого дается команда

tunefs -n enable /dev/ad0s1e

где /dev/ad0s1e - имя устройства, для которого требуется включить soft updates, например, /var. Далее команда эта повторяется для систем /usr и /home. После чего выполняем обратное монтирование всех файловых систем, определенных в файле /etc/fstab

mount -a

Наконец, снова запускаем команду mount без параметров и имеем удовольствие наблюдать, что на всех системах, кроме корневой, опция soft updates благополучно включена:

/home/alv=>>mount
/dev/ad0s1a on / (ufs, local)
/dev/ad0s1g on /home (ufs, local, soft-updates)
/dev/ad0s1f on /usr (ufs, local, soft-updates)
/dev/ad0s1e on /var (ufs, local, soft-updates)
procfs on /proc (procfs, local)

Обращаю внимание на то, что для вступления изменений в силу не требуется перезагрузки системы. И, что характерно, после выполнения таковой изменения сохраняются. Так что в одном сеансе работы можно сколько угодно включать и выключать soft updates для любой файловой системы, кроме корневой.

Разумеется, soft updates можно активизировать и для корневой (/) файловой системы, или для единственного раздела (partition) в пределах слайса, буде таковым мы ограничились при инсталляции системы. Однако для этого нужно загрузиться с инсталляционного CD и в меню программы sysinstall выбрать опцию fixit (перед чем не худо озаботиться созданием соответствующей дискеты). Поскольку при этом все имеющиеся на винчестере разделы оказываются размонтированными, команду

tunefs -n enable /dev/ad0s1*

можно применить к любому из них. В том числе и к единственному разделу. Так что, казалось бы, дробление диска не обязательно. Но все не так просто.

Конечно, сама по себе процедура перезагрузки не сложна. Однако при этом следует озаботиться созданием специальной дискеты fixit (или соответствующего CD): стандартный вариант ее программы tunefs не содержит, и разместить ее там простым способом не удается. А главное, в этом случае исчезает возможность включать/выключать soft updates по желанию в течении одного сеанса работы. Что может понадобиться, например, для освобождения ресурсов системы или, напротив, для увеличения быстродействия файловых операций, в зависимости от сиюминутной задачи.

Что реально дает активизация soft updates? Это легко проиллюстрировать на примере копирования каталога, включающего вложенные подкаталоги с большим количеством различных по размеру (от пары Кбайт до 50-100 Мбайт), и последующего уничтожения копии. Результаты такого эксперимента для каталога с содержимым, суммарный объем которого превышает 4 Гбайт, приведены в таблице 1.

Таблица 1. Быстродействие операций над очень большим количеством различных по размеру файлов

Операцияsoft upadtes disable, минsoft upadtes enable, мин
Копирование159
Уничтожение31

Можно видеть, что в результате нехитрого действа производительность FreeBSD при выполнении типичных файловых операций возрастает в полтора-три раза.

Еще более впечатляющая картина вырисовывается при действиях с большим количеством мелких (от первых килобайт до 100-120 Кбайт суммарным объемом около 15 Мбайт. В этом случае (табл. 2) превосходство в быстродействии при включении soft updates - более чем четырехкратное при копировании и более чем на порядок - при удалении.

Таблица 2. Сравнительное быстродействие файловых операций под FreeBSD и Linux

СистемаFreeBSD с SUFreeBSD без SULinux
Копирование, с8,5305,7
Удаление, сменее 111менее 1

Легко видеть, что при включении soft updates быстродействие файловых операций во FreeBSD становится сопоставимым с таковым в Linux. Для полноты картины следует отметить, что результаты табл. 2 были получены на машинах, идентичных по всем компонентам, за исключением материнской платы. При измерениях для Linux в качестве таковой выступала Abit SE6 (чипсет i815e с поддержкой ATA/100). В системе на FreeBSD использовалась MSI 6326 (чипсет 815, поддерживающий только ATA/66). А учитывая традиционную ориентированность плат Abit на оптимизацию по быстродействию, различие в скорости копирования менее чем в 3 секунды нельзя считать значимым.

И так, настройка должным образом файловых систем дает существенный выигрыш в быстродействии при операциях с данными. По эффективности я сравнил бы эту процедуру с использованием аппаратного кэширования дисков - помните, были некогда такие кэш-контроллеры, дававшие на некоторых задачах просто фантастическую скорость при обращениях к данным? Разница лишь в том, что тут такой выигрыш достигается а)абсолютно бесплатно и б)не требует никаких сверхъестественных действий (даже, скорее всего, регенерации ядра). Так что пренебрегать soft updates ни в коем случае не следует...

  • Обложка статьи FreeBSD. Настраиваем файловые системы

    FreeBSD. Настраиваем файловые системы

    FreeBSD. Свободные записки о свободной системе. В качестве объекта для изучения был избран однодисковый вариант FreeBSD стабильной версии - 4.2

    Читать далее
  • Обложка статьи Поддерживаю РФ: Кириллические домены должны поддерживаться в российском ПО и сервисах

    Поддерживаю РФ: Кириллические домены должны поддерживаться в российском ПО и сервисах

    Поддержка российским ПО и отечественными сервисами кириллических доменов и адресов электронной почты станет ключевой задачей проекта Поддерживаю.РФ в 2021 году. По словам директора Координационного центра доменов .RU/.РФ Андрея Воробьева, национальный дом

    Читать далее
  • Обложка статьи Защищаем Apache 2. Шаг за шагом

    Защищаем Apache 2. Шаг за шагом

    В этой статье мы расскажем о пошаговой установке и конфигурировании Apache 2.0, чтобы снизить риск неавторизованного доступа или успешного взлома в случае применения новой уязвимости, обнаруженной в Apache Web сервере. В результате, можно будет пользовать

    Читать далее
  • Обложка статьи Защита ваших данных. PGP & Linux

    Защита ваших данных. PGP & Linux

    Эта статья написана для тех, кому необходимо сохранить некоторую информацию в секрете и кто пока не решил как это сделать....

    Читать далее
  • Обложка статьи DragonFlyBSD: загрузка и инициализация

    DragonFlyBSD: загрузка и инициализация

    В этом цикле статей я хочу рассказать об операционной системе, родившейся прямо на наших глазах - летом 2004 года. Имя ей - DragonFlyBSD, и являет она собой представителя славного племени BSD-систем. В сущности, исходно это fork (порождение) FreeBSD 4-й в

    Читать далее

Специальные предложения
интернет-магазина

  • Чехол для переноски Portable Hard Shell для Oculus Quest 2 VR
    3300 руб

    Чехол для переноски Portable Hard Shell для Oculus Quest 2 VR

  • Книга: Дронов В.А. "Laravel 9. Быстрая разработка веб-сайтов на PHP"
    1550 руб

    Книга: Дронов В.А. "Laravel 9. Быстрая разработка веб-сайтов на PHP"

  • №18 Патрон с впаянной лампой 2,5 V/ 0,3A
    212 руб

    №18 Патрон с впаянной лампой 2,5 V/ 0,3A

  • Книга: Аль-Халили Джим "Мир физики и физика мира. Простые законы мироздания"
    1000 руб

    Книга: Аль-Халили Джим "Мир физики и физика мира. Простые законы мироздания"

  • Набор выводных резисторов 0.25W (100 Ом—910 Ом), 24 номинала по 10 шт.
    275 руб

    Набор выводных резисторов 0.25W (100 Ом—910 Ом), 24 номинала по 10 шт.