Я знаю, что это сообщение об ошибке преследует так много людей, которые пытаются отформатировать USB-накопитель. Но когда я ищу его, все, что я получаю, это "инструкции". Но я очень хочу понять технические предпосылки по этому вопросу.

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

Во всех уроках, которые я читал, никто не упоминал "размер физического блока". Но, насколько я понимаю, я бы перевел это в "размер сектора на устройстве". Правильный?

Я думаю (я нигде не нашел подтверждения для этого), что «дескриптор USB-устройства» хранится где-то "контроллером". Он не является частью флеш-чипа NAND. Я предполагаю, что это работает так: моя ОС отправляет какой-то запрос GET на чип контроллера USB. Чип контроллера возвращает "дескриптор устройства". Этот "дескриптор устройства" содержит такую информацию, как размер поставщика И сектора (= размер физического блока ??).

Вот как моя ОС знает о размере физического блока. Но как же "Linux утверждает, что это 512" ??? Где хранится эта информация, как Linux приходит к этому требованию?

2 ответа2

0

Я думаю, что вы путаете физические характеристики флеш-чипа с настройками операционной системы и файловой системы.

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

Размер блока файловой системы - это наименьшая единица памяти, которую операционная система будет использовать для хранения файла или части файла. Это обычно указывается, когда носитель (например, флэш-диск) сначала форматируется, и может быть изменен, только если вы переформатируете носитель. Если вы выберете небольшой размер блока (а 512 байт - это небольшой размер блока), то при хранении файлов будет потрачено меньше памяти. С другой стороны, выбор большого размера блока означает меньшую фрагментацию большого файла при его сохранении. Обычно больший размер блока (скажем, 4096 байт) используется, когда том имеет большую емкость.

0

Краткий обзор (если вы действительно хотите понять все детали, вам придется ознакомиться со стандартами, которые все доступны онлайн):

Протокол USB для устройств хранения более или менее идентичен командам, которые использовались для устройств SCSI . Таким образом, у вас есть команды для чтения и записи блоков и куча других команд. Среди них - READ CAPACITY(16) (16 означает, что команда имеет длину 16 байт, более ранний вариант имел длину всего 10 байт), которая возвращает, помимо некоторой другой информации, как размер логических блоков, так и количество логических блоков. за физический блок.

Так вот, как ОС знает о логическом и физическом размере блока. Информация об ответе сохраняется во встроенном программном обеспечении контроллера, а не на носителе данных.

Теперь может случиться так, что для жестких дисков USB, которые состоят из SATA-накопителя и чипа моста USB-SATA, этот чип моста содержит ошибки и неправильно перенаправляет ответ команды READ CAPACITY (у меня есть диск с таким чипом, и я подтвердил получить другой ответ через SATA для того же диска). В этом случае, даже если жесткий диск правильно утверждает, что имеет физический размер блока 2048, чип моста искажает этот ответ, поэтому ОС возвращает идентичный физический и логический размер блока обратно. Так что это обычная причина для ситуации, когда сообщаемый размер блока неправильный.

Для флеш-накопителей USB ситуация снова другая: за мостом нет SATA-накопителя, контроллер и флэш-ПЗУ на USB-накопителе образуют плотный блок, а если контроллер лжет о размере физического блока, то он лжет по этому поводу - ничего не поделаешь. На самом деле, вы даже не будете сейчас врать, потому что, хотя флэш-ПЗУ имеет блоки стирания, которые оправдывают "физический размер блока", вы не знаете их размера.

Из вашего вопроса было не совсем понятно, говорите ли вы о жестких дисках USB или флэш-дисках USB - для современных жестких дисков можно предположить, что они имеют физический размер блока 2048, для флэш-дисков никто ничего не может принять, поэтому ваше требование "Размер физического блока составляет 2048" в этом случае немного сомнительно, если вы не можете объяснить, откуда вы это знаете.

И, наконец, «дескриптор USB-устройства» является частью самого протокола USB и совершенно другой вещью.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .