etfsctl

Управление транзакционной встраиваемой файловой системой

Синтаксис:

etfsctl [опции]

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

Neutrino

Целевые платформы:

Процессоры ARM, MIPS, PowerPC, SH4, x86 и XScale

Опции:

-c

Определить принудительное продолжение или возоновление работы файловой системы на устройстве.

-d устройство

Подключиться к указанному устройству:

/dev/etfs1

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

/dev/etfs2

Раздел файловой системы для файлов etfs.

-D

Запросить дефрагментацию по .filetable для ETFS файловой системы. По мере необходимости файловая система ETFS выполняет фоновую дефрагментацию. Эта опция позволяет выполнить ее по требованию.

-e

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

-f

Стереть, как с опцией -e, после чего форматировать пустую файловую систему. Эту опцию не следует использовать с -w, поскольку опция -w принимает стертый раздел без файловой системы.

-i

Вывести информацию о файловой системе. См. далее "Описание".

-l размер

Указать размер для последующих опций -e, -R или -r. размер задается в байтах, но можно также использовать суффиксы K, M или G

-o смещение

Стартовое смещение для последующих опций -e, -E, -r, -W или -w. смещение задается в байтах, но можно также использовать суффиксы K, M или G

-p

Использовать программно-обновляемый режим.

-r файл

Считать все данные с устройства и сохранить их в указанном файле. Данные сохраняются как последовательность транзакций. Эти данные могут быть записаны в другую часть флэш-памяти в том случае, если у неё такие же
Формат данных не зависит от порядка следования байтов и от любых зависящих от устройств характеристик, например способов хранения циклических избыточных кодов (CRC) или корректирующих кодов (ECC). Можно выполнять чтение и запись сохранённых файловых систем на различных классах устройств, например на флэш-памяти типа NAND и ОЗУ.

Можно задавать опции -l и -o для указания смещения и размера считываемых данных. Опции -l и -o должны предшествовать опциям -r или -R. Если задана опция  -l то данные не считываются после указанного размера.

-R файл

Считать все данные с устройства, включая пустые или стертые блоки, и сохранить их в указанном файле. То же, что и опция -r, но данные сохраняются в необработанном виде.

-s

Остановить файловую систему на устройстве.

-S

Аналогично опции -s, но с ожиданием остановки файловой системы перед возвратом.

-w файл


Записать транзакции из указанного файла на устройство. Этот файл транзакций может быть создан путем чтения его с того или иного устройства при помощи опции -r утилиты etfsctl или утилитой mketfs. Транзакции не зависят от расположения блоков на устройстве. Таким образом, возможно выполнение массового программирования устройств с любым расположением поврежденных блоков. Единственным требованием является наличие достаточного для хранения всех транзакций числа неповрежденных блоков.

Можно задавать опцию -o для указания смещения. Опция -o должна предшествовать опциям -w или -W.

-W файл

Записать транзакции из указанного файла на устройство. Кроме этого, скопировать все пустые и стертые блоки. Эта опция представляет собой вариант опции -w для необработанных входных данных

Описание:

Утилита etfsctl используется для управления встраиваемой транзакционной файловой системой (ETFS). Утилита взаимодействует с выполняющейся файловой системой с помощью сообщений devctl(). При помощи утилиты etfsctl можно стереть и форматировать раздел, считать или записать весь журнал транзакций (и, таким образом, всю его файловую систему) с устройства или на него, остановить или продолжить работу файловой системы, получить статистическую информацию.

Опции обрабатываются в очередности слева направо. Первой опцией должно быть устройство -d, где:

/dev/etfs1

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

/dev/etfs2

Раздел файловой системы для файлов etfs.

Используемый для хранения пользовательских расширений, например загрузочных образов, неформатированный раздел всегда расположен в начале устройства. Он может иметь размер ноль байт если необходимость в нем отсутствует. Раздел файловой системы состоит из последовательности транзакций, которые вместе формируют файловую систему. Опцию - r можно использовать для чтения транзакций с устройства и сохранения их в стандартном файле, как правило, в другой файловой системе. Затем можно использовать опцию -w для записи этого журнала транзакций в другую файловую систему ETFS.

