Estou tentando encontrar o maior arquivo possível que posso criar em um sistema UNIX (FFS) com 12 ponteiros diretos e um tamanho de bloco de 2kb. Eu procurei muito tentando encontrar algum tipo de fórmula, ou direção, o mais próximo que encontrei é de uma folha de respostas de um quiz universitário .
Com base na solução para a pergunta deles, tentei calcular o maior arquivo para o meu cenário, que era (suponho que as outras partes da fórmula sejam por causa dos ponteiros indiretos):
(12 * 2KB) = 24KB
No entanto, não tenho como verificar minha solução. Como faço para calcular corretamente o maior tamanho de arquivo possível?
Com 12 ponteiros diretos, cada um para um bloco de 2 kB, o maior arquivo que você pode ter é de 24 kB como você calculou corretamente. Não há uma maneira fácil de verificar isso, você precisa de um depurador de sistema de arquivos para mostrar as estruturas de dados em disco.
Depois de ter ponteiros indiretos, você precisa saber quantos ponteiros cabem em 2 kB. Se alguém assumir que eles são de 4 bytes cada, então você pode colocar 512 deles e, portanto, cada bloco indireto fornece 1 MB adicional (512 * 2 kB).
Depois de ter dupla indireção, você precisa saber quantos podem caber no espaço descrito por um bloco indireto. Para ponteiros de 1 MB e 4 bytes, isso é 256 kB, portanto, um bloco indireto duplo permite 512 MB.
Alguns sistemas de arquivos usam um par (inicial, comprimento) para descrever uma execução contínua de blocos no disco. Se você tiver 6 desses pares em vez de 12 ponteiros, dependendo da fragmentação do disco, você poderá especificar entre 12 KB e 6 * 2 32 * 2 KB ou cerca de 36 TB.