2

Я хотел бы спросить о возможности потери данных из-за выравнивания износа на зашифрованном разделе USB-накопителя / SSD-диска.

Давайте рассмотрим этот сценарий: я создаю раздел truecrypt на флешке (флешка / диск) и помещаю туда конфиденциальные данные. Другой незашифрованный раздел ntfs / ext4 того же диска используется для регулярного обмена файлами.

Когда я просматриваю разделы диска (например, parted, fdisk и т.д.), Зашифрованный раздел выглядит как неиспользуемый без файловой системы. Файловая система появляется только после расшифровки. Зашифрованный раздел должен выглядеть как когда-то написанный случайный беспорядок свободных секторов, когда он не смонтирован.

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

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

Где мои предположения неверны?

1 ответ1

1

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

Вы объединяете два разных понятия "свободные сектора", которые встречаются на разных машинах на разных уровнях. Сам диск работает над множеством внутренних "блоков"; используя эти блоки, диск поддерживает логическое представление дискового пространства в виде длинной последовательности байтов (условно разделенной на последовательные сектора). Диск внутренне разделит дисковое пространство по блокам с некоторой избыточностью, переупорядочением, динамическими копиями и другими интеллектуальными алгоритмами, которые вместе стремятся к распределенному износу, чтобы сбои происходили реже; это "выравнивание износа".

ОС видит только секторы, размер которых не обязательно равен размеру блоков (в действительности, блоки Flash имеют размер от 16 до 64 кБ, тогда как секторы традиционно имеют размер 512 байт), а выравнивание износа скрыто для ОС. , ОС использует некоторые сектора для кодирования структур файловой системы, и эти структуры помечают другие сектора как "свободные" или "используемые". С точки зрения ОС, сектор является "свободным", если он больше не содержит ничего интересного (например, он был частью файла, который был удален с тех пор); в то время как с точки зрения диска, блок является "свободным", если он никогда не записывался, или если алгоритм выравнивания износа уже скопировал его содержимое в другие блоки, и этот блок можно использовать повторно внутри.

Если в сектор был записан, то данные превратили его в блок SSD; если соответствующий файл удален, сектор "свободен" с точки зрения ОС (ОС позволит себе записывать в этот сектор содержимое другого файла), но для SSD это все еще данные, которые должны быть сохраненным - и сохранить это, это делает.

Просвещающая (или нет) особенность, которую следует учитывать, - это команда TRIM. Это команда SATA, с помощью которой ОС может информировать диск о том, что данный диапазон секторов считается "свободным" (ОС), что позволяет диску не сохранять их содержимое до следующей записи. Когда ОС TRIMmed некоторых секторов, чтение секторов напрямую (с устройства, минуя уровень файловой системы) теоретически может возвращать различные байты данных, в зависимости от того, как диск управляет вещами внутри. "TRIM" - единственный способ, с помощью которого "свободные сектора" из файловой системы и "неиспользуемые блоки" из физического носителя могут фактически касаться друг друга. В остальном это совершенно независимые понятия.

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