Примечание. При записи сначала необходимо стереть данные файловой системы; в противном случае данные на устройстве будут повреждены.

Опция -w чаще всего используется для записи журналов транзакций, созданных утилитой mketfs.

Можно запросить у файловой системы прекращение принятия новых открытых запросов при помощи опции -s или -S. При закрытии последнего файла, в настоящее время открытого любым приложением, файловая система переходит в остановленное состояние. Для записи журнала транзакций в раздел файловой системы последний должен быть остановлен. Файловую систему можно запустить повторно при помощи опции -c.

Опция -i предоставляет полезную статистическую информацию о выполняющейся файловой системе. По умолчанию используется раздел /dev/etfs2, таким образом нет необходимости указывать опцию -d. Информация отображается в следующих группах:
Device

Name

Имя устройства. В имени обычно закодирован номер устройства или размер.

Blocks

Количество блоков в устройстве.

Clusters/Block

Количество кластеров на блок в устройстве.

Clustersize

Размер кластера. Как правило, 1 Kбайт или 2 Kбайта.

Totalsize


Полный размер устройства, в байтах.

Pools

Clean

Количество стертых блоков, которые готовы к немедленной записи.

Spare

Количество резервных блоков.

Filthy

Количество свободных блоков, которые ожидают операции стирания.

Inactive

Количество кластеров, которые не используются, но блокированы.

Xpool

Количество кэш-буферов.

Cache


Количество кэш-буферов кластера.

Counts

Erase

Количество операций стирания (при выполнении).

Avg

Среднее количество операций стирания на блок.

Read

Количество операций чтения кластера с устройства.

Cache

Количество операций чтения кластера из кэша.

Write

Количество операций записи кластера в устройство.

Mine

Количество операций сбора данных для восстановления неиспользуемой области в блоке. Таким образом, после очищения неактивных кластеров образуются чистые блоки.

Copy

Количество операций копирования блоков. Возможно два варианта копирования. Первый вариант заключается в чтении блока с некритичной ошибкой корректирующего кода (ECC), что является признаком неустойчивости блока. Блок копируется в новый блок, а блок с ошибкой корректирующего кода ECC стирается. Во втором варианте блок с низким числом операций стирания вводится в использование путем копирования его данных в новый блок, стирания данных из блока и последующим вводом его в использование.

Defrag

Количество дефрагментированных файлов.

BadBlks


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

Errors

Ecc

Количество CRC ошибок, исправленых корректирующим кодом ECC.

Chksum

Количество CRC ошибок.

Device


Количество аппаратных ошибок устройства. Обычно свидетельствует о неполадках оборудования.

Примечание. Cтатистика по ошибкам в настоящее время не собирается, эти значения всегда равны 0.

Примеры:

Вывод информации о файловой системе. Если опция -d не указана, то утилита etfsctl автоматически использует /dev/etfs2.

etfsctl -i

etfsctl -d /dev/etfs2 -i

Форматирование пустой файловой системы:

etfsctl -d /dev/etfs2 -S -f -c

Запись файловой системы, созданной утилитой mketfs:

etfsctl -d /dev/etfs2 -S -e -w fsys.etfs -c

Сохранение файловой системы в файл. Стирание и восстановление файловой системы:

etfsctl -d /dev/etfs2 -r debug.etfs

etfsctl -d /dev/etfs2 -S -e -w debug.etfs -c

Стереть часть загрузочного раздела ETFS, не нарушая целостность программы-загрузчика:

etfsctl -d /dev/etfs1 -o 3M -l 6M -e

Считать часть загрузочного раздела ETFS:

etfsctl -d /dev/etfs1 -o 3m -l 2k -R /temp/raw.stuff