Аннотация
Анализ ошибок и технических сбоев — традиционно наименее раскрытая и наиболее интересная тема, которая как раз и показывает, насколько удачная была инженерная идея. Построив некоторое время назад сервер NAS из старого железа, мы начинаем анализ происходивших с ним отказов. В этой статье речь пойдет об отказах из-за загрузочной флэшки и их вероятных причинах. Даны рекомендации по выбору флэш-памяти. Отчасти применимо и к другим встраиваемым системам, например, бытовым видеорегистраторам.
Еще один NAS своими руками, часть 2: хорошие воспоминания*
*Рекламный слоган одного известного производителя памяти звучит «Good memories start here».
Практически все специалисты рекомендуют при выборе загрузочной флэшки не экономить и не использовать популярный бренд noname. Несмотря на корневую файловую систему FreeNAS версии 9 в режиме read-only, потребительские USB-флэшки компактного дизайна за полгода отказывали дважды, в обоих случаях примерно спустя пару месяцев эксплуатации. Причем оба использованных бренда, по мнению некоторых опрошенных представителей отрасли, вполне адекватные и уважаемые, в поставке откровенного брака незамеченные.
На фото: два вполне адекватных представителя крохотных флэшек на 8Гб и 16Гб
В чем же дело? Бесконечен ли ресурс чтения флэш-памяти? Попробуем разобраться.
Как это было
Система на базе FreeNAS работала хорошо в среднем два месяца. Затем переставали приходить ежесуточные отчеты по email, за ними отваливался веб-интерфейс администратора. Но сервер так просто не сдавался: SSH работал, и сервисы сетевых папок для пользователей мужественно держались до последнего, продолжная обслуживать Бизнес. Похвальная устойчивость.
Пока не отвалился доступ по SSH, в поисках причин отказа веб-интерфейса я по «ругани» в журналах веб-сервера нашел проблемную страницу (скрипт на языке python), где достаточно разборчиво увидел замены отдельных букв в тексте. Это трудно описать словами, но будто через строго одинаковые интервалы символов палец программиста проваливался между клавиш. Затем программист как будто съезжал с катушек окончательно, или же в панике выдергивал из клавиатуры свой застрявший палец, но осмысленный скрипт обрывался и перерастал в случайный набор байтов. Неужели bit flip? Оказалось, что другие пользователи наблюдали очень похожую картину. Перезаливка флэшки проходила без единой ошибки, скрывала дефект, и многочасовое тестирование утилитой им. Михаила никаких ошибок не выявляло. Ну просто идеальная флэшка. Самое обидное, что образец испорченных данных я таким образом затер, о чем сильно сожалею. Чертовщина какая-то.
Кто виноват?
Сразу оговорюсь, что мне пока не удалось найти инженерно подтвержденный ответ на вопрос №1 русской интеллигенции. Но я хочу развеять некоторые мифы и пояснить роль пресловутого человеческого фактора. По крайней мере, у моей проблемы есть решение, и я его привожу далее.
Что такое флэшка
Эту тему неплохо раскрыл популяризатор и Автор хабра Tiberius в статье Взгляд изнутри: Flash-память и RAM. Кто не читал — это действительно взгляд изнутри, браво! Я же попробую компактно изложить чуть с другого угла. Есть и менее инвазивные способы проникнуть внутрь флэшки, см., например, ресурс http://flashboot.ru/iflash/.
Итак, совремемнная бытовая флэшка — это крохотный компьютер, со своим процессором (микроконтроллером), небольшим объемом ОЗУ и ПЗУ, шинами данных, интерфейсом ввода-вывода и, собственно флэш-памятью типа NAND, обычно на отдельных микросхемах.
Микроконтроллер общается с хостом по шине USB, считывает, стирает, записывает блоки («секторы»), умеет вычислять контрольные суммы блоков, управляет износом своего хозяйства NAND-чипов (см. wear leveling) и делать массу других вещей, о которых мы, простые смертные, и близко понятия не имеем.
Что делает производитель флэшек
На мой взгляд, это очень простой вопрос: производитель собирает описанный выше «компьютер» из комплектующих, готовит софт (прошивку микроконтроллера), ставит на готовое изделие свое клеймо (бренд) и продает на рынке. Надежность флэшки зависит как от качества комплектующих, так и от прошивки. Иногда используются комплектующие собственного производства, иногда — стороннего (есть очень крупные заводы). Фирма веников не вяжет, как говорили когда-то. Но фирма очень дорожит своей репутацией, и потому веники микросхемы все-таки проверяет.
Есть расхожая версия, что производители микросхем (комплектующих) делят производимую продукцию одного типа на разные классы качества, именуемые на жаргоне «корзинами». Условно для развитых рынков и условно для всех остальных. Или для бизнеса и для потребительского использования. Или еще как-нибудь, но очень важно для потребителя (как дома, так и бизнеса) то, что изделие одного и того же вендора с одним и тем же кодом не обязательно означает одни и те же «внутренности». Поэтому покупать электровеники на eBay за полцены — это риск получить товар с микросхемами для рынков «третьего мира», несмотря на полное совпадение всех наружных кодов. По крайней мере, такого мнения придерживаются местные продавцы электровеников, вынужденные конкурировать с глобальной Интернет-торговлей.
Какая бывает флэш-память
Данную тему раскрывал пользователь alexzeynikov в своей статье Краткий экскурс в историю флэш-памяти, также можно посмотреть переводной пост 2007г. RAM, ROM, NAND, NOR — что значат эти заглавные буквы.
Бытовые флэшки используют память NAND. Если очень бегло взглянуть на рынок NAND флэш-памяти, то можно выделить следующие основные типы производства микросхем (в хронологическом порядке вывода на рынок): одноуровневые ячейки SLC, многоуровневые (де-факто двухуровневые) MLC и трехуровневый подвид TLC. Вокруг расшифровки терминов MLC и TLC, конечно, можно наломать копий, но в данной статье я отталкиваюсь от двухуровневой памяти MLC и трехуровневой TLC. Если «на пальцах», то это уплотнение информации за счет добавления новых слоев материала использования нескольких условных уровней сигнала (вместо двух 0 и 1) в одном микроэлектронном элементе (ячейке), чтобы втиснуть побольше хранимых битов в тот же физический объем и, главное, с примерно той же себестоимостью изготовления. Понятное дело, за плотность приходится платить надежностью хранения, а значит, и более сложными методами работы с ошибками. Что ж, в теории порой проще давить ошибки мощной «математикой», все зависит от параметров системы.
Кусок эволюции бытовой флэш-памяти. Слева направо: 2Гб, 8Гб, 16Гб, 32Гб
По сфере использования можно различить память для промышленных систем (космос, энергетика, высокотехнологичное вооружение и т.п.), для бизнеса (серверы, профессиональное оборудование) и бытовую (игры, музыка и прочие фотки на смартфоне). Кстати, автомобильные видеорегистраторы и профессиональные фото- и видеокамеры — это почти промышленное использование из-за практически непрерывной записи в довольно широких температурных диапазонах (но, к счастью, в основном без радиации). Так что не гонитесь слепо только за объемом флэшки для своего видеорегистратора, это не магнитола, но потенциально аргумент в суде, со всеми вытекающими. Возьмите профессиональное или промышленное изделие.
Какой ресурс перезаписи у флэш-памяти
Про флэш-память NAND хорошо известно, что она подвержена электрическому износу и обладает конечным ресурсом по циклам записи. Для качественной памяти SLC адекватным считается ресурс 100 тыс. циклов записи, его мы и видим у промышленных продуктов. Однако за все приходится платить, и объем хранимых данных у SLC невелик по сравнению с MLC и TLC при тех же габаритах и стоимости. Вот тут и начинается самое интересное: производители активно выводят на рынок все более ёмкие продукты, но как-то темнят по поводу их реальной электрической износостойкости, ведь это вредит продажам. При этом никто не отрицает, что ресурс у MLC меньше, чем у SLC, но больше, чем у TLC.
Так на сколько же? Кто-то называет следующие цифры.
Оценка ресурса перезаписи у различных типов NAND-памяти
Технология | Ресурс перезаписи, циклов |
---|---|
SLC 34нм | 100,000 |
MLC 34нм | 10,000 |
MLC 24нм IMFT | 5,000 |
MLC 20нм | 3,000 |
TLC 20нм | 1,000 |
Т.е. у суперкомпактной TLC (именно ее я ожидаю в microSD объемом 32Гб, но лучше уточнить у Dr. X-Ray) можно ожидать «всего-навсего» порядка 1000 циклов перезаписи. Однако читателю не стоит сразу паниковать, для хранения музыки и фоток на смартфоне обычно хватает и этого. Микроконтроллер любой современной флэшки должен распределить износ равномерно, так что «запиленных» и «упоротых» блоков не будет не должно быть, независимо от типа файловой системы. В теории, чтобы «сточить в ноль» флэшку 8Гб с ресурсом 1000 циклов, надо записать на нее суммарно порядка 8Тб информации. На практике, конечно, она помрет раньше, но если использовать хорошие бренды с качественными чипами и не заражать смартфон злым вирусом-убийцей флэшек, то все будет хорошо и долго.
Вот вам и инженерный парадокс: в теории старая, крупногабаритная флэшка на 2Гб (наверняка SLC) даже остатком(!) своего ресурса по надежности может заткнуть за пояс совершенно новую суперкомпактную «кроху» на 16Гб (наверняка изготовленную по MLC или TLC технологии). Хотя я бы не стал проверять этот довод на «боевом» сервере.
(FreeNAS || NAS4free) && NAND
Внимательный читатель, конечно, спросит: а какое это вообще имеет значение для FreeNAS, если его корневая файловая система монтируется read-only? Не в бровь, а в глаз.
Загрузчик FreeNAS требует 2Гб, из которых примерно 1Гб занимает корневая система, действительно монтируемая read-only. Кроме нее на той же флэшке создается небольшой (порядка 20Мб) раздел /data (read-write) для хранения настроек и полезной системной статистики, собираемой collectd (чтобы при перезагрузке не «забывать», скажем, историю расхода ОЗУ за месяц). Еще 1Гб не используется.
Кстати, родственник FreeNAS NAS4free работает немного по-другому. Он создает единый корневой раздел, где держит и систему, и настройки (предлагая при этом создать на флэшке еще и swap, но ненавязчиво). Системная статистика у NAS4free достаточно рудиментарная и при перезагрузках уже не выживает (да и нечему там особо выживать, но для многих это не критическое условие). Более важно то, что настройки (в виде XML) у NAS4free хранятся на read-only разделе, и при их сохранении требуется перемонтаж всей корневой файловой системы из read-only в read-write и затем обратно в read-only. Довольно неуклюже, но работает.
Промежуточный итог
- С учетом конечного ресурса флэш-памяти оба проекта FreeNAS и NAS4free — это хороший выбор, из-за файловой системы в read-only.
- Флэшки 2Гб для FreeNAS точно хватит с запасом, и никаких других разделов на флэшке создавать по дизайну нельзя (у NAS4free можно).
- У FreeNAS из-за сохранения статистики регулярная запись на флэшку все-таки ведется, хотя и малыми порциями (порядка 1Мб в час, или около 8Гб в год, но это очень приближенная оценка).
- У NAS4free никакой регулярной записи на флэшку не ведется, но за счет кастрированной системной статистики и совмещения ОС с настройками на одном корневом разделе (со всеми вытекающими: старт в read-only — в read-write — сохранение настроек — и снова в read-only, вплоть до необходимости перезагрузки).
- По внешним признакам непохоже, что наши отказы произошли вследствие износа флэшки записью, хотя это первое, что обычно приходит в голову.
Застрявшие пальцы программистаиспорченный веб-скрипт, расположенный на read-only разделе, как-то не очень увязывается с «упоротым» результатом записи. - Одно можно сказать достаточно определенно: при прочих равных, чем мельче габариты флэшки, тем меньше ее ресурс и надежность.
Миф о бесконечном ресурсе чтения флэш-памяти
Принято считать, что количество циклов чтения у флэшек бесконечно, однако в случае с памятью NAND это не совсем так, хотя бы в силу эффекта read disturb, описанного Jim Cooke в докладе The Inconvenient Truths of NAND Flash Memory (прямая ссылка; неудобный документ постоянно куда-то перекладывают, но поисковик должен выдать по названию доклада; см. слайды 19-20). Правда, данный эффект является электрически обратимым и должен устраняться совершенно прозрачно встроенным микроконтроллером, с помощью коррекции ошибок (см. далее) и переноса блоков. Меня насторожила фраза:
Disturbed bits are effectively managed with ECC
Это означает, что bit flip в NAND является ожидаемым и может исправляться «на лету» корректирующими кодами, но паниковать пока рано, ведь то же самое давно происходит в шпиндельных дисках, устройствах связи и не только.
Интересно, что в соответствии с тем же докладом, память NAND SLC имеет порядка 1 млн. циклов чтения, а MLC — 100 тыс. циклов. Микроконтроллер должен это учитывать и заблаговременно копировать рисковый блок на новое место, убирая эффект возмущения и освобождая старый блок. Контроль ошибок при этом должен следить за сохранностью информации, и если порча блока превышает возможности используемой схемы коррекции — флэшка должна выдавать ошибку чтения.
По ряду причин в этой статье я намеренно избегаю явного описания «полновесных» дисков SSD, но предполагаю, что в них происходит нечто подобное, на других скоростях, с накрученной логикой и нафаршированной периферией. И, раз уж затронули SSD, напомню про пресловутые 25% свободного места (Вещи, которые не нужно делать с твердотельным накопителем (SSD), или Exploring the Relationship Between Spare Area and Performance Consistency in Modern SSDs).
Тем не менее, лично у меня напрашивается только одно объяснение синдрома застрявших пальцев программиста bit flip, описанного выше: а мог ли это быть как раз эффект read disturb, прорвавшийся сквозь контроль четности из-за бага в прошивке микроконтроллера или чрезмерного упрощения логики? Это и есть наиболее провокационный вопрос данной статьи.
Кстати:
Кто и как контролирует ошибки
Внимание: ECC иногда расшифровывается как Elliptic Curve Cryptography, но в данной статье это Error Correction Code.
Целостность данных — забота микроконтроллера, он использует для этого специальные алгоритмы кодирования. Как известно, разрядность (длина) контрольной суммы влияет на максимальное количество выявляемых (и иногда исправляемых) ошибочных битов. Вспомним RS232: один дополнительный бит четности может обнаружить, был ли в блоке один ошибочный бит. Но два ошибочных бита уже пройдут незамеченными, для них нужно больше контрольных битов и более умный алгоритм. И так далее: чем умнее алгоритм и чем больше «запасных» битов закладывается в сообщение, тем лучше способность системы к устранению ошибок без пересылки (копирования) всего сообщения. На помехозащищенном кодировании стоит, как говорится, весь наш информационный мир.
Обратимся к документу TN-29-17: NAND Flash Design and Use Considerations (ссылка) одного из производителей микросхем NAND, найдем рекомендацию разработчикам флэшек (т.е. «сборщикам», которые эти чипы потом используют в качестве комплектующих):
Use More Powerful ECC:
Use a more robust ECC algorithm than is specified by the NAND Flash data sheet and set a threshold for the maximum number of bits allowed to go bad under the ECC correctable limit. When the threshold is met, move the data to another block within the NAND Flash device and begin reading from the new location.
Т.е. как обычно, есть минимальные и рекомендованные требования производителя чипов к сложности (дороговизне) микроконтроллера, выбор между которыми делает разработчик на основе, понятное дело, режима использования памяти. Например, для промышленных задач нужно делать дорогую логику с длинным кодом ECC, а для бытовых задач можно обойтись и кодом попроще, и чипами подешевле.
Находим наугад еще один документ, это вики-страничка Texas Instruments Raw NAND ECC, в которой для MLC рекомендуется использовать 4-, 8- или 16-битные контрольные суммы на каждый 512-байтный блок:
Why is ECC required for NANDs?
Data stored in NANDs can get corrupted (randomly). There is an upper limit on the number of error per byte depending on the NAND process and the technology. SLC NANDs have less ECC requirements than MLC NANDs. The NAND datasheet gives the ECC requirement for the NAND device. For SLC NANDs, 1/4bits per 512 bytes are common currently. For MLC, devices with 4/8/16 bits per 512 bytes ECC requirements are in the market.
Там же и ссылки на популярные алгоритмы: однобитные ошибки «лечатся» кодами Хамминга, с мультибитными ошибками принято бороться с помощью кодов БЧХ, а где-то посередине находятся популярные в индустрии хранения данных коды Рида-Соломона (это частный случай БЧХ). Вот еще один найденный наугад документ на эту тему: What Types of ECC Should Be Used on Flash Memory? (ссылка).
Но не будем слишком долго витать в облаках абстрактной алгебры, нам пора на твердую землю инженерии. Если в блоке оказалось слишком много «упоротых» битов, если производитель памяти сэкономил и использовал более дешевый микроконтроллер, более простой алгоритм коррекции ошибок или менее квалифицированных разработчиков, то шансы «тихой» порчи данных (т.е. без явных отказов чтения) в теории возрастают. Не забываем, что не Боги горшки обжигают пишут код прошивки.
Я использовал бытовую флэшку для размещения системы встраиваемого типа, которая может читать определенные блоки очень интенсивно (особенно при дефиците ОЗУ, как у меня). Однако потеря данных в результате эффекта read disturb — это слишком серьезное обвинение, которое требует более тщательного исследования. А пока я могу вывести еще один критерий оценки надежности флэшки: при прочих равных чем длиннее ECC, тем лучше.
Что делать?
Ответ на вопрос №2 русской интеллигенции, как ни странно, оказалось найти проще.
Спрашивается, почему произошло два идентичных отказа? После первого отказа возникло сильное желание сразу перейти на промышленную флэш-память (надо-то всего 2Гб, из которых используется половина), но найти ее с привычным разъемом USB оказалось непросто: в продаже оказались либо штырьковые (например, Transcend TS2GUFM-V), либо Compact Flash, либо вообще Disk-on-Module с интерфейсом IDE. И поскольку мой квест на промышленную флэш-память ушел в неверном направлении, я и на третий раз купил потребительскую USB-флэшку, но уже не «кроху», а «стандартного» размера с брендом Kingston.
Прикидывая другие варианты, на всякий случай я даже решил подготовиться к переходу на промышленный Compact Flash, по канонам практик Крепсондо загрузив систему в тестовом режиме с кардридера (читатель, будь осторожен, он может глючить сам по себе). И, кстати, если уж говорить про диски SSD, то для простого загрузчика это относительно дорого и тоже, как ни странно, не панацея.
Вверху: кроха на 8Гб; внизу: Kingston на 8Гб
Полноразмерная флэшка Kingston на 8Гб в результате отработала без нареканий месяца три, а один продавец в магазине сказал, что уже, дескать, год бутылки открывает такой же, и ничего. Но для более крепкого сна я все-таки выбрал другой вариант, о котором расскажу прямо сейчас.
Знакомьтесь: промышленная память
Представитель промышленной памяти TS2GUFM-V
В итоге оказалось (ссылка), что штырьковый интерфейс «мама» у того самого промышленного изделия TS2GUFM-V является двухрядным 10-контактным разъемом с шагом 2.54мм (1/10"), пригодным в т.ч. для посадки в разъем «фронтальных» USB-портов на вполне бытовой материнской плате (используется 4 из 10 контактов). Ура, мой квест завершился.
Разъемы «фронтального» USB-кабеля и флэшки изображены с позиционным соответствием
Итак, TS2GUFM-V — это модуль 2Гб промышленной флэш-памяти с вертикальным корпусом (буква V), снабженный даже защелками от выпадания из разъема при ударах и вибрациях. Так что если читателю вдруг понадобится встраивать ОС в самонаводящийся молоток с ЧПУ, то это неплохой вариант. Есть, правда, горизонтальное исполнение TS2GUFM-H, но оно еще более брутальное (бескорпусное и крепится уже тремя болтами), в продаже встречается реже, а сажать его на обычную материнскую плату еще сложнее. Конечно, нет ничего невозможного, все зависит от желания, смекалки и конструкции корпуса.
Характеристики изделий TS512M~4GUFM-V
Параметр | Значение |
---|---|
Технология | SLC |
Объем | от 512Мб до 4Гб |
Ресурс записи | 100,000 циклов |
Скорость чтения | до 33Мб/с |
Скорость записи | до 20Мб/с |
Разрядность ECC | 8 |
Год вывода на рынок | 2006 |
Цена | около €25 |
Изделие, как можно увидеть, совсем не новое, но для промышленных вариантов и 10 лет порой не возраст, а цена со временем может упасть с военных до почти бытовых значений (напомню, что за те же деньги я истратил впустую две обычных флэшки, как в известной пословице). Для сравнения: у бюджетных бытовых флэшек скорость записи всего около 5Мб/с, и TS2GUFM со своими 20Мб/с — отличное решение по канонам философии Крепсондо. Круче только Compact Flash для профессиональных фотокамер: когда они «стреляют» очередями RAW-формата, мало точно не покажется. TS2GUFM-V, правда, закрывает сразу два разъема USB, используя при этом один, но это при желании поправимо с помощью переходников.
Для получения полетного задания заливки образом загрузчика надо подключить этого жесткого вояку к сисадминскому ноутбуку, разъемы USB которого промышленной суровостью не отличаются. Читатель может использовать любой удобный вариант (попробуйте поискать картинки по строке «переходник USB 10pin», узнаете много нового). Но по странному стечению обстоятельств в моем старом сисадминском сундучке обнаружились клещи-кримпер (видимо, что-то такое ими я уже раньше делал, только не помню, что). Кримпером я и обжал штыревой низковольтный переходник из кабеля-инвалида, пострадавшего от наезда колесного офисного кресла.
Зачистим и обожмем кримпером
Защитим термоусадкой
Возьмем штыревой разъем 2.54мм (хотя можно и скрепкой)
Проверим, как сидит
Флэшка на кабеле готова к заливке
Залив образ FreeNAS обычным способом, установим нашу промышленную флэшку в разъем для «фронтальных» USB-портов на материнской плате. Не перепутайте контакты, на изделии нет «защиты от дурака». Контакт №9 должен попасть на место «спиленного» штырька.
«Распиновка» разъема
ВНИМАНИЕ: габариты нашего сурового изделия TS2GUFM-V могут затруднить его посадку в разъем из-за электронных деталей, проводов и других разъемов, торчащих там и сям даже в весьма просторных корпусах «башенного» типа. Например, протиснуть TS2GUFM-V в разъем USB4_5 на материнской плате ASRock P4i65G между бортовыми аудио и LAN без разрушения оных оказалось никак невозможно, поэтому отправляем ее на запасной разъем USB67. Но и там пришлось уворачиваться от банки конденсатора и штекера корпусной пищалки, торчащих почти вплотную к заветным штырькам.
Поэтому читателю, особенно при использовании компактных корпусов (например, известной марки Харлампий-Панкрат MicroServer), надлежит внимательно изучить сам факт наличия 10-штырьковых «посадочных» разъемов, а также окружающую их обстановку. В случае чего принять меры в виде переходников (google на картинки «переходник USB 10pin»). Или выбрать другую флэшку.
Флэшка села в разъем и заработала
Выводы
- Электрофизические процессы, происходящие внутри твердотельных накопителей, далеко не так однозначны и просты, как кажется снаружи (спасибо, Капитан Очевидность).
- Надежность флэш-памяти зависит как от технологии изготовления памяти NAND (SLC, MLC, TLC и т.д.), так и от сложности микроконтроллера, а при производстве можно экономить как на первом, так и на втором.
- Грубо оценить надежность флэшки можно и по длине контрольной суммы (ECC, если производитель ее публикует): при прочих равных чем она длиннее, тем лучше.
- Для систем, которые ведут интенсивную запись, требуется флэш-память промышленного типа.
- Для серверных задач не следует использовать суперкомпактные флэшки-крохи, изготовленные по технологиям MLC (TLC) с повышенной плотностью.
- Использование дешевых флэшек малоизвестных брендов для загрузки ОС противопоказано в принципе.
- Для FreeNAS подойдут «полноразмерные» флэшки хороших брендов, а еще лучше — промышленные изделия на микросхемах SLC емкостью от 2Гб.
Продолжение следует
В следующих частях раскроем дальше тему отказов, затронем корпусную инженерию, системный тюнинг, а также покажем некоторые приемчики юниксового кунг-фу для начинающих.
Ссылки
www.wikipedia.org/wiki/Flash_memory#NAND_flash
www.wikipedia.org/wiki/Wear_leveling
www.wikipedia.org/wiki/Single-level_cell
www.wikipedia.org/wiki/Multi-level_cell
www.wikipedia.org/wiki/Triple-level_cell
www.wikipedia.org/wiki/Error_detection_and_correction
www.wikipedia.org/wiki/BCH_code
www.pcper.com/reviews/Editorial/Taking-Accurate-Look-SSD-Write-Endurance
collectd.org
www.transcendusa.com/support/dlcenter/EDM/UFM-EDM.pdf
www.micron.com/-/media/Documents/Products/Presentation/flash_mem_summit_jcooke_inconvenient_truths_nand.pdf
pt.slideshare.net/Flashdomain/tn2917-nand-flash-design-and-use-considerations
processors.wiki.ti.com/index.php/Raw_NAND_ECC
www.spansion.com/Support/Application%20Notes/Types_of_ECC_Used_on_Flash_AN.pdf
forums.freenas.org/threads/data-corruption-on-usb-flash-drive.15505/#post-80954
forums.freenas.org/threads/intel-passed-power-loss-protected-ssd-tests.17168/
mikelab.kiev.ua/index_en.php?page=PROGRAMS/chkflsh_en
lifehacker.ru/2013/06/26/veshhi-kotorye-ne-nuzhno-delat-s-ssd/
www.anandtech.com/show/6489/playing-with-op
flashboot.ru/iflash/
Автор: teleghost