Управление
транзакционной встраиваемой файловой системой
Синтаксис:
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
-
Pools
-
Counts
-
Errors
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
