The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Тестирование файловых систем на Flash-накопителях в Linux"
Отправлено User294, 28-Окт-10 15:56 
> 1,2,4к это не страницы,

Читайте маны про то как флеш работает. Для начала хотя-бы что-то типа http://en.wikipedia.org/wiki/Flash_memory#Low-level_access

> а размеры логических блоков для ext*, с физическими секторами флеш-памяти никак не связанные

У NAND флеша, используемого в таких картах есть два понятия блоков: страницы и ERASE-блоки. Во первых, страницы. У реальных чипов они от 512 байтов до 4Кб (у современных чаще всего 2Кб IIRC). Это минимальный юнит который можно прочитать или записать. Если вам надо записать (в полностью стертый флеш) 20 байтов, по факту вы будете писать страницу, которая до кучи содержит и ваши 20 байтов. Запись в страницу без стирания возможна в общем случае 1 раз. Потому что операция записи как правило спускает биты из "1" в "0". А вот обратно в "1" спущенные в "0" биты выставить можно только стерев более крупный "ERASE BLOCK". При операции ERASE все биты большого erase-блока массово ставятся в "1". Erase-block (иногда его называют и сектором) как правило достаточно здоровая чушка, обычно что-то типа 64...256Кб, а его стирание - достаточно длительный процесс. В принципе, специализированные ФС которые оперируют с флешом напрямую могут избегать лишних ERASEов, метя отдельные страницы в erase-блоке как "устаревшие" путем спуска отдельных заранее оговоренных битов, что позволяет прописать одну страницу более чем однажды не проводя при этом стирание всего ERASE-блока. Эта тактика катит для NOR и SLC NAND. Для MLC все несколько хитрее - т.к. в одной ячейке хранится более 1 бита, логика произведения такого фокуса получается совершенно брейнфакерской и потому никто не заморачивается. Как правило в случае MLC специализированные ФС просто придерживаются правила что страница без стирания всего блока пищется 1 раз а определение того что она более не валидна делается иными методами. В случае SD/MMC карт, USB флех, SSD дисков и прочая - эта низкоуровневая механика сокрыта за контроллером, который обеспечивает равномерное размазывание записей, учет дефектных блоков NAND и коррекцию ошибок, эмуляцию привычных всем традиционных 512 байтных секторов из того что там есть по факту - ну в общем пытается показать что это как будто бы диск с 512-байтными секторами, не снабженный спецификой флеша. Разумеется это наглый гон :). Работать с таким "диском" именно 512-байтными секторами - очень неэффективно. Потому что запись 512 байтов потребует прочесть 2К (или сколько там) страницу, запатчить в ней 512 байтов и записать ее (а если совсем не повезло то еще и ERASE отпедалить, а это уже попадос на патчинг всей большой чушки в 64...256Кб). Ежу понятно что записать 2К одним куском в 2К страницу будет лучше чем записать то же самое как 4 раза по 512 байтов, сделав вместо 1 операции записи страницы аж 4 операции чтения-патчинга-записи. Классические утили и ФС об этом не сильно в курсе ессно, хотя в современных ФС предприняты попытки учесть это свойство флеша. Под оптимизированностью ФС для SSD что-то такое и понимают. Хотя геометрюи флеша за контроллером ФС не знает, но она может попробовать делать записи большими кусками. При этом упомянутая проблема чтения-патчинга-записи отпадает сама собой, случаи типа "скормили 4 записи по 512 байтов вместо одной на 2 кило" отстреливаеся самой ФС. Еще крайне желательно чтобы блоки ФС совпадали по своим границам с страницами и erase-блоками флеша. Иначе на запись одного блока ФС будет перетряхиваться больше страниц чем следовало бы. Скажем если страница 4Кб и блок ФС 4Кб то идеально если они совпадают. А если блок ФС попадет на пересечение страниц - запись блока портебует операций с 2-я страницами. Пролет в 2 раза - очевиден. Ну и в том же духе - если страница скажем 2Кб то хорошо если 4Кб блок лежит ровно в 2 страницах, а не в трех. Также хорошо если структуры выровнены на erase-block. Если слить фабричную ФС (FAT32) с юсб-флехи или карты - можно заметить что этот FAT скомпонован совсем не так как обычно делают тулзы ориентированные на магнитные диски. MBR вынесен в отдельный erase-блок, так что первые 128Кб или сколько там - только MBR. Это чтобы незавершенная перезапись FAT-а не привела к слету еще и MBR если питание в процессе опнется. И сами FATы и кластера удачно разложены по страницам и erase-блокам. Размеры фатов как правило кратны размеру erase-блоков, а кластера удачно распиханы по границам страниц. По этой причине фабричную ФС переформатировать стоит только если вы твердо знаете что хотите получить. Иначе есть риск обнаружить что скорость записи на носитель прилично просела по сравнению с фабричной ФС :)

> Чушь какая-то, в NAND чтение-запись-стирание всегда производится посекторно,
> вне зависимости от [хз чего]

А что в вашем понимании "сектор" для начала? Page или erase-block? А то чтение-патчинг-запись производится для обоих сущностей, стирание ессно только для второй из них. У вас какие-то сильно упрощенные понятия о том что такое флеш - судя по всему вы загнали оба понятия в одну сущность :P. Или вы верите в то что те 512-байтные сектора которые показыавет вам карта - они настоящие? :) А вот и фиг вам - это контроллер карты упирается по части трансляции логики привычных дисков в логику характерную для флеша. То что вы видите и то что есть по факту - две большие разницы.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру