O problema básico é que o verificador do sistema de arquivos (geralmente) não faz parte do sistema de arquivos. Em vez disso, é um programa separado que lê e grava no mesmo disco que o código do sistema de arquivos no kernel. Como resultado, se você executar o fsck em um sistema de arquivos ativo, terá duas entidades diferentes que estão lendo (e potencialmente modificando) os mesmos dados (o disco), mas elas não estão se coordenando de forma alguma. O resultado, como outros salientaram, é que a maioria dos verificadores espera que ninguém mais esteja alterando os metadados do sistema de arquivos enquanto executam. Eles ficarão confusos e / ou reportarão erros espúrios se o sistema de arquivos do kernel mudar algo que o verificador não espera.
Existem alguns sistemas de arquivos com verificadores projetados explicitamente para serem executados "on-line" (ou seja, enquanto o sistema de arquivos estiver ativo). As versões mais recentes do FFS / UFS fazem isso executando o fsck em uma captura instantânea recente do sistema de arquivos (uma réplica somente leitura, point-in-time, cópia na gravação). Se encontrar problemas, como inconsistências nos mapas de bits de alocação, os corrigirá via chamada do sistema, em vez de gravar no disco bruto. Isso permite coordenar com o sistema de arquivos ativo.
O WAFL da NetApp também possui uma ferramenta de verificação on-line. Provavelmente existem outros.