Что лучше для флэш-памяти заполнить 1 вместо 0?

395
AaronD

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

cat /dev/zero > ~/zeros sync rm ~/zeros 

Для механического / магнитного накопителя это просто записывает 0 во все свободное пространство за одну операцию на бит, но для твердотельного / флэш-устройства, такого как SD-карта или SSD, запись 0 фактически занимает две операции на бит:

  • Массовое стирание, которое устанавливает целый блок на все 1
  • Индивидуальная запись, которая возвращает выбранные биты в 0

Итак, заполняя твердотельное / флеш-устройство цифрами 1 вместо 0, как этот ответ описывает, как это сделать, могу ли я ускорить процесс или продлить срок службы устройства, избегая второго этапа процесса записи?

0
Какова цель? Ramhound 7 лет назад 0
@Ramhound: в основном вопросы в конце. В частности, я делаю много проб и ошибок, пытаясь построить Pi так, как я этого хочу, и много бью в процессе SD-карту. Подкрепление частичных успехов, затем совершенно другой подход и т. Д. Я не думаю, что конкретное приложение было уместным, за исключением того, что я много пишу в него. AaronD 7 лет назад 0
Я думаю, что стирает просто отсоединить записи с расположениями файлов или таблиц разделов и оставить данные нетронутыми. Если во время восстановления накопитель решил не делать запись, потому что бит оказался правильным, я бы предположил, что это особенность установщика или контроллера накопителя, а не то, как работает флэш-накопитель. Louis 7 лет назад 0
@Louis: Да, `rm `делает это, но я использую` dd` для резервного копирования / восстановления, а не файл-копию, которая пропускает вещи, которые не являются файлами. Смысл файла полного диска, который немедленно удаляется, состоит в том, чтобы установить для всего свободного места одинаковое значение, чтобы образ диска можно было эффективно сжать. Например, ~ 600 МБ для SD-карты емкостью 8 ГБ и ~ 2 ГБ. Несмотря на то, что размер файла составляет всего ~ 600 МБ, его необходимо восстановить на карту объемом 8 ГБ или более. В целом, при резервном копировании нужно прочитать кучу одинаковых значений, независимо от того, как это работает, за исключением того, что не так много запасных блоков. AaronD 7 лет назад 0
Ваш вопрос не ясен, поэтому проясните его, какова ваша конечная цель записи 0 или 1 на устройство? Ramhound 7 лет назад 0
@Ramhound: Я не уверен, что я сильно изменился, но я все равно перефразировал это. Это лучше? AaronD 7 лет назад 0
Большинство твердотельных накопителей имеют массовое стирание, которое настолько быстрое, что будет лучшим решением, чем dd. Ramhound 7 лет назад 0
@ Ramhound: я не хочу стирать ВСЁ !!! Просто установите свободное пространство в легко сжимаемый шаблон (все то же значение), чтобы я мог * прочитать * его с помощью `dd` и сжать его. AaronD 7 лет назад 0
(хорошо, так что я использую слово «объем» в более общем смысле в вопросе, чем то, что использует спецификация; изменив это) AaronD 7 лет назад 0
Вы понимаете, что SSD имеют ограниченное право записи. Есть ли у вас какие-либо тесты, которые на самом деле показывают, что ваши типичные действия будут полезны для SSD? Ramhound 7 лет назад 0
@Ramhound: Да, это только половина вопроса - избегать реальных физических записей по конкретному значению, которое я использую, учитывая, как работает технология. Кроме чтения всей 8 ГБ SD-карты в сжатый образ 0,6 ГБ, восстановления всего 8 ГБ и запуска его без ошибок, нет, у меня нет эталона для моего типичного действия по заполнению диска одним и тем же значением. Лично я считаю, что это довольно хороший ориентир. AaronD 7 лет назад 0

2 ответа на вопрос

0
Journeyman Geek

Это похоже на проблему XY - правильный ответ, возможно, вообще не имеет значения, но имеет смысл сделать это позже.

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

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

Также стоит подумать, правильно ли я помню, noobs все равно работает с образами дисков на диске fat32, и если да, то вы можете просто смонтировать SSD, скопировать образ диска внутрь и выполнить там эти операции. Затем замените образы дисков по мере необходимости. Или просто скопируйте содержимое диска и сожмите его «по мере необходимости» и замените содержимое старого диска новым.

