Por que uma verificação de disco Ext4 é muito mais rápida que o NTFS?

12

Hoje tive uma situação em que reiniciei o computador e dizia que precisava verificar a consistência do disco. Cerca de 10 minutos depois (com "1%" completo), desisti e decidi deixá-lo correr quando voltar para casa.

Para comparação, meu computador doméstico usa Ext4 para todas as partições, e as verificações de disco (que ocorrem uma vez por semana) levam apenas alguns segundos. Lembro-me de ler que ter verificações rápidas de disco era uma prioridade, mas não sei como eles poderiam fazer isso.

Então, como o Ext4 faz verificações de disco tão rápido? Existe alguma inovação enorme em fazer isso depois que o NTFS foi lançado (~ 10 anos atrás)?

Nota: O disco NTFS tem ~ 300 GB e o disco Ext4 é ~ 500 GB. Ambos estão meio cheios.

Brendan Long
fonte
Não tenho o Windows chkdsk um volume NTFS na inicialização desde que o 2008 R2 foi lançado. Mesmo em um cluster CSV com vários nós acessando o mesmo volume NTFS, bloqueando dezenas de milhares de arquivos de índice Lucene. É bastante impressionante.
Brain2000

Respostas:

11

Há dois motivos principais para a diferença de desempenho e dois possíveis . Primeiro, os principais motivos:


Desempenho aprimorado do ext4 vs. NTFS

Vários benchmarks concluíram que o sistema de arquivos ext4 real pode executar uma variedade de operações de leitura e gravação mais rapidamente do que uma partição NTFS. Observe que, embora esses testes não sejam indicativos de desempenho no mundo real, podemos extrapolar esses resultados e usá-los como um motivo.

Quanto ao motivo pelo qual o ext4 realmente funciona melhor, o NTFS pode ser atribuído a uma ampla variedade de razões. Por exemplo, o ext4 suporta alocação atrasada diretamente. Mais uma vez, porém, os ganhos de desempenho dependem estritamente do hardware que você está usando (e pode ser totalmente negado em certos casos).

Requisitos reduzidos de verificação do sistema de arquivos

O sistema de arquivos ext4 também é capaz de executar verificações mais rápidas do sistema de arquivos do que outros sistemas de arquivos de registro no diário equivalentes (por exemplo, NTFS). De acordo com a página da Wikipedia:

No ext4, grupos de blocos não alocados e seções da tabela de inodes são marcados como tal. Isso permite ao e2fsck ignorá-los inteiramente em uma verificação e reduz bastante o tempo necessário para verificar se um sistema de arquivos do tamanho ext4 foi desenvolvido para suportar. Esse recurso é implementado na versão 2.6.24 do kernel do Linux.


E agora, os dois motivos possíveis :


Utilitários de verificação do sistema de arquivos

Certos aplicativos podem executar rotinas diferentes nos sistemas de arquivos para realmente executar a "verificação" de integridade. Isso pode ser facilmente visto se você usar o utilitário fsck definido no Linux versus o utilitário chkdsk no Windows. Esses aplicativos são gravados em diferentes sistemas operacionais para diferentes sistemas de arquivos. A razão pela qual eu trouxe isso à tona como uma possível razão é que as chamadas de baixo nível do sistema em cada sistema operacional são diferentes e, portanto, talvez você não consiga comparar diretamente os utilitários usando dois sistemas operacionais diferentes.

Fragmentação de Disco

Este é fácil de entender e também nos ajuda a entender as diferenças entre os sistemas de arquivos. Embora todos os dados digitais contidos em um arquivo sejam os mesmos, a maneira como eles são armazenados no disco rígido é bem diferente de sistema de arquivos para sistema de arquivos. A fragmentação de arquivo pode obviamente aumentar as velocidades de acesso, atribuindo uma diferença maior à velocidade.

Avanço
fonte
1
O que me confunde é que seu segundo ponto inicialmente parece ter o maior efeito, mas minha partição Ext4 tem quase tanto espaço usado quanto minha partição NTFS total - em vez de ser muito mais rápida, deve ter a mesma velocidade. Eu acho que é provável que melhorias de desempenho do Ext4 torná-lo mais rápido para verificar bem, mas Ext4 não é que muito mais rápido do NTFS (certamente não as várias ordens de magnitude diferença que vejo em verificações de sistemas de arquivos).
Brendan Long
Não sei o que você quer dizer ... Em geral, o conteúdo do arquivo ocupa muito mais espaço do que os índices dos sistemas de arquivos mais modernos (ext4 e NTFS incluídos). Os sistemas de arquivos apenas armazenam o conteúdo de maneira diferente, o que (como mencionei, em alguns casos) permite um desempenho superior.
Breakthrough
O que me confunde é que a parte realmente verificada deve ter o mesmo tamanho em ambas (uma vez que minha partição Ext4 tem quase tanto espaço usado quanto a partição NTFS total), mas a partição Ext4 faz sua verificação em segundos, enquanto o NTFS um leva horas.
Brendan Long
1
@Brendan Long Se você olhar para o primeiro link na minha resposta, algumas pessoas descobriram que as leituras de arquivos são realmente mais rápidas com uma unidade usando ext4 versus NTFS. Mesmo que os dados digitais contidos no arquivo sejam os mesmos , eles não são armazenados da mesma maneira no disco. No entanto, se você disser que o NTFS leva horas , provavelmente está verificando cada setor na unidade, portanto, você pode estar pulando algumas verificações alternativas na verificação do sistema de arquivos ext4 (explicando a grande diferença de velocidade). É muito mais rápido verificar cada arquivo, em vez de toda a superfície do disco.
Breakthrough
Esta resposta é apenas uma lista de pontos de conversa ext4 vs NTFS sem relevância para a pergunta. Os sistemas de arquivos registrados no diário nunca precisam ser verificados em operação comum. Uma verificação automática significa que algo está seriamente errado. Sem saber o que há de errado, é impossível saber por que a verificação é tão lenta. Compará-lo às verificações semanais do ext4 é comparar maçãs e laranjas.
21916 benrg
3

Pelo meu entendimento, o ext4 tenta gravar dados no maior intervalo contínuo de inodes abertos, onde nenhum dado reside atualmente. Isso reduz severamente a latência quando esses arquivos precisam ser lidos, pois, em grande parte, todo o conteúdo de um arquivo individual ficava principalmente em uma única faixa contínua, de forma que o cabeçote da unidade teria menos procura ao encontrar todos os blocos que continham os dados que compõe esse arquivo.

(Ext4) ainda pode se tornar fragmentado, mas muito menos e não necessariamente de uma maneira que afeta severamente o desempenho de leitura / gravação, como no NTFS. No NTFS, os dados são gravados nos primeiros blocos abertos no caminho da cabeça.

Portanto, onde quer que o cabeçote esteja e haja blocos abertos, ele grava o máximo de dados possível e grava onde quer que apareça em outro local do disco quando o cabeçote precisar se mover, digamos, para outra parte do disco para acessar um arquivo diferente que precisa ser aberto em um programa que você acabou de carregar enquanto esse outro arquivo ainda está sendo gravado.
Isso significa que, se o arquivo for grande, é provável que ele se espalhe em blocos separados um do outro em faixas separadas e é por isso que a desfragmentação é frequentemente necessária para o NTFS.

Também porque os servidores geralmente não o usam, pois há E / S mais pesada com um servidor em que os dados são constantemente gravados e lidos do disco 24 horas por dia, 7 dias por semana.

Também não tenho certeza, mas se chkdskverificar a integridade de cada arquivo (o que acredito e o que fsckfaço), também seria mais lento em comparação devido ao que acabei de descrever sobre a fragmentação no NTFS.

jesse james
fonte
Nem NTFS chkdsk nem ext4 fsck leem dados do arquivo. Seria inútil, porque não há soma de verificação ou qualquer outra maneira de verificar sua integridade.
21916 benrg
0

O Windows nunca precisará verificar um volume NTFS na inicialização. Se isso acontecer, algo deu muito errado - algo muito pior do que um mero BSOD ou falta de energia. Há uma chance significativa de que alguns dos seus dados também tenham sido corrompidos por qualquer que seja que tenha corrompido os metadados do sistema de arquivos. A verificação do disco não pode detectar isso; seu único objetivo é evitar mais corrupção.

KB2854570 lista alguns motivos pelos quais isso pode acontecer. Um é a hibernação de um sistema operacional com um volume montado, modificando o conteúdo do volume e, em seguida, saindo da hibernação com o (re) volume anexado. Se você fizer isso, há uma alta probabilidade de corrupção de dados silenciosa.

Não sei por que o seu sistema de arquivos ext4 estava se verificando uma vez por semana, mas provavelmente (provavelmente) não foi devido a uma crise comparável que se repetia semanalmente. Provavelmente estava apenas fazendo uma verificação de rotina, e não uma verificação completa da consistência.

benrg
fonte