LINUX.ORG.RU
ФорумTalks

exFAT


0

0

Just for fun реверс-инженерю exFAT и добился определенных успехов.
Расскажу про нее.

1) exFAT не стоит даже сравнивать с JFFS2.
Потому что "exFAT - файловая система для флешек" - это сказки маркетологов Microsoft. Это обычное расширение FAT (несовместимое с оригиналом), которое устранаяет недостатки FAT, но не более.
Она не ведет какого-либо учета кол-ва записей сектора и не пытается сохранить жизнь флешки. Microsoft просто плевать на это.

2) exFAT вроде и имеет поддержку ACL, но их пока никто не видел (и какой смысл в них на сьемном носителе?). Журналирование вроде существует (на манер TFAT - просто изменяется одна копия FAT, а вторая остается старой до конца транзакции), но в десктопной винде включается только правой реестра.

3) А так вроде довольно простая организация фс на манер FAT, но с маской свободного места. Таблица кластеров (элемент - или номер следующего кластера файла или признак конца файла) также присутствует.

★★★★★

Ответ на: комментарий от AiFiLTr0

> не пытается сохранить жизнь флешки

читать умеешь?

anonymous
()
Ответ на: комментарий от AiFiLTr0

Так или иначе поддержка в Линукс нужна.
Но правовой вопрос смущает.
Наверное exFAT запатентована. ФС запатентована как "способ хранения инфы на диске". Вроде-бы этот патент программ не касается, но запись на флешку можно расценивать как использование этого способа хранения.

Потому как-то хз насчет read/write дров.

Pavval ★★★★★
() автор топика
Ответ на: комментарий от Pavval

А кого интересуют (мягко выражаясь) софтверные патенты за пределами Пендосии?

anonymous
()
Ответ на: комментарий от generatorglukoff

Что мешает запатентовать фс в Европе?
Вроде не прогу патентуем..

Pavval ★★★★★
() автор топика
Ответ на: комментарий от generatorglukoff

Хочешь помочь??
Хм.. я даже не знаю..

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

Вот пока и все на сегодня. Есть еще прилично вещей, которые я не пока понимаю. И я пока не заходил дальше корневого каталога.

Pavval ★★★★★
() автор топика
Ответ на: комментарий от Pavval

1. чем ты создал exFAT и чем его модифицируешь? если винмобайл, то я помочь не смогу, нет девайса.
2. вики/форум/страница/список рассылки существуют?

generatorglukoff ★★
()

> Она не ведет какого-либо учета кол-ва записей сектора и не пытается сохранить жизнь флешки.

Меня тут месяца два назад опустили. Суть в том, что сие уже (теперь) делается в самой флэшке:

<<USB флеш-носители и карты памяти, такие как SecureDigital и CompactFlash имеют встроенный контроллер, который производит обнаружение и исправление ошибок и старается равномерно использовать ресурс перезаписи флеш-памяти. На таких устройствах не имеет смысла использовать специальную файловую систему и для лучшей совместимости применяется обычная FAT.>>

<<Removable flash memory cards and USB flash drives have built-in controllers to perform wear-levelling and error correction so use of a specific flash file system does not add any benefit. These removable flash memory devices use the FAT file system to allow universal compatibility with computers, cameras, PDAs and other portable devices with memory card slots or ports.>>

anonymous_num_0
()
Ответ на: комментарий от anonymous_num_0

Не видел этого текста.
IMHO или контроллер должен знать об используемой ФС, или он не сможет производить уравновешивание перезаписи по секторам флешки.

Pavval ★★★★★
() автор топика
Ответ на: комментарий от anonymous_num_0

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

wfrr ★★☆
()
Ответ на: комментарий от Pavval

Ненужно, дето читал про схему работы:

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

wfrr ★★☆
()
Ответ на: комментарий от wfrr

Не понимаю.

Допустим, нам надо обновить инфу в секторе А.
Без мозгов это выглядит так: 1) стереть А, 2) записать А.

Как ты предлагаешь сделать?
Как я понял:
1) стереть А (нифига, ведь его при след. записи сотрут?)
2) найти Б, в который мало писали.
3) записать в Б.
4) через функциональность контроллера поменять местами А и Б.

И что? Нормальное состотяние сектора флешки - в него что-то записано. Откуда можно узнать, свободен ли сектор "Б" или он используется ФС и содержит полезные данные?

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

Pavval ★★★★★
() автор топика
Ответ на: комментарий от Pavval

1) туда перемещается инфа с малоиспользуемого сектора на который запишется текущий блок

соотв. знание используется ли б совсем ненужно и вообще яндексуй wear leveling

wfrr ★★☆
()
Ответ на: комментарий от Pavval

1. то, что видит ОС != то, как оно реально расположено.
2. и на гиговой флешки может быть до 2х гигабайт объема, однако четверть битая, четверть служебная, остальное - используемая.
3. однако, если флешчип без контроллера, то всю фигню по wear leveling (кстати почитай в кивипедии) должна делать ОС. через спец. фс (jffs итд)

