![Tamanho de um bloco](https://rvso.com/image/1346168/Tamanho%20de%20um%20bloco.png)
Eu tenho uma unidade flash e quero entender as propriedades dela conforme são geradas no arquivo fdisk
. Eu o inseri e verifiquei dmesg
e pude ver que estava montado, então /dev/sdb1
corri fdisk
para ver o que está relatado/dev/sdb
mike@mike-Qosmio-X770:~$ sudo fdisk -l
[sudo] password for mike:
Disk /dev/sdb: 127 MB, 127926272 bytes
16 heads, 32 sectors/track, 488 cylinders, total 249856 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x6b3ee723
Device Boot Start End Blocks Id System
/dev/sdb1 * 32 249854 124911+ b W95 FAT32
Pelo que eu sei, a unidade é uma unidade flash formatada em FAT32 de 128 MB e possui apenas 1 partição. Começa em "32" (presumivelmente 0-31 é usado para alguns FTL).
Ele está relatando que um "setor" tem 512 bytes de tamanho e 249.856 setores (122 MB no total).
Agora estou confuso sobre a contagem de cilindros, cabeçotes e setores/faixas. Eu sei que cilindros/cabeças têm a ver com tipos de armazenamento em disco magnético. Existe algum significado para isso quando se trata de um dispositivo flash? Ou são apenas informações “sobras” fdisk
que realmente não têm significado para um meio de armazenamento não magnético? Se for o último, por que fornecer valores?
Segunda pergunta, qual é o “tamanho” de um bloco? :
Blocks
124911+
E qual é o significado de +
depois da contagem de blocos?
Responder1
Tamanho de um bloco
Uma trilha tridimensional (a mesma trilha 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 é 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 mais. As únicas vezes em que isso não acontece é em drivers específicos do sistema de arquivos, já que alguns sistemas de arquivos usam outras granularidades (por exemplo, em um sistema de arquivos ext3 de tamanho normal, o o tamanho do bloco do sistema de arquivos é geralmente 4.096 bytes). No entanto, você quase nunca consegue ver 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 com isso é que existem quatro unidades distintas que você deve ter em mente. Para piorar ainda mais a situação, 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ção, "tamanho do cilindro"
Para diferenciar entre 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 diferentes tipos de hardware, mas a maioria do hardware estilo PC (disquetes, discos IDE, etc.) usa setores de 512 bytes.
O tamanho do cluster é a unidade de alocação que o sistema de arquivos usa 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 4.096 bytes, mas você pode verificar isso com
dumpe2fs
. Lembre-se de que eles também costumam ser chamados de "blocos", só que me refiro a eles comoagrupamentosaqui. O tamanho do cluster é o que é retornadost_blksize
no buffer estatístico, 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 de dispositivos de armazenamento (daí o nome "dispositivo de bloco"). Como esta é 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 é 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 reportará os tamanhos nesses blocos, a coluna "Blocos" nafdisk -l
saída é desse tipo e assim por diante. É o que é mais comumente chamado de "bloco". Dois setores de disco cabem em cada bloco.O tamanho do cilindro é usado apenas na tabela de partição e pelo BIOS (e o BIOS não é usado pelo Linux).
Fonte:Tamanho do bloco de disco Linux... ajuda por favor
Setores 0-31
Para responder à sua pergunta sobre os primeiros 32 setores, como a unidade flash é um dispositivo formatado em FAT, olhando 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 logo no início, são (neste caso) os setores 0-31:
O primeiro setor reservado (setor lógico 0) é oSetor de inicialização(também conhecido como Registro de inicialização de volume (VBR)). Inclui uma área chamadaBloco de parâmetros do BIOS(com algumas informações básicas do sistema de arquivos, em particular seu tipo, e ponteiros para a localização 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 chamadaBloco de parâmetros do inversor (DPB)em DOS e OS/2.
A contagem total de setores reservados é indicada por um campo dentro do Setor de Boot,e geralmente é 32 em sistemas de arquivos FAT32.
Para sistemas de arquivos FAT32, os setores reservados incluem umSetor de informações do sistema de arquivosno setor lógico 1 e umSetor de inicialização de backupno setor lógico 6.
Embora muitos outros fornecedores tenham continuado a empregar uma configuração de setor único (somente 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 de sub-rotinas no setor lógico 2. A área do setor de inicialização de backup também consiste em três setores lógicos 6, 7 e 8. Em alguns casos, a Microsoft também utiliza 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:
Normalmente contém duas cópias (pode variar) da Tabela de Alocação de Arquivos para fins de verificação de redundância, embora raramente usada, mesmo por 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. Em FAT12 e FAT16 seguem imediatamente os setores reservados.
Normalmente, as cópias extras são mantidas em forte sincronização nas gravações e, nas leituras, são usadas apenas quando ocorrem erros no primeiro FAT. No FAT32 é possível sair do comportamento padrão e selecionar um único FAT dentre os disponíveis para ser utilizado para fins de diagnóstico.
Os primeiros dois 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. É usado apenas com FAT12 e FAT16 e impõe ao 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, juntamente com arquivos e outros diretórios, permitindo que ele cresça sem tal restrição. Assim, para 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 de acordo com a Tabela de Parâmetros de Disco (DPT) do INT 1Eh durante a formatação em máquinas compatíveis com IBM, mas também usadas no Portfólio Atari. Os disquetes CP/M de 8 polegadas normalmente vêm pré-formatados com um valor de 0xE5; por meio da Digital Research, esse valor também foi usado em disquetes formatados em 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 normalmente também é usado em discos ROM. (Algumas ferramentas de formatação avançadas permitem configurar o byte de preenchimento de formato.)
O tamanho dos arquivos e subdiretórios pode ser aumentado arbitrariamente (desde que haja clusters livres) simplesmente adicionando mais links à cadeia do arquivo no FAT. Observe, entretanto, 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ório raiz no cluster número 2: o primeiro cluster da região de dados.
Responder2
Suponho que os setores 1-31 sejam reservados para informações de inicialização e informações da tabela de partições. A partição /dev/sdb1 começa no bloco/setor 32 e vai até 249854. É uma partição lógica no disco físico.
O 124911+ fornece a contagem de blocos entre 32 e 249854.
Sobre a geometria do disco, aqui está o que man fdsik
diz sobre isso:
Se possível, o fdisk obterá a geometria do disco automaticamente. Esta não é necessariamente a geometria física do disco (na verdade, os discos modernos não têm nada parecido com uma geometria física, certamente não algo que possa ser descrito na forma simplista de Cilindros/Cabeças/Setores), mas é a geometria do disco que o MS-DOS usa para a tabela de partição.
Normalmente tudo corre bem por padrão e não há problemas se o Linux for o único sistema no disco. Entretanto, se o disco precisar ser compartilhado com outros sistemas operacionais, geralmente é uma boa ideia permitir que um fdisk de outro sistema operacional crie pelo menos uma partição. Quando o Linux inicializa, ele olha para a tabela de partições e tenta deduzir qual geometria (falsa) é necessária para uma boa cooperação com outros sistemas.