Muitos recursos na Internet contêm informações conflitantes sobre a lógica de leitura/gravação de blocos RAID.
Esta resposta contém as seguintes informações (aparentemente conflitantes):
Um tamanho de bloco de 512 KB não exige que o sistema grave, por exemplo, 512 KB para cada gravação de 4 KB ou leia 512 KB da superfície do dispositivo para uma leitura de aplicativo de 4 KB.
[Ao ler um bloco de 16 KiB do RAID com um tamanho de bloco de 64 KiB] o RAID executará uma operação de leitura/modificação/gravação ao gravar esse arquivo de 4 KiB/bloco de 16 KiB porque a menor unidade de armazenamento do RAID é 64 -KiB.
Por outro lado, este recurso contém as seguintes informações:
Por exemplo, se você tiver um arquivo de texto de 10 KB e o tamanho do bloco for 256 KB, esses 10 KB de dados serão armazenados em um bloco de 256 KB, deixando o restante do bloco vazio. Por outro lado, com blocos de 16 KB, há muito menos desperdício de espaço ao armazenar esse arquivo de 10 KB.
Em particular, tenho as seguintes perguntas:
- Ao ler/gravar alguma unidade de dados menor que o tamanho do bloco RAID usando um esquema sem paridade, isso requer uma operação de leitura/modificação/gravação para todo o bloco ou apenas a parte do bloco que é modificada?
- Ao usar um esquema RAID com paridade, isso muda alguma coisa na resposta à pergunta 1?
- Conforme mencionado na segunda referência, escrever uma unidade de dados menor que o bloco RAID de alguma forma deixa o restante do bloco RAID vazio? Isso me parece incorreto, mas gostaria de esclarecer, pois este recurso afirma isso de forma bastante inequívoca.
- Alguma dessas respostas muda dependendo da implementação do RAID (kernel Linux, RAID de hardware, etc.)?
Se possível, fornecer algum tipo de referência oficial (alguma especificação de RAID, código-fonte, etc.) seria incrível.
Desde já, obrigado!