generatorglukoff ★★
()
Ответ на: комментарий от Pavval

>IMHO или контроллер должен знать об используемой ФС, или он не сможет производить уравновешивание перезаписи по секторам флешки.

Я фигею над вами - хакеры. Видимо smart жестких дисков сплошь и рядом знает об фс даже тех которые еще никто не придумал на тот момент когда они были произведены. Включи мозги - какер.

anonymous
()
Ответ на: комментарий от anonymous

Пожалуйста, сходи на _любой другой сайт_ с дебилами и там среди них поумничай. Про смарт все давно знают.

Только реалиация через избыточность - идея странная, когда можно это сделать нормальным способом без нее (JFFS2 & Co).

Pavval ★★★★★
() автор топика
Ответ на: комментарий от kaktyc

Спасибо! Искал такое, но не видел. Буду глядеть.

Pavval ★★★★★
() автор топика

> Она не ведет какого-либо учета кол-ва записей сектора и не пытается сохранить жизнь флешки.

Флешки сами это делают. Почитай доки на JFFS на тему почему нельзя в нее отформатировать CF или SD/MMC.

Shaman007 ★★★★★
()
Ответ на: комментарий от Pavval

Все, что ему надо знать, что вот этот сектор пишется. Все.

Shaman007 ★★★★★
()
Ответ на: комментарий от Pavval

>сходи на _любой другой сайт_ с дебилами

Фига се как ты какер всех опустил разом тут, но в любом случае на другом сайте _таких_ дебилов как ты не найти нигде. Избыточность давно уже не излишество во времена когда ssd диски по размеру скоро догонят обычные hdd с магнитными носителями.

anonymous
()
Ответ на: комментарий от Pavval

>> exFAT-fuse

> правовой вопрос смущает.

Не знаю как у нас и вас (прецедентов, вроде, не было), а В США для этого практикуют "clean-room reverse engineering". Вначале один человек (или коллектив) описывает как система работает, затем другой пишет модуль для fuse.

question4 ★★★★★
()
Ответ на: комментарий от Pavval

> 1. работаю под виндой в висте.

Это ИМХО круче признание, чем "я 321" :))

Deleted
()
Ответ на: комментарий от Pavval

> и которая пытается ее прочитать на манер драйвера.

Дампы в студию.

/me сделал в vmware раздел ntfs размером 200 метров и издевался над ним, пока свою прогу писал. Очень удобно - всегда видно, что записано на диске + всегда можно сделать снапшот, который потом и сравнивать с другими. Выкладывать удобно - 200 метров нулей хорошо жмутся и могут быть легко смонтированы в другой виртуалке.

EmStudio
()
Ответ на: комментарий от anonymous_num_0

> Меня тут месяца два назад опустили. Суть в том, что сие уже (теперь) делается в самой флэшке

Ага, только:

1. Не на всех

2. Заявлено != везде реализовано

EmStudio
()
Ответ на: комментарий от Pavval

> IMHO или контроллер должен знать об используемой ФС

man транслятор

сектор А помечается как "свободный", сектору дается адрес сектора А, в который и пишется инфа.

Кстати, в fat32 есть счетчик "последний использованный кластер", который бы по идее мог служить для уменьшения фрагментации/распределения использования диска. Только я в нем всегда видел 0, такое впечатление, что его забыли реализовать.

EmStudio
()
Ответ на: комментарий от EmStudio

+1

Вот бы еще кто дровишки на принтера "Пушка" написал, ведь ЮСБ мона перехватывать.

anonymous
()
Ответ на: комментарий от EmStudio

В exFAT аналога такому счетчику нет. Виндовый драйвер очень интересно пишет новые файлы - пример:

1. Был файл А в 6-ом кластере.
2. Его удалили. Отметка в каталоге осталась - exFAT сохраняет инфу про удаленные файлы.
3. Создаем новый файл на 2 кластера размером. Винда пишет первый из них в 7-ой (после удаленного - довольно логично), а второй - в 6-ой (гениально!).

А если удаленных файлов много, да еще между ними свободное место - вообже жесть выходит. Что-то в духе 2-5-7-9-1-3-4-8-10.

Зачетно в общем.

Pavval ★★★★★
() автор топика

1. Как раз Microsoft флэшки бережет - exFAT работает крупными блоками данных, и на нем нельзя делать ReadyBoost (т.е. как раз заточено всё под не частые операции записи). Ни одного тестирования, что JFFS2, сделанного производителем флэш-памяти, и говорящее об её эффективности, нет. А слова афтара, про супер-пуперность, аргументом не являются - мало ли что он считает. Как Apacer или Kingston на коробке с флэшкой напишут в списке файловых систем JFFS2, а ещё лучше - укажут, что форматируя в неё, работать всё будет лучше - так и увидим, а пока - пустозвонство с одной стороны и вполне четкие и эффективные меры у Microsoft с другой.

2. То, что автор не видел ACL, и не знает, зачем они на съемном носителе (!!!!!), говорит только о глубине изучения им проблематики. На уровне changelog к vista sp1, где exFAT и появилась, афаик. :).

3. Журналирование там существует, и другое, чем фантазирует автор. Есть в документации на сайте MSDN.

Вообще, автор - лошок, потому что все три пункта - из документации к exFAT. Открытой. Никакого reverse-engineering для этого не надо - идёшь в википедию и удовлетворенно видишь, что всё, что упомянул автор, там есть. Или в MSDN. И нету ничего более, что подсказывает, что автор так и действовал. :)))))

anonymous
()

В общем, ЛОР подтверждает свой уровень.... :))))).... Реверс-инженеры, блин, которые ничего, окромя того, что в документации публичной, не нашли. Как можно провести реверс-инжиниринг и при этом так и не выяснить, есть журналирование или нет???!!!!! Фарш. :))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

anonymous
()

Кстати, если уж совсем так копнуть, то с JFFS2 сравнивать действительно смысла нет - JFFS2 жрёт флэшки довольно шустро. Причина - наличие механизма фонового garbage-коллектора, который, по сути, бестолковый - потому что у флэшки он не нужен так же, как и дефрагментатор, а вот зато ресурс носителя он жрёт. Плюс сжимать она пытается - а это опять и бестолково (контент на флэшках обычно и так сжатый - видео, аудио, архивы), и жрёт ресурс носителя и процессор. Афаик, JFFS2 признано УГ даже авторами, и не-УГ сейчас считается LogFS.

anonymous
()
Ответ на: комментарий от anonymous

1. "exFAT работает крупными блоками данных" - это тебе кто сказал??? Где ты этот бред достал?

2. В Vista SP1 ACL нету, хотя он и поддерживается в самой ФС. Потом обещали задействовать. Не смог воспользоваться - вот и пишу, что не видел.

3. Читал, и в том числе MSDN (именно про журналирование). А про википедию - если ты ее считаешь адекватной источником информации, то это говорит о твоем уровне. Про exFAT там написано меньше, чем, к примеру, было в презентациях Микрософт 2 года назад.

4. Кончай троллить, не зная тематики.

Pavval ★★★★★
() автор топика
Ответ на: комментарий от Pavval

> IMHO или контроллер должен знать об используемой ФС, или он не сможет производить уравновешивание перезаписи по секторам флешки.

AFAIK сделано это примерно так: помимо "видимой" и адресуемой области секторов, у флешек есть некий внутренний небольшой буффер-очередь, скажем секторов 128, так что при перезаписи какого-либо сектора, перезаписываемый сектор добавляется в конец очереди, а из головы очереди берется сектор, который и используется для хранения данных. Таким образом, если записать допустрим в 13-ый сектор что-то, и потом больше его не трогать, то он так и останется ни разу не тронутым. Остальные же, регулярно используемые сектора, -- будут постоянно менятся местами. Конкретная схема может быть немного иной, иметь какие-то специфичные usage-counter-ы для каждого из секторов, но общая картина -- примерно такая.

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

quarck
()
Ответ на: комментарий от Pavval

1. Сектора > 1M - это ща не крупные блоки данных? Хуясе. На флэшках сейчас обычно FAT, и как - там крупнее, да?.... :))))

2. Так и пиши - "есть в технологии, но я не смог воспользоваться". Не скромничай. Ты пишешь, что "никто" не видел. Пиши за себя. Ты - не смог. :)

3. Я написал, что "Журналирование там существует, и другое, чем фантазирует автор. Есть в документации на сайте MSDN.". Как найдешь в этой фразе про википедию - обязательно напиши. Это резко поднимет твой уровень - к примеру, в глазах любителей НЛО, эльфов и телепортации. В моих уже никак, так что не обижайся. :)

4. Главное, чтобы ты хорошо в школе учился, чувак. Ну и "реверс инжинирил" хотя бы на уровне пересказа не части документации с довираниями, а всей.... ;))))))

anonymous
()
Ответ на: комментарий от anonymous

1. Ты у нас форматишь флешки с кластерами под 1 Мб?
И вообще, чем же большие сектора круты?? Я вот не пойму) Что ты вообще выиграешь?

2. А ты типа можешь сейчас увидеть ACL? В реальном использовании никто не видел. Только не ори про Win7 - это бета.

3. Я ЧИТАЛ документацию MSDN.

4. Просто закрой рот и отключи клаву. В отличие от тебя я не трепался, а реально реверсил. Ту функциональность, которую я вижу сейчас под Vista SP1 без правки реестра и т.д..

Реверсил самостоятельно, без оглядки на что-либо прочитанное. То, что я их не выложил здесь, не повод для всяких школьников считать, что я опираюсь только на опубликованную информацию. Завершить дело (дойти до момента, когда можно будет создать r/w двайвер) - 1 неделя. Но ввиду наличия готового драйвера предпочту разобраться и улучшить его.

Pavval ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.