Escrever pequenas quantidades de dados em uma unidade é lento, portanto, os buffers do sistema gravam para confirmá-los todos de uma vez mais tarde. Quando o buffer contém dados suficientes para uma operação de gravação eficiente ou quando algum processo usa sync system call , o buffer é liberado para o dispositivo.
dd executa uma cópia de baixo nível, ou seja. lê dados que estão fisicamente presentes em um dispositivo. Não leva buffers em conta.
Se a unidade foi montada quando você executou dd bs=4M , é possível que algumas gravações já estivessem armazenadas em buffer, mas não confirmadas. Você despejou a unidade sem alterações no buffer.
umount chama sync internamente para garantir a integridade dos dados. Dispositivos não montados geralmente não são acessados, a menos que você peça explicitamente algum processo para fazê-lo, então é improvável que a unidade mude após a desmontagem.
Então você executou dd duas vezes na unidade sem montá-lo no meio. É por isso que bs=8M e bs=16M chamadas produziram os mesmos resultados.
O drive foi modificado entre as chamadas bs=4M e bs=8M , portanto, o primeiro dump é diferente. bs= não importou, chamando umount did.
Você deve sempre desmontar o dispositivo antes de usar dd , caso contrário, algum outro processo poderá modificar seu conteúdo enquanto dd estiver fazendo seu trabalho e quebrar a integridade do arquivo.