Убирает ли fstrim такой же эффект, как перезапись дискового пространства нулями?

Вопрос или проблема

Я регулярно создаю сжатые резервные образы, используя dd и lzop. Ранее я создавал большой файл заранее, заполнив его нулями с помощью head -c xxG /dev/zero > zeros.tmp && rm zeros.tmp (xxG — это свободное пространство) для очистки удаленных файлов. Это экономило много времени и места на диске для резервного копирования, но также было крайне неэффективно, так как проходило по всему пустому пространству и, таким образом, вызывало ненужный износ SSD.

Сбрасывает ли fstrim также нули в блоках с нераспределенными файлами? Или dd вернет эти блоки с их удаленным содержимым? Я не хочу сжимать блоки с нераспределенными файлами.

Данные, возвращаемые при чтении после обрезки (с использованием fstrim или любого другого подобного инструмента или параметра mount), зависят от устройства: некоторые вернут случайные данные, некоторые — неизменные ненулевые данные, некоторые — нули. Вы можете запустить hdparm -I на устройствах ATA, чтобы определить, какой из этих вариантов применяется: он покажет «Детерминированные данные чтения после TRIM» для второго, «Детерминированные нули чтения после TRIM» для третьего, в противном случае применим первый.

Для вашего конкретного случая другие инструменты могут быть более подходящими; например, если вы рассматриваете файловые системы Ext2/3/4, e2image -ra создаст резервный образ, содержащий только используемые блоки, а e2image -Qa создаст образ QCOW2, содержащий только используемые блоки.

В физических SSD fstrim действительно сбрасывает/очищает неиспользуемые блоки. Обычно они сбрасываются в «1» для NAND-флеш.

Я также использую fstrim вместо zerofill/zerofree на виртуальном диске VM перед сжатием. fstrim заканчивается почти мгновенно, поэтому, вероятно, не нужно записывать на физическое хранилище, как это делает zerofill. Сжатие, похоже, дает лучшие результаты с fstrim.

Ответ или решение

Влияние команды fstrim на освобожденное пространство и аналогия с перезаписью нулями

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

Принцип работы fstrim

Команда fstrim предназначена для индикации SSD-диску о том, какие участки памяти больше не используются, после удаления данных. Это позволяет устройства с NAND флеш-памятью оптимизировать свою работу путем очистки неиспользуемых блоков, что в свою очередь может уменьшить износ и увеличить производительность.

При выполнении команды fstrim не происходит записи нулей в освобожденное пространство, как это делает команда dd, использующая /dev/zero. Вместо этого, SSD-диск обрабатывает запрос и практически моментально удаляет данные из указанных блоков, что значительно снижает нагрузку на физические ячейки памяти за счет исключения операций записи.

Эффект и поведение SSD после TRIM

Когда вы используете fstrim, поведение устройства при чтении очищенных участков может различаться. Это зависит от конкретной реализации памяти в SSD:

  1. Случайные данные: Если устройство не поддерживает никаких гарантий по возвращаемым данным после TRIM, оно может возвращать случайные данные.

  2. Непостоянные данные: Некоторые устройства могут возвращать одну и ту же неизменную последовательность данных после TRIM — это может быть как ноль, так и другое константное значение.

  3. Нулевые данные: В большинстве случаев SSD, соответствующие спецификациям, гарантируют возврат нулей после обработки TRIM.

Для проверки того, как ведет себя ваше устройство, вы можете использовать команду hdparm -I, которая покажет параметры чтения после команды TRIM.

По сравнению с перезаписью нулями

Использование dd для заполнения освобожденного пространства нулями может увеличить время резервного копирования и привести к чрезмерному износу SSD-диска, так как каждое записанное значение на физическое устройство вызывает циклы записи, что ограничивает ресурс SSD.

  • Преимущества fstrim:

    • Быстрая работа без ненужных операций записи.
    • Снижение износа физической памяти.
    • Повышение производительности дальнейших операций чтения и записи.
  • Недостатки использования dd:

    • Увеличение времени до завершения операции резервного копирования.
    • Увеличение объема операций записи на диск, что негативно сказывается на сроке службы SSD.

Рекомендации для резервного копирования

Для более эффективного резервного копирования, особенно в контексте Linux файловых систем (Ext2/3/4), вы можете рассмотреть использование утилит, таких как e2image, которая создает образы, содержащие только используемые блоки. Это позволит вам избежать ненужного заполнения освобожденного пространства, оптимизируя тем самым операции хранения и экономя место.

В заключение, команда fstrim не эквивалентна перезаписи нулями, и, учитывая преимущества использования TRIM для SSD, рекомендуется делать упор на этот метод для оптимизации резервного копирования.

Оцените материал
Добавить комментарий

Капча загружается...