devf-ram
Моделирование файловой
системы флэш-памяти с использованием оперативной памяти
Примечание. Для запуска этого драйвера
необходимо войти в систему с учетной записью root.
Синтаксис:
devf-ram
[-a] [-b приоритет]
[-E] [-f уровень_проверки]
[-i индекс_массива[,индекс_раздела]]
[-l] [-m перемонтирование]
[-p фоновый_процент[,сверхлимит]]
[-R] [-r]
[-s базовый_адрес[,размер_окна[,смещение_массива[,размер_массива
[,размер_блока[,ширина_шины[,коэф_чередования]]]]]]]
[-t потоки]
[-u обновление] [-V] [-v]
[-w размер_буфера]
Поддерживаемые платформы:
Neutrino
Целевые платформы:
MIPS, PowerPC, x86, SH и ARM
Опции:
-a
Не выполнять автоматическое монтирование разделов
файловой системы, имеющихся на носителе. Если указаны обе
опции - a и -R, опция -R драйвером игнорируется.
-b приоритет
Активация фонового
восстановления с указанным значением приоритет. По
умолчанию фоновое восстановление деактивировано.
-E
Не
переходить в режим сервиса. При обнаружении драйвером
поврежденной файловой системы статус завершения будет на 1
больше номера раздела файловой системы.
-f уровень_проверки
Выполнить
моделирование проверки флэш-памяти; предоставляется только для
совместимости синтаксиса с реальным флэш-устройством (по
умолчанию – 0, 0 – без проверки, проверка записи – 1, проверка
удаления – 2, все – 3).
-i индекс_массива[,индекс_раздела]
Индексы начального сокета и первого раздела;
0 ≥ индекс ≥15.
Значением по умолчанию является 0,0. Используется для
присвоения нескольким драйверам уникальных идентификаторов.
Опция -i является просто
указанием для менеджера ресурсной базы данных. Выбранные
индексы могут иметь большие значения.
-l
Вывести список всех доступных
баз данных флэш-памяти и завершить работу.
-m перемонтирование
Перезаписать точки монтирования, присвоенные файловой
системе, отформатированной с пустой точкой монтирования (т.е.
flashctl -p/dev/fs0p0 -e -f -n ""). Аргумент перемонтирование может включать
два спецификатора формата %X (аналогичных
спецификаторам для printf()), которые
заменяются индексом сокета и индексом раздела.
Примечание. Опция -m не используется для перезаписи точки
монтирования, указанной посредством утилиты mkefs.
-p фоновый_процент[,сверхлимит]
Установка
процентного триггера фонового восстановления (устаревшее
пространство поверх свободного пространства) и (дополнительно)
лимита перекрываемого экстента перед восстановлением. Значение
по умолчанию – 100,16.
-R
Монтировать все файловые системы с автоматическим
монтированием в режиме "только чтение". Эта опция не влияет на
монтирование неформатированных разделов. Она имеет значение
только при запуске и инициализации. При всех последующих
операциях монтирования (с использованием flashctl или mount) опция -R игнорируется. Если указана
опция -a, опция -R драйвером игнорируется.
-r
Активировать
устранение неисправностей для экстентов без поддержки
8-разрядных символов, зависших экстентов и при частичном
восстановлении.
Примечание. Значение
опции -r не указывается
только в случае выполнения попытки устранения проблемы,
связанной с повреждением флэш-устройства.
Если не
указана опция -r, то при сбое
питания возможны следующие ситуации:
-
Возможна потеря
пространства памяти. Если при отключении питания
выполнялся процесс стирания данных, возможно появление
зависших экстентов (т.е. с пометкой для удаления, но
фактически не удаленных). При указании опции - vv драйвер
выводит dangle для каждого
обнаруженного зависшего экстента. Эти экстенты будут
занимать пространство вплоть до удаления. Восстановить
такие экстенты можно с помощью опции -r.
-
Система может быть
помечена атрибутом "только для чтения". Если драйвер
обнаружил ошибку в структуре файловой системы, и опция -r не была указана, то
раздел помечается атрибутом "только для чтения" в целях
предотвращения дополнительных повреждений.
-
В случае прерывания
операции восстановления по причине сбоя питания резервные
блоки могут оказаться непригодными для использования. В
этом случае, если указана опция -vv, драйвер выводит на
консоль partial. Раздел
остается доступен для чтения и записи, но функции
восстановления деактивируются. В случае продолжения
операции перезаписи файлов система окажется заполненной
устаревшими данными.
-s базовый_адрес[,размер_окна[,смещение_массиваt[,размер_массива
[,размер_блока[,ширина_шины[,коэф_чередования]]]]]]
Установить
опции сокета: как правило, базовый физический адрес, размер
окна, смещение массива, размер массива, ширина шины и
коэффициент чередования. Для служб сокета со специализированными
драйверами формат остается гибким.
Аргументы:
базовый_адрес
Физический базовый адрес
раздела флэш-памяти. Значение зависит от используемой платы.
Примечание. При использовании утилиты devf-ram аргумент базовый_адрес имеет особое
значение:
0
Выделить системную память.
Ненулевое значение
Использовать точный
физический адрес. Необходимо действовать внимательно. См.
предупреждения ниже.
размер_окна
Размер физически непрерывного
раздела флэш-памяти.
смещение_массива
Для памяти типа SRAM аргумент
задает смещение относительно базового адреса к началу массива
флэш-памяти.
размер_массива
Для памяти типа SRAM аргумент
задает размер массива флэш-памяти. Значение по умолчанию
соответствует значению размер_окна.
размер_блока
Размер
физического сектора для стирания. Для памяти типа SRAM это число
может являться любым числом в степени 2. По причинам
производительности минимальное значение должно быть равно 64 Кб.
ширина_шины
Общая
ширина шины данных с точки зрения микропроцессора. Это значение
соответствует произведению размера шины для одной
смоделированной микросхемы флэш-памяти и коэффициента
чередования. Значение должно представлять собой степень числа 2
(1, 2, 4 или 8).
коэф_чередования
Число смоделированных
микросхем флэш-памяти на шине данных. Это значение должно
представлять собой степень числа 2 (1, 2, 4 или 8).
Базовый физический адрес, размеры и смещение можно
указать в восьмеричном (0777),
шестнадцатеричном (0x1ff) или десятичном
(511) формате.
Размеры должны являться степенью числа 2. Эти значения
устанавливаются с любым из следующих суффиксов:
-
(пусто) – байты
-
k – килобайты
-
m – мегабайты
Примечание. В целевых системах ARM
изменение размера разделяемого объекта /dev/shmem/fs* посредством devf-ram невозможно. Для перезапуска devf-ram с новым размером сначала
необходимо удалить ссылку на прежний разделяемый объект:
rm /dev/shmem/fs*
-t потоки
Число потоков. Минимальное значение равно 1, значение
по умолчанию – 2, а максимальное значение – 100.
Дополнительное число потоков увеличивает производительность
при активации фонового восстановления (опция -b) и использовании нескольких
микросхем и/или резервных блоков.
-u обновление
Уровень
обновления для меток времени: 0 – без обновления, 1 –только
обновление файлов, 2 – обновление файлов и каталогов. Значением
аргумента обновление по умолчанию является 0.
-V
Вывести информацию о версии
файловой системы и MTD и завершить работу.
-v
Вывести расширенную
информацию.
-w размер_буфера
Размера
буфера записи (добавление) в байтах. Значением аргумента размер_буфера
по умолчанию является 512. Использование больших размеров буфера
при записи предотвращает создание слишком мелких экстентов, что
сокращает затраты. Если значение размер_буфера равно 0,
добавление деактивируется.
Описание:
Менеджер devf-ram предназначен для моделирования
файловой системы флэш-памяти в RAM со следующими именами
файлов по умолчанию (для изменения идентификатора n, добавляемого к
/dev/fs, используется
опция -i):
/dev/fsn
Точка монтирования по
умолчанию для сокета n.
/dev/fsnp0
Доступ к неформатированным
данным для сокета n, раздел 0.
точка_монтирования
Точка
монтирования файловой системы флэш-памяти для сокета n,
раздел 0 с прозрачной распаковкой данных.
Значение
описанного выше аргумента точка_монтирования можно
определить с помощью атрибута mount команды mkefs и перезаписать его с
использованием опции -n для flashctl. Значение по умолчанию – /fsnp0.
Примеры:
Запуск devf-ram с разделом в 16 Mб.
devf-ram -s0,16m
Запуск devf-ram и
автоматическое монтирование разделов файловой системы
флэш-памяти с процессом начального устранения неисправностей,
активацией семантики POSIX и фоновым восстановлением с
приоритетом 5 (размер по умолчанию: 1 Mб):
devf-ram -r -u2 -b5 &
Создание раздела флэш-памяти
размером 32 Мб с выделением из системной оперативной памяти с
размером блока (сектора) 64 Кб:
devf-ram -s0,32m,,,64k -v
-r
Создание
в системном оперативной памяти раздела флэш-памяти размером 128
Мб с большими размерами блоков (для ускорения форматирования):
devf-ram -s0,128m,,,512k
-v -r
Создание в системной
оперативной памяти раздела размером 4 Mб:
devf-ram -s0,4m,,,64k -v
-r
Примечание. Перед монтированием файловой
системы флэш-памяти необходимо выполнить форматирование и
очистку раздела devf-ram. См.
предупреждения ниже.
Примечание. При
определении размера блока в файле построения образа для файловых
систем флэш-памяти на базе DRAM необходимо ограничить этот
размер значением по умолчанию (64 Кб).
Предупреждения:
Несмотря на то, что в
файловой системе флэш-памяти поддерживается большая часть
семантики POSIX, некоторые функции не реализованы в целях
сохранения простоты использования и эффективности работы данного
драйвера. Не поддерживается следующая семантика POSIX:
-
Жесткие ссылки и все, что
к ним относится (каталоги . и .. не существуют, элемент nlink структуры struct stat жестко
запрограммирован, а команда unlink() для
каталогов возвращает значение ENOTSUP).
-
Время доступа на носителе не
обновляется. Эти значения устанавливаются в соответствии со
временем изменения.
В файловой системе флэш-памяти QNX Neutrino версии 3
встроенная распаковка больше не поддерживается. Функции
распаковки файловой системы флэш-памяти перенесены в менеджер
ресурсов inflator. Для сжатия
файлов используется утилита deflate.
Во время
записи из нескольких источников в произвольном порядке в
разделяемый файл или каталог (например, посредством unlink или rename) может наблюдаться снижение
производительности. В таких случаях необходимо отдельно
определять указатели смещения для каждого случая доступа. При
добавлении к файлу или создании файлов с помощью open(O_CREAT), mkdir, mknod или link штрафы за отсутсвуют потери
производительности.
Не пытайтесь
создать раздел devf-ram по адресу
реальной флэш-памяти. В этом случае может быть создано
сообщение об ошибке: Unable to
properly identify any flash devices (не удалось
корректно определить флэш-устройства).
Не пытайтесь
создать раздел devf-ram (например, с
помощью выбора ненулевого значения аргумента базовый_адрес) по адресу
используемой физической памяти. Это может привести к
разрушению приложения и аварийному отказу операционной
системы. Выбор ненулевого значения для аргумента базовый_адрес возможен только
в целях создания файловой системы флэш-памяти для памяти,
предназначенной для платы (например, SRAM).
Перед
монтированием файловой системы флэш-памяти необходимо
форматировать и очистить раздел devf-ram.
devf-ram -s0,16m
flashctl -p /dev/fs0p0 -e
-f -m
Если при попытке создания раздела размером n Мб с помощью
опции -s0 недостаточно
оперативной памяти, драйвер devf-ram завершает
работу без сообщения об ошибке. Раздел не создается.