Вопрос или проблема
Я регулярно создаю сжатые резервные образы, используя 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:
-
Случайные данные: Если устройство не поддерживает никаких гарантий по возвращаемым данным после TRIM, оно может возвращать случайные данные.
-
Непостоянные данные: Некоторые устройства могут возвращать одну и ту же неизменную последовательность данных после TRIM — это может быть как ноль, так и другое константное значение.
-
Нулевые данные: В большинстве случаев SSD, соответствующие спецификациям, гарантируют возврат нулей после обработки
TRIM
.
Для проверки того, как ведет себя ваше устройство, вы можете использовать команду hdparm -I
, которая покажет параметры чтения после команды TRIM.
По сравнению с перезаписью нулями
Использование dd
для заполнения освобожденного пространства нулями может увеличить время резервного копирования и привести к чрезмерному износу SSD-диска, так как каждое записанное значение на физическое устройство вызывает циклы записи, что ограничивает ресурс SSD.
-
Преимущества
fstrim
:- Быстрая работа без ненужных операций записи.
- Снижение износа физической памяти.
- Повышение производительности дальнейших операций чтения и записи.
-
Недостатки использования
dd
:- Увеличение времени до завершения операции резервного копирования.
- Увеличение объема операций записи на диск, что негативно сказывается на сроке службы SSD.
Рекомендации для резервного копирования
Для более эффективного резервного копирования, особенно в контексте Linux файловых систем (Ext2/3/4), вы можете рассмотреть использование утилит, таких как e2image
, которая создает образы, содержащие только используемые блоки. Это позволит вам избежать ненужного заполнения освобожденного пространства, оптимизируя тем самым операции хранения и экономя место.
В заключение, команда fstrim
не эквивалентна перезаписи нулями, и, учитывая преимущества использования TRIM для SSD, рекомендуется делать упор на этот метод для оптимизации резервного копирования.