Efeito de matar um comando rm de longa execução

3

Hoje apaguei um arquivo de 50GB armazenado em um sistema de arquivos ext3 usando o comando rm . Demorou rm quase 40 minutos de I / O intenso para liberar todos os blocos. Pelo que vejo de outras fontes, esse é o tempo necessário para liberar todos os blocos usados pelo arquivo. O que teria acontecido se alguém matasse o processo rm no meio. Isso poderia ter causado uma corrupção no sistema de arquivos, com alguns blocos que não poderiam mais ser recuperados como espaço livre?

    
por Gerard Yin 29.10.2016 / 00:18

1 resposta

1

(isto é, requerendo fsck ). Nenhuma inconsistência do sistema de arquivos é necessária.

Sim, a liberação do bloco ocorrerá após a desvinculação. Mas este processo não será interrompível.

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);

O exemplo acima é para ext2 , achei que seria mais simples de se olhar. ext3 não será diferente ...

ext4 deve ser mais rápido. O uso de extensões deve evitar a necessidade de blocos triplos indiretos . (O artigo descreve a adição de extensões ao ext3, mas Linus recusou e disse para aumentar o número da versão para ext4 primeiro). Espero que o tempo de atualização dos bitmaps seja o mesmo, mas eles são muito mais compactos que os ponteiros de bloco.

    
por 29.10.2016 / 00:40

Tags