Моделирование файловой системы флэш-памяти с использованием оперативной памяти
 devf-generic [-a] [-b приоритет] [-E] [-f уровень_проверки] [-i индекс_массива[,индекс_раздела]] [-l] [-m перемонтирование] [-p фоновый_процент[,сверхлимит]] [-R] [-r] [-s базовый_адрес[,размер_окна[,смещение_массива[,размер_массива [,размер_блока[,ширина_шины[,коэф_чередования]]]]]]] [-t потоки] [-u обновление] [-V] [-v] [-w размер_буфера]
  
    - -a
- Не выполнять автоматическое монтирование разделов файловой системы, имеющихся на носителе. Если указаны обе опции -a и -R, опция -R драйвером игнорируется.
- -A
- Применить resmgr_attach() ко всем разделам с флагом AFTER
- -b приоритет
- Активация фонового восстановления с указанным значением приоритет. По умолчанию фоновое восстановление деактивировано.
- -d лог
- Установить метод логирования
- -E
- Не переходить в режим сервиса. При обнаружении драйвером поврежденной файловой системы статус завершения будет на 1 больше номера раздела файловой системы.
- -e аргумент
- Установить ограничение на повторную попытку flash-программы только для перечисления разделов. Если аргумент - это число, то автомонтировать. Если аргумент является строкой, она берется в виде разделенного двоеточием списка точных имен путей для монтирования (если они найдены).
- -f уровень_проверки
- Активировать проверку флэш-памяти.    -  0 – без проверки (по умолчанию)  
-  1 – проверка записи  
-  2 – проверка удаления  
-  3 – все  
 
- -i индекс_массива[,индекс_раздела]
- Индексы начального сокета и первого раздела; 0 ≥ индекс ≥ 15. Значением по умолчанию является 0,0. Используется для присвоения нескольким драйверам уникальных идентификаторов. Опция -i является просто указанием для менеджера ресурсной базы данных. Выбранные индексы могут иметь большие значения.
- -k размер_блока
- Установить размер блока кэша экстентов (по умолчанию 128 кб)
- -k число_файлов
- Установить максимальное количество файлов для кеширования (по умолчанию 64)
- -l
- Вывести список всех доступных баз данных флэш-памяти и завершить работу.
- -L предел
- Установить предел повторных попыток программы
- -m перемонтирование
- Перезаписать точки монтирования, присвоенные файловой системе, отформатированной с пустой точкой монтирования (т.е. flashctl -p /dev/fs0p0-f -n ""). Аргумент перемонтирование может включать два спецификатора формата %X (аналогичных спецификаторам для printf()), которые заменяются индексом сокета и индексом раздела.
 |  | Опция -m не используется для перезаписи точки монтирования, указанной посредством утилиты mkefs. |  
 
 
- -p фоновый_процент[,сверхлимит]
- Установка процентного триггера фонового восстановления (устаревшее пространство поверх свободного пространства) и, дополнительно, лимита перекрываемого экстента перед восстановлением. Значение по умолчанию – 100,16.
- -R
- Монтировать все файловые системы с автоматическим монтированием в режиме "только чтение". Эта опция не влияет на монтирование неформатированных разделов. Она имеет значение только при запуске и инициализации. При всех последующих операциях монтирования (с использованием flashctl или mount) опция -R игнорируется. Если указана опция -a, опция -R драйвером игнорируется.
- -r
- Активировать устранение неисправностей для экстентов без поддержки 8-разрядных символов, зависших экстентов и при частичном восстановлении.  
 |  | Значение опции -r не указывается только в случае выполнения попытки устранения проблемы, связанной с повреждением флэш-устройства. |  
 
 
  -  Возможна потеря пространства памяти. Если при отключении питания выполнялся процесс стирания данных, возможно появление зависших экстентов (т.е. с пометкой для удаления, но фактически не удаленных). При указании опции -vv драйвер выводит dangle для каждого обнаруженного зависшего экстента. Эти экстенты будут занимать пространство вплоть до удаления. Восстановить такие экстенты можно с помощью опции -r.  
-  Система может быть помечена атрибутом "только для чтения". Если драйвер обнаружил ошибку в структуре файловой системы, и опция -r не была указана, то раздел помечается атрибутом "только для чтения" в целях предотвращения дополнительных повреждений.  
-  В случае прерывания операции восстановления по причине сбоя питания резервные блоки могут оказаться непригодными для использования. В этом случае, если указана опция -vv, драйвер выводит на консоль partial. Раздел остается доступен для чтения и записи, но функции восстановления деактивируются. В случае продолжения операции перезаписи файлов система окажется заполненной устаревшими данными.  
 
- -s базовый_адрес[,размер_окна[,смещение_массиваt[,размер_массива[,размер_блока[,ширина_шины[,коэф_чередования]]]]]]
- Установить опции сокета: как правило, базовый физический адрес, размер окна, смещение массива, размер массива, ширина шины и коэффициент чередования. Для служб сокета со специализированными драйверами формат остается гибким. Аргументы:    -  базовый_адрес   
-  Физический базовый адрес раздела флэш-памяти. Значение зависит от используемой платы.  
 |  | При использовании утилиты devf-ram аргумент базовый_адрес имеет особое значение:    0    Выделить системную память.   ≠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 – обновление файлов и каталогов  
 
 |  | Опция -u2 является крайне дорогостоящей, поскольку обновления времени должны осуществляться вплоть до корневого каталога и одно обновление файла может вызвать обновление множества каталогов. |  
 
 
- -V
- Вывести информацию о версии файловой системы и MTD и завершить работу.
- -v
- Вывести расширенную информацию.
- -w размер_буфера
- Размера буфера записи (добавление) в байтах. Значением аргумента размер_буфера по умолчанию является 512. Использование больших размеров буфера при записи предотвращает создание слишком мелких экстентов, что сокращает затраты. Если значение размер_буфера равно0, добавление деактивируется.
ЗОСРВ «Нейтрино»
 
aarch64, arm, armv7, e2k, mips, ppc, x86
 
 
|  | Для запуска этого драйвера необходимо войти в систему под учетной записью root. | 
Менеджер devf-ram предназначен для моделирования файловой системы флэш-памяти в RAM со следующими именами файлов по умолчанию (для изменения идентификатора n, добавляемого к /dev/fs, используется опция -i):  
  -  /dev/fsn   
-  Доступ к неформатированным данным для сокета n, раздел 0.  
-  /dev/fsnp0   
-  Доступ к неформатированным данным для сокета n, раздел 0.  
-  точка_монтирования   
-  Точка монтирования файловой системы флэш-памяти для сокета n, раздел 0 с прозрачной распаковкой данных.  
Значение описанного выше аргумента точка_монтирования можно определить с помощью атрибута mount команды mkefs и перезаписать его с использованием опции -n для flashctl. Значение по умолчанию – /fsnp0.
 
Запуск devf-ram с разделом размером 16 МБ.
 devf-ram  -s0,16m                 
Запуск devf-ram и автоматическое монтирование разделов файловой системы флэш-памяти с начальным процессом восстановления после сбоя, включенной большей частью семантики POSIX и фоновым восстановлением с приоритетом 5 (размер по умолчанию: 1 МБ):
 devf-ram -r -u2 -b5 &             
Создание флэш-раздела размером 32 МБ в оперативной памяти системы с размером блока (сектора) 64 КБ:
 devf-ram -s0,32m,,,64k  -v -r     
Создание флэш-раздела размером 128 МБ в оперативной памяти системы с большими размерами блоков (для ускорения форматирования):
 devf-ram -s0,128m,,,512k -v -r    
Создание раздела размером 4 МБ в оперативной памяти системы:
 devf-ram -s0,4m,,,64k -v -r       
 
|  | Перед монтированием файловой системы флэш-памяти необходимо выполнить форматирование и очистку раздела devf-ram. См. предостережения ниже. | 
 
|  | При определении размера блока в файле построения образа для файловых систем флэш-памяти на базе DRAM необходимо ограничить этот размер значением по умолчанию (64 Кб). | 
Несмотря на то, что в файловой системе флэш-памяти поддерживается большая часть семантики POSIX, некоторые функции не реализованы в целях сохранения простоты использования и эффективности работы данного драйвера. Не поддерживается следующая семантика POSIX:  
  -  Жесткие ссылки и все, что к ним относится (каталоги .и..не существуют, элемент nlink структуры struct stat жестко определен, а команда unlink() для каталогов возвращает значениеENOTSUP).
-  Время доступа на носителе не обновляется. Эти значения устанавливаются в соответствии со временем изменения.  
В файловой системе флэш-памяти версии 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 завершает работу без сообщения об ошибке. Раздел не создается
 Базовые подсистемы ЗОСРВ «Нейтрино», Драйверы
 
 deflate, devf-generic, flashctl, inflator, mkefs
 
Предыдущий раздел:  Драйверы