O que significa a saída do fdisk?

10

Eu tenho uma unidade flash e quero entender as propriedades dela como é gerada fdisk. Eu o inseri, verifiquei dmesge pude ver que ele estava montado, /dev/sdb1então corri fdiskpara ver o que é 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

Tanto quanto eu posso dizer, a unidade é uma unidade flash formatada em 128MB FAT32, 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 existem 249.856 setores (total de 122MB).

Agora estou confuso sobre a contagem de cilindros, cabeçote e setores / faixa. Eu sei que os cilindros / cabeças têm a ver com os tipos de armazenamento em disco magnético. Existe algum significado para isso quando se trata de um dispositivo flash? Ou é apenas uma informação fdiskque "sobra" da qual realmente não tem significado para um meio de armazenamento não magnético? Se o último, por que dar valores?

Segunda pergunta, qual é o "tamanho" de um bloco? :

Blocks
 124911+

E qual é o significado da +contagem após o bloco?

Mike
fonte
1
Boa pergunta, +1, nunca pensei nisso antes. O que você quer dizer com "FTL"? Para mim, isso significa Mais rápido que a luz, imagino que você esteja se referindo a outra coisa?
terdon
1
@terdon - FTL (Flash camada de tradução) o material que faz o nivelamento whare e outros enfeites
Mike

Respostas:

3

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:

  1. Tamanho do bloco de hardware, "tamanho do setor"
  2. Tamanho do bloco do sistema de arquivos, "tamanho do bloco"
  3. Tamanho do bloco de cache do buffer do kernel, "tamanho do bloco"
  4. 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_blksizebuffer 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 dusem as opções -h ou -H, ele retornará quantos desses blocos um arquivo ocupa. dftambém informará tamanhos nesses blocos, a coluna "Blocos" na fdisk -lsaí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.

Visão geral da gordura

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

Greenonline
fonte
1

Eu estou supondo que os setores 1-31 são reservados para informações de inicialização e informações da tabela de partição. A partição / dev / sdb1 inicia no bloco / setor 32 e vai para 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 fdsikdiz sobre isso:

Se possível, o fdisk obterá a geometria do disco automaticamente. Essa não é necessariamente a geometria física do disco (na verdade, os discos modernos realmente não têm nada parecido com uma geometria física, certamente não algo que possa ser descrito no formulário simplificado de Cilindros / Cabeças / Setores), mas é a geometria do disco que o MS-DOS usa para a tabela de partição.

Geralmente tudo corre bem por padrão, e não há problemas se o Linux for o único sistema no disco. No entanto, se o disco precisar ser compartilhado com outros sistemas operacionais, geralmente é uma boa ideia permitir que um fdisk de outro sistema operacional faça 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.

J Baron
fonte