Tamanho de um bloco
Uma pista tridimensional (a mesma pista em todos os discos) é chamada de cilindro. Cada faixa é dividida em 63 setores. Cada setor contém 512 bytes de dados. Portanto, o tamanho do bloco na tabela de partição é de 64 cabeças * 63 setores * 512 bytes er ... dividido por 1024 ... :-)
Fonte: Particionando com fdisk
Sempre que o Linux se refere ao tamanho do bloco, é quase sempre 1024 bytes - o Linux usa blocos de 1024 bytes como unidades primitivas para o cache do buffer e tudo o mais. As únicas vezes que não são são os drivers específicos do sistema de arquivos, pois alguns sistemas de arquivos usam outros granularidades (por exemplo, em um sistema de arquivos ext3 de tamanho normal, o tamanho do bloco do sistema de arquivos é geralmente 4096 bytes). No entanto, você quase nunca vê o tamanho do bloco do sistema de arquivos; quase a única maneira de realmente ver isso é ser um hacker de kernel ou executar programas como o dumpe2fs.
O problema disso é que existem quatro unidades distintas que você deve ter em mente. Para piorar as coisas, duas dessas unidades têm o mesmo nome. Estas são as diferentes unidades:
- Tamanho do bloco de hardware, "tamanho do setor"
- Tamanho do bloco do sistema de arquivos, "tamanho do bloco"
- Tamanho do bloco de cache do buffer do kernel, "tamanho do bloco"
- Tamanho do bloco da tabela de partições, "tamanho do cilindro"
Para diferenciar o tamanho do bloco do sistema de arquivos e o tamanho do bloco do cache do buffer, seguirei a terminologia FAT e usarei "tamanho do cluster" para o tamanho do bloco do sistema de arquivos.
O tamanho do setor são as unidades com as quais o hardware lida. Isso varia entre os diferentes tipos de hardware, mas a maioria dos hardwares no estilo PC (disquetes, discos IDE etc.) usa setores de 512 bytes.
O tamanho do cluster é a unidade de alocação usada pelo sistema de arquivos e é o que causa a fragmentação - tenho certeza que você sabe disso. Em um sistema de arquivos ext3 de tamanho moderado, geralmente são 4096 bytes, mas você pode verificar isso com dumpe2fs
. Lembre-se de que esses também são geralmente chamados de " blocos ", apenas que eu me refiro a eles como clusters aqui. O tamanho do cluster é o que é retornado no st_blksize
buffer stat, para que os programas possam calcular o uso real do disco de um arquivo.
O tamanho do bloco é o tamanho dos buffers que o kernel usa internamente quando armazena em cache setores que foram lidos a partir de dispositivos de armazenamento (daí o nome "dispositivo de bloco"). Como essa é a forma mais primitiva de armazenamento no kernel, todos os tamanhos de cluster do sistema de arquivos devem ser múltiplos disso. Esse tamanho de bloco também é o que quase sempre é referido pelos programas do espaço do usuário. Por exemplo, quando você executa
du
sem as opções -h ou -H, ele retornará quantos desses blocos um arquivo ocupa. df
também informará tamanhos nesses blocos, a coluna "Blocos" na fdisk -l
saída é desse tipo e assim por diante. É o que é mais conhecido como "bloco". Dois setores de disco se encaixam em cada bloco.
O tamanho do cilindro é usado apenas na tabela de partições e pelo BIOS (e o BIOS não é usado pelo Linux).
Fonte: tamanho do bloco de disco do Linux ... ajuda por favor
Setores 0-31
Para responder à sua pergunta sobre os 32 primeiros setores, como a unidade flash é um dispositivo formatado em FAT e, em seguida, analisando a definição do sistema de arquivos FAT, pode-se ver que um sistema de arquivos FAT é composto por quatro seções diferentes:
a) Os setores reservados;
b) a região da tabela de alocação de arquivos (FAT);
c) a região do diretório raiz e;
d) a região de dados.
Os setores reservados , localizados no início, são (neste caso) os setores 0 a 31:
O primeiro setor reservado (setor lógico 0) é o setor de inicialização (também conhecido como
Volume Boot Record (VBR) ). Ele inclui uma área chamada BIOS Parameter Block (com algumas informações básicas do sistema de arquivos, em particular seu tipo, e ponteiros para o local das outras seções) e geralmente contém o código do carregador de inicialização do sistema operacional.
Informações importantes do setor de inicialização podem ser acessadas por meio de uma estrutura de sistema operacional chamada DPB (Drive Parameter Block) no DOS e OS / 2.
A contagem total de setores reservados é indicada por um campo no setor de inicialização e geralmente é 32 nos sistemas de arquivos FAT32 .
Para sistemas de arquivos FAT32, os setores reservados incluem um setor de informações do sistema de arquivos no setor lógico 1 e um setor de inicialização de backup no setor lógico 6.
Enquanto muitos outros fornecedores continuaram empregando uma configuração de setor único (somente o setor lógico 0) para o carregador de inicialização, o código do setor de inicialização da Microsoft cresceu para gerar os setores lógicos 0 e 2 desde a introdução do FAT32, com o setor lógico 0 dependendo do sub-rotinas no setor lógico 2. A área Setor de Inicialização de Backup consiste em três setores lógicos 6, 7 e 8. Em alguns casos, a Microsoft também usa o setor 12 da área de setores reservados para um carregador de inicialização estendido.
Apenas informações adicionais, não relevantes para a questão do OP
A Região FAT estará no setor 32:
Isso normalmente contém duas cópias (podem variar) da Tabela de Alocação de Arquivos para fins de verificação de redundância, embora raramente sejam usadas, mesmo pelos utilitários de reparo de disco.
Estes são mapas da região de dados, indicando quais clusters são usados por arquivos e diretórios. No FAT12 e FAT16, eles seguem imediatamente os setores reservados.
Normalmente, as cópias extras são mantidas em forte sincronização nas gravações e nas leituras e são usadas apenas quando ocorrem erros no primeiro FAT. No FAT32, é possível alternar do comportamento padrão e selecionar um único FAT dentre os disponíveis para serem utilizados para fins de diagnóstico.
Os dois primeiros clusters (cluster 0 e 1) no mapa contêm valores especiais.
A região do diretório raiz :
Esta é uma tabela de diretórios que armazena informações sobre os arquivos e diretórios localizados no diretório raiz. Ele é usado apenas com FAT12 e FAT16 e impõe no diretório raiz um tamanho máximo fixo que é pré-alocado na criação deste volume. O FAT32 armazena o diretório raiz na Região de Dados, junto com arquivos e outros diretórios, permitindo que ele cresça sem essa restrição. Assim, para o FAT32, a região de dados começa aqui.
A região de dados :
É aqui que os dados reais do arquivo e do diretório são armazenados e ocupam a maior parte da partição. Tradicionalmente, as partes não utilizadas da região de dados são inicializadas com um valor de preenchimento de 0xF6 conforme a Tabela de parâmetros de disco (DPT) do INT 1Eh durante o formato em máquinas compatíveis com IBM, mas também usadas no Atari Portfolio. Os disquetes de CP / M de 8 polegadas geralmente vêm pré-formatados com um valor de 0xE5; por meio da Pesquisa Digital, esse valor também foi usado em disquetes no formato Atari ST. Amstrad usou 0xF4. Alguns formatadores modernos limpam discos rígidos com um valor de 0x00, enquanto um valor de 0xFF, o valor padrão de um bloco flash não programado, é usado em discos flash para reduzir o desgaste. O último valor também costuma ser usado em discos ROM. (Algumas ferramentas avançadas de formatação permitem configurar o byte de preenchimento de formato.)
O tamanho dos arquivos e subdiretórios pode ser aumentado arbitrariamente (desde que haja clusters gratuitos) simplesmente adicionando mais links à cadeia de arquivos no FAT. Observe, no entanto, que os arquivos são alocados em unidades de clusters, portanto, se um arquivo de 1 KiB residir em um cluster de 32 KiB, 31 KiB serão desperdiçados.
O FAT32 normalmente inicia a tabela de diretórios raiz no cluster número 2: o primeiro cluster da região de dados.
Fonte: Wikipedia - Tabela de Alocação de Arquivos