Se eu alinhar uma partição para 24MiB, ela também está alinhada a qualquer divisor desse tamanho?

5

Vamos supor que eu queira começar minhas partições com um deslocamento em flash drives por causa de:

Although it is usually possible to write single pages, the data cannot be overwritten without being erased first, and erasing is only possible in much larger units, typically between 128KB and 2MB. The controllers group these erase blocks into even larger segments, called "erase block groups," "allocation units," or simply "segments." The most common size for these segments is 4MB for drives in the multi-gigabyte class, and all operations on the drive happen in these units; in particular, the drive will never erase any unit smaller than a segment.Optimizing Linux with cheap flash drives

Eu quero alinhar cada partição correspondente ao acima, mas não é tão fácil determinar os números. O 24MiB é bem grande, mas de acordo com a lista de discussão do flashbench, há drives flash com 6 MiB ou 12 MiB apaga os tamanhos dos blocos. Eu quero ter certeza de que pelo menos minhas partições estejam alinhadas sem sempre realizar um teste com o flashbench.

Então, se eu começar minha primeira partição no setor 49122 + 1 (então começa exatamente no "segundo segmento de 24 MiB") de 512 bytes, do que essa partição também alinhada a 1, 2,4,6,8 e 12 MiB? (E assim por diante, por exemplo, para 128k, porque (24 * 1024) / 128 é um número inteiro)

    
por dash17291 09.11.2013 / 21:46

2 respostas

5

Embora eu não tenha conhecimento em primeira mão de eletrônica de cartão flash, deixe-me tentar detalhar minha compreensão do assunto.

Primeiro , o alinhamento a 24 MB alinha-se a todos os seus submúltiplos. Mas se isso é útil é outra questão.

Segundo , alinhar as partições ao bloco de apagamento pode fazer você se sentir melhor, mas o que é importante é na verdade o alinhamento dos arquivos dentro do sistema de arquivos. Como o sistema de arquivos começa com suas próprias tabelas internas, é necessário forçá-los a do tamanho do bloco de apagamento, que está longe de ser um exercício trivial. Alinhar o sistema de arquivos é, portanto, sua próxima tarefa depois de alinhar a partição.

Por exemplo, leia a luta de Theodore Ts'o para conseguir isso para seu disco SSD:
Alinhando sistemas de arquivos para um tamanho de bloco de apagamento de SSDs .

Terceiro , o termo "bloco de apagamento" e sua aplicabilidade a qualquer unidade flash específica é em proporção inversa à inteligência do controlador de disco flash. Controladores de flash modernos estão ficando mais inteligentes e até usando compressão, então a ideia de que o sistema operacional sabe o que está acontecendo sob o capô com essa unidade pode ser apenas uma ficção que pode ser aplicado às unidades mais baratas ou mais antigas.

Quarto , os tamanhos dos blocos são uma função da tecnologia de fabricação. O artigo da AnandTech Micron anuncia 16nm 128Gb MLC NAND, SSDs em 2014 tem esta tabela de resumo interessante, onde o tamanho do bloco vai de 512KB até 8MB:

Quinto,algumastecnologiasdememóriausam"bits" de estado N chamados células, de modo que uma célula física pode conter 1,5 ou 2 bits lógicos ou mais. O controlador, novamente, faz o trabalho de traduzir isso para termos que o sistema operacional pode entender, o que é claro pura ficção.

O artigo design de cartão de memória Flash diz o seguinte:

In all SLC and MLC flash, the erase block size is a power-of-two size. In TLC flash (Also known as MLC3, three-bit MLC, 8LC, or eight-level cell), there are two possible layouts: An erase block can have either three power-of-two sections, resulting in a total size of e.g. 1.5MB or 3 MB, or it can have a non-power-of-two number of pages for each level, 43+43+42 pages for a total of 128 pages per erase block.

Leia este artigo para saber mais sobre como os discos flash se reportam ao sistema operacional informação que é basicamente falsa.

Conclusão : Na atual selva de tecnologias em evolução, não há como confiar de maneira confiável calcular o tamanho real do bloco de apagamento. Ferramentas como o flashbench podem ser a única maneira confiável de calcular esse valor, mas os resultados podem ser falsos para discos flash mais evoluídos. Imagine, por exemplo, o flashbench escrevendo um bloco de zeros de 64MB que o controlador de flash comprime em alguns KBs, portanto, o flashbench na verdade realmente mede o taxa de transferência para o dispositivo.

Na minha opinião, como o alinhamento da partição é contado como uma coisa "boa" a ser feita, 4 MB é suficiente (8 MB pode ser melhor para discos mais recentes até o final de 2014), e eu não me incomodaria mais. Em caso de dúvida, use o flashbench, mas mantenha a mente aberta quanto à validade dos resultados. Tamanhos estranhos relatados pelo flashbench são provavelmente o resultado de traduções e otimizações feito pelo controlador flash no disco flash.

    
por 24.11.2013 / 21:12
1

Sim, todo número inteiro é um número inteiro múltiplo de todos os divisores.

24 MiB = 24 ⋅ 2 20 B = 2 ⋅ 4 ⋅ 3 * 2 24 B = 3 ⋅ 2 27 B = 3 ⋅ 2 18 ⋅ 512 B

Existem seus principais divisores para 24 MiB divididos em unidades de 512 bytes. Mais especificamente, cada bloco começando em um múltiplo de 24 MiB também começará em um múltiplo de 12 MiB, 8 MiB, 6 MiB, 4 MiB, 2 Mib, 1 MiB e 512 KiB.

Agora, para sua pergunta exemplar: 49152 = 3 ⋅ 2 14 , que divide 3 ⋅ 2 18 . Portanto, minha declaração acima se aplica ao 49152º bloco de 512 bytes.

Edit: Eu só fiz algumas contas aqui. Como você pode ver pela (s) outra (s) resposta (s), o lado técnico do seu problema é muito mais complicado.

    
por 24.11.2013 / 20:32