Ооо, это звучит привлекательно! Я бы никогда не подумал об этом! Итак, на ноутбуке Lubuntu, как я могу смонтировать несжатый файл образа с несколькими разделами (созданный с помощью `dd` из всей физической карты) и заполнить его свободное место сжимаемыми материалами? AaronD 7 лет назад 0
Ага. Я полагаю, что kpartx -a -v backup.img добавит ряд устройств в / dev / mapper, которые затем можно будет смонтировать, как если бы они были физическим диском. Journeyman Geek 7 лет назад 0
Сначала мне нужно было установить его, и он должен работать как sudo, но затем он смонтировал необработанный образ SD, как если бы я вставил физическую карту. К сожалению, структура каталогов, кажется, только для чтения. (любая попытка создать файл, даже как sudo, приводит к `Permission denied`). На man-странице упоминается опция только для чтения (-r), но я ее не использовал; пока только скопировал / вставил ваш, с backup.img изменился на то, что он есть на самом деле, конечно. AaronD 7 лет назад 0
егГ. Я обычно использую это только для чтения - вы рассматриваете вещи в / dev / mapper как устройства, верно? так что вам нужно смонтировать их, чтобы фактически работать на них, вы можете запустить dd на них, как устройство sdx ... Journeyman Geek 7 лет назад 0
Я не уверен, что ты имеешь в виду. Я уверен, что мне многое не хватает, но из того, что я на самом деле вижу: я получаю новую закладку / быструю ссылку в браузере файловой системы (PCManFM) для каждого раздела изображения, как при подключении карта в. Я нажимаю на одну, ее значок извлечения появляется так же, как и для физической карты, и я могу читать ее и изменять существующие файлы; Я просто не могу создать файл, даже с sudo. AaronD 7 лет назад 0
о, это странно. Похоже, это автоматически монтирует их с нечетными разрешениями. попробуйте определить точки монтирования и * размонтировать их * затем снова смонтировать Journeyman Geek 7 лет назад 0
`sudo mount / dev / mapper / loop0p2 / path / that / I / own` не имеет никакого значения. Все еще не могу создать файл. `/ proc / mounts` говорит, что обе попытки заканчивались одинаковыми параметрами:` ext4 rw, nosuid, nodev, relaytime, block_validity, dealloc, барьер, user_xattr, acl 0 0` AaronD 7 лет назад 0
0
Jason Swartz

@AaronD

Вы пытаетесь спросить, лучше ли стирать свободное пространство с
шаблоном 0 или 1, потому что будет меньше блоков, которые будут использоваться и заполняться?

Думая 0 для использования пустого 1, и эта логика поможет увеличить или уменьшить срок службы накопителя SSD. Наличие второй логики, которая сводит блоки к неиспользованию, вместо того, чтобы иметь свободное пространство с удаленными или удаленными элементами, по-прежнему представляет собой данные, использующие пространство и большее количество блоков, с большим количеством записей, что ускоряет деградацию

Вы упускаете из виду, почему Ramhound не понимает вашего вопроса.

Это с вашей логикой, вытирая свободное пространство и создавая его

кот> ~ / нули

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

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

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

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

Это не так много, что блоки используются или нет. Они все используются, когда я пишу файл, и освобождаются, когда я удаляю файл, независимо от того, каким значением я заполняю файл. Единственное различие на высшем уровне - это остаточная стоимость, считываемая из того, что сейчас является технически свободным пространством, и я надеялся сэкономить немного износа и, возможно, даже некоторую скорость, вырезав вторую половину общего цикла записи при заполнении файл. Это действительно все, что нужно - просто стандартная процедура заполнения сжимаемым материалом перед сжатием, но с другим значением заполнения, чтобы попытаться оптимизировать процесс. AaronD 7 лет назад 0
Это, как говорится, хотя, мне действительно нравится, куда идет Путешественник Geek. Это обещает полностью обойти проблему, если мы сможем просто решить последнюю ошибку или два. AaronD 7 лет назад 0

Похожие вопросы