Безопасно ли прерывать выполнение команды Fallocate --dig-holes?
я используюfallocate --dig-holes
на очень больших образах дисков, чтобы сделать их разреженными на месте. Я беспокоюсь, что эта операция может быть не атомарной. Мои вопросы:
Гарантируется ли безопасность моих данных (дыры либо пробиты, либо нет, но не находятся в противоречивом состоянии), если я нажму Ctrl+C, чтобы остановить процесс на полпути?
А как насчет сбоя питания? Эти файлы находятся в журналируемой файловой системе (ext4).
1 ответ
Да, ваши данные будут в безопасности, если операция будет прервана нажатием Ctrl-C или сбоем питания. Функция Fallocate --dig ищет в файле блоки с нулевым значением, а затем вызывает системный вызов Fallocate(2) с флагом PUNCH HOLE. Это освободит блоки, в которых все были нулями. Если это прервать, файл будет обработан только частично, но данные останутся в согласованном состоянии, поскольку не будут изменены никакие ненулевые блоки.
Если журнал ext4 включен, то операции с метаданными (включая PUNCH HOLE) будут либо фиксироваться, либо нет, но в любом случае файловая система останется в согласованном состоянии после сбоя питания (при условии, что устройство сертифицирован при сбое питания; некоторые твердотельные накопители, которые не сертифицированы при сбое питания, могут иметь уровень флэш-трансляции — FTL — метаданные могут быть повреждены после сбоя питания, и в этом случае данные, хранящиеся на SSD, могут быть повреждены).