io-blk.so

Поддержка блочного ввода/вывода

Синтаксис:

драйвер [blk опция[,опция]] [тип_файловой_системы [опции]]

Поддерживаемые платформы:

Neutrino


Опции:

Значение аргумента драйвер соответствует одному из драйверов devb-*, например devb-eide, а значение аргумента опция одной из описанных ниже опций.

Дополнительный аргумент тип_файловой_системы определяет один из драйверов файловой системы (fs-*); после него можно указать опции, специфичные для конкретной файловой системы.

Суффиксы для размеров памяти

Значения размера используемой памяти можно определить путем запуска команды io-blk.so с любым из следующих суффиксов:

Опции группы blk

Следующие опции можно определить только в группе blk:

alloc=режим

Установить один из следующих вариантов политики кэширования/выделения памяти:

auto=количество

Установить объем операций автоматического монтирования; количество может принимать следующие значения: Значение по умолчанию partition.

automount=устройство[:точка_монтирования[:тип_файловой_системы[:опции]]]
automount=@имя_файла


Создать точку монтирования для устройства в соответствии со значениями устройство и точка_монтирования. Если полный путь к устройству не указан, то io-blk.so использует значение опции devdir в качестве префикса. Например, если devdir имеет значение /dev (по умолчанию), опция automount=hd0t77:/disk монтирует /dev/hd0t77 в местоположении /disk.

Дополнительный аргумент тип_файловой_системы определяет тип файловой системы, после чего можно установить соответствующие опции. Варианты файловой системы и соотвествующие разделяемые объекты:

cd

fs-cd.so

dos

fs-dos.so

ext2

fs-ext2.so

mac

fs-mac.so

nt

fs-nt.so

qnx4

fs-qnx4.so

qnx6

fs-qnx6.so

udf

fs-udf.so


Если значение не указано, библиотека выполняет попытку выбора файловой системы автоматически.

Если используется версия опции @имя_файла, точки монтирования соответствуют указанным в файле. Файл представляет собой список точек понтирования (с применением указанного выше синтаксиса), позиции в котором разделены символами новой строки или запятыми.

Примечание. Разместить файл имя_файла в файловой системе, автоматическое монтирование которой выполняется, невозможно: он должен быть доступен в существующей файловой системе, например, в файловой системе образа. Например, его можно расположить в любой запущенной файловой системе devb.

Для монтирования нескольких файловых систем в (съемном) устройстве с помощью префикса + следует указать, что устройство является разделяемым. Пример.

automount=+fd0:/dos/a:dos,automount=+fd0:/fd:qnx4

Список общих типов разделов приведен в главе Filesystems ("Файловые системы") руководства по системной архитектуре.

bufsz=мин:макс

Размер наименьшего и наибольшего физического сектора в байтах. Значение по умолчанию 512:8K.

cache=общий_размер

Общий допустимый размер кэша в оперативной памяти. Кэш-память выделяется по мере необходимости сверх исходного объема, указанного с помощью опции alloc=, до достижения размера, определенного аргументом общий_размер. Для размера памяти используются описанные выше суффиксы; значение по умолчанию 15% от ОЗУ системы.

Примечание. Размер кэша по умолчанию является избыточным для devb-fdc и devb-ram. Для накопителя на гибких дисках это значение, очевидно, необходимо уменьшить до более приемлемого:

devb-fdc blk cache=128k &

или полностью исключить для драйвера ОЗУ.
delwri=задержка1:задержка2
Указать время задержки для операций отложенной записи на несъёмные и съемные носители. Заполненный блок диска хранится в кэше и не записывается на диск в течение количества секунд, определенного аргументами задержка1 или задержка2. Значение по умолчанию 2 секунды для съёмных носителей и 1 секунда для съемных носителей. Для получения дополнительной информации см. раздел "Управление операциями записи" ниже.

devdir=путь

Каталог, в котором io-blk представляет физические устройства как блок-ориентированные специальные файлы. Значение по умолчанию /dev.

devno=тип

Осуществлять управление процедурой запроса номеров устройств; возможные значения аргумента тип:

enumpart=порядок

Установить порядок перечисления разделов диска; возможные значения:

exclusive

Запросить/получить монопольный доступ к устройству монтирования.

fdinfo=режим

Указать способ хранения имен открытых файлов для запроса iofdinfo(). Параметр режим может принимать одно из следующих значений:

ncache

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

always

Значение по умолчанию. Сохранить имя, используемое при каждом вызове open() с целью обеспечения постоянной доступности этого имени.

never

Не предоставлять имя открытого файла.

map=размер

Определить число записей в кэше, используемых для отображения преобразований логических блоков в физические. Если эта опция не указана, размер зависит от значения опции vnode.

naming=схема

Установить схему присвоения имен устройств/разделов. Значение по умолчанию 0#. Для получения дополнительной информации см. раздел "Схемы присвоения имен" далее.

ncache=размер

Указать размер кэша имен для записей размер. Чем больше записей кэша имен используется, тем быстрее выполняются операции поиска пути/файла за счет дополнительного расхода памяти. При выборе для аргумента размер значения 0 кэширование имен деактивируется. Если эта опция не указана, размер определяется на основе опции vnode.

noaiod

Деактивировать асинхронную обработку iodone, выполнять обработку в контексте потока драйвера. По умолчанию обработка выполняется в выделенном потоке.

postpone=время

Сохранять заполненный блок диска в памяти в течение числа секунд, указанного в аргументе времени, до физической записи на диск, если он постоянно изменяется. При установке значения опции postpone= обеспечивается периодическая запись постоянно изменяемых блоков на диск (через число секунд, указанное в аргументе время). Значение по умолчанию определяется в опции delwri.

priority=приоритет

Установить приоритет периодических вызовов файловой системы. Значение по умолчанию 21.

protect=число

Определить число защищенных дополнительных передач LRU. Значение по умолчанию 2.

ra=мин:макс

Установить минимальный и максимальный размер буферов опережающего чтения. Значение по умолчанию "4k:64k".

ramdisk=размер

Создать виртуального диска (/dev/ramX) указанного размера. Для переменной размер можно использовать описанные выше суффиксы. Исходное содержимое этого запоминающего устройства не определено, поэтому перед использованием в качестве файловой системы необходимо выполнить его форматирование (см. описание dinit в руководстве по утилитам).

rmvpoll=период

Период опроса в секундах для съемных носителей (значение по умолчанию 0).

rmvto=задержка

Указать для съемного носителя таймаут, соответствующий значению задержка в секундах (по умолчанию 2 секунды). После неактивности в течение числа секунд, указанных в аргументе задержка, при доступе к диску у драйвера запрашивается подтверждение наличия носителя; если поступает сообщение об изменении носителя, все блоки данных и кэшированная информация для этого устройства отбраковываются и заменяются другими данными.

thread=[макс]:[низкий]:[высокий]

Установить параметры пула потоков (максимальный уровень, низкая загрузка и высокая загрузка). Значение по умолчанию 12:2:5.

verbose[=уровень]

Вывести расширенную информацию. Вывод направляется в системный журнал slogger.

Аргумент уровень не является обязательным и представляет собой последовательность буквенных символов, которая определяет категории событий для записи в журнал:
blk verbose означает все уровни, blk verbose=io означает ввод и вывод, blk verbose=!r означает все, кроме съемных носителей и т.д. Значение по умолчанию bcdfiorv.

vnode=размер

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

wipe=размер

Установить размер кэш-памяти, которую может занимать один файл. Эта опция предназначена для предотвращения ситуации стирания кэша, при которой чтение файла большого размера может занять большую часть кэш-памяти буфера. В значении размер можно указать описанные выше суффиксы; значение по умолчанию 100% (т.е. ограничение не применяется).

Опции файловой системы

Следующие опции можно применять глобально (в группе blk) или для конкретной файловой системы (например, в группе qnx4 для файловой системы QNX 4):

after

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

before

Монтировать файловую систему с выполнением ее разрешения до всех других файловых систем, смонтированных с этим путевым именем (другими словами, поместить файловую систему перед всеми существующими смонтированными системами). Для получения доступа к файлу в первую очередь осуществляется поиск в файловой системе.
commit=уровень
Установить уровень использования файловой системы для управления процедурой записи заполненных системных/пользовательских блоков на диск. Аргумент уровень может иметь значение none, low, medium (по умолчанию) и high. Если выбрано значение none, все операции записи выполняются с задержкой (установленной посредством опции delwri); при выборе значения high все операции записи выполняются синхронно. Для получения дополнительной информации см. раздел "Управление операциями записи" ниже.

error=действие

Определить действие, выполняемое при обнаружении модулем файловой системы fs-* внутренней ошибки. Возможные значения аргумента действие:
Значение по умолчанию ebadfsys.

marking=режим

Установить поведение маркирования заполнения файловой системы. Аргумент режим может иметь значение none или mount (по умолчанию). Если маркирование активировано, то файловая система отмечается как заполненная при монтировании и как очищенная при размонтировании. Метод маркирования зависит от файловой системы.

[no]atime

Обновлять/не обновлять запись в каталоге файла, если изменилось только время доступа. Опция noatime не соответствует POSIX 1003.2, но позволяет работать быстрее.

[no]creat

Разрешить/запретить создание файлов в этой файловой системе.

[no]exec

Разрешить/запретить выполнение файлов из этой файловой системы.

[no]lock

Блокировать/не блокировать съемный носитель. Если носитель блокирован, то он обрабатывается как стационарный.

[no]rmv

Запретить/разрешить монтирование на съемных носителях (повторная вставка).

[no]suid

Игнорировать/не игнорировать бит SUID в файлах этой файловой системы.

ro

Выполнить монтирование всех дисков/файловых систем с атрибутом "только для чтения".

rw

Выполнить монтирование всех дисков/файловых систем с атрибутом "чтение и запись" (если разрешено физическим носителем). Используется по умолчанию.

Для получения дополнительной информации об опциях before и after см. раздел "Ordering mountpoints" ("Порядок точек монтирования") в главе "Process Manager" ("Менеджер процессов") руководства по системной архитектуре.

Описание:

Библиотека io-blk.so обеспечивает поддержку блочного ввода/вывода, используемого драйверами devb-*, и загружает требуемые драйверы файловых систем (fs-*).

Значения по умолчанию опций map и ncache зависят от значения опции vnode. Это условие позволяет конфигурировать систему путем определения размера кэш-памяти и числа файлов. Помимо этого обеспечивается возможность установки библиотекой и других опций.

Управление операциями записи

Типы операций записи:

Синхронно (SYNC)

Начать немедленно и ожидать завершения.

Асинхронно (ASYNC)

Запустить немедленно, но не ожидать завершения.

С задержкой (DELWRI)

Не запускать до окончания периода таймаута, затем выполнить асинхронно. Опция blk delwri= контролирует таймаут для формата с задержкой; если для этой опции указано значение 0, операция отложенной записи выполняется аналогично операции асинхронной записи.

При необходимости

Записывать только в случае необходимости.

Возможные типы данных:

Пользовательские данные

Объекты операций чтения и записи: read() и write().

Метаданные

Данные, связанные с командой stat(), например время и идентификаторы.

Данные файловой системы

Файлы побитовой карты (bitmap), экстенты и т.д.

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

В противном случае тип записи для каждого уровня данных определяется уровенем
blk commit:

commit=

Данные файловой системы

Метаданные

Пользовательские данные

none

DELWRI

DELWRI

DELWRI

low

ASYNC

DELWRI

DELWRI

medium

SYNC

DELWRI

DELWRI

high

SYNC

SYNC

SYNC


Примечание. Если используется commit=none, теряется весь порядок записи (для единичных многоблочных обновлений и операций с участием нескольких пользователей). Следовательно, вероятность корректного восстановления после сбоя питания невелика. Опцию рекомендуется использовать только при наличии источника бесперебойного питания иначе не удастся использовать dinit для восстановления файловой системы.

При вызове close() возможно принудительное обновление метаданных. Пользовательские данные не изменяются. При вызове fsync() выполняется запись всех блоков файла с отложенной записью, поэтому использовать эту функцию полезно в случае, если значение commit отличается от high.

Схемы присвоения имен

Опция naming=схема используется для определения схемы присвоения имен для устройств и разделов. Параметр схема может быть указан в следующем формате:

0# (где 0 соответствует любой цифре и определяет первое/базовое число)

Устройства получают имена 0, 1 и т.д., а разделы на основе имени устройства с добавлением t после типа ОС раздела (см. "Partitions" ("Разделы") в главе "Filesystems" ("Файловые системы") руководства по системной архитектуре). Например, разделу QNX может быть присвоено имя hd0t77.

Для дублируемых разделов добавляется точка (.) и порядковый номер (например, hd0t12, hd0t12.1 и hd0t12.2 для логических/расширенных разделов DOS). Это схема присвоения имен QNX Neutrino.

0a (фактически любая цифра или буква; определяет первое/базовое имя)

Устройства получают имена 0,1,..., а разделы a, b и т.д. (например, /dev/hd0, /dev/hd0a, /dev/hd0b, /dev/hd0c и т.д.). В имени не указывается тип ОС для разделов, а только порядок их обнаружения.

a1 (фактически любая буква или цифра; определяет первое/базовое имя)

Устройствам присваиваются имена a, b и т.д. Первичные разделы имеют имена 1, 2, 3 и 4; если их меньше четырех, неиспользуемые номера пропускаются. Все расширенные разделы нумеруются без пропусков после 5 (например, /dev/hda, /dev/hda1, /dev/hda2, /dev/hda5 и т.д.).

В имени не указывается тип ОС раздела, а только его местоположение. Это схема присвоения имен используется в Linux.

Значение по умолчанию 0#.

Примечание. Смена схемы осуществляется на свой страх и риск.
При использовании другой схемы потребуются дополнительные знания о файловой системе, которая монтируется в разделе, поскольку подсказка по присвоению имен tXXX не доступна.