Эффект завершения длительно выполняющейся команды rm

Эффект завершения длительно выполняющейся команды rm

Сегодня я удалил файл размером 50 ГБ, хранящийся в файловой системе ext3, с помощью rmкоманды. Потребовалось rmпочти 40 минут интенсивных операций ввода-вывода, чтобы освободить все блоки. Из того, что я вижу из других источников, именно столько времени требуется, чтобы освободить все блоки, используемые файлом. Что бы произошло, если бы кто-то завершил процесс rmв середине. Могло ли это вызвать повреждение файловой системы, когда некоторые блоки больше не могли быть восстановлены как свободное пространство?

решение1

(т.е. требуя fsck). Несогласованность файловой системы не требуется.

Да, после отмены связи произойдет освобождение блока. Но этот процесс не будет прерываемым.

ext2_evict_inode->

__ext2_truncate_blocks ->
ext2_free_branches -> (for loop)
sb_bread ->
wait_on_buffer ->

wait_on_bit_io(&bh->b_state, BH_Lock, TASK_UNINTERRUPTIBLE);

Приведенный выше пример относится к ext2, я подумал, что его будет проще рассмотреть. ext3разницы не будет...

ext4Хотя должно быть быстрее. Использование экстентов должно исключить необходимостьтройные косвенные блоки. (В статье описывается добавление экстентов в ext3, но Линус воспротивился и сказал сначала поднять номер версии до ext4). Я ожидаю, что время обновления битовых карт будет таким же, но они гораздо компактнее указателей блоков.

Связанный контент