Como localizo o tamanho da leitura do bloco de hardware do meu disco rígido?


Respostas:


44

O comando lsblk é ótimo para isso:

lsblk -o NAME,PHY-SeC

Os resultados:

NAME   PHY-SEC 
sda        512 
├─sda1     512 
├─sda2     512 
└─sda5     512 

3
Diferencia entre tamanho lógico e tamanho físico?
CMCDragonkai

2
Não fornecerá o tamanho físico real.
sjas

7
Funciona para mim, o PHY-SEC mostra o físico correto e o LOG-SEC mostra o tamanho lógico.
Soger 20/05

31

O Linux expõe o tamanho do setor físico em arquivos /sys/block/sdX/queue/physical_block_size. Embora, para obter o melhor desempenho, você provavelmente deva fazer alguns testes com tamanhos e medidas diferentes. Eu poderia não encontrar uma clara resposta em que usando exatamente o tamanho do bloco físico se obter o resultado ideal (embora eu suponho que ele não pode ser uma má escolha).


2
Eu tenho um sistema Debian Lenny (kernel 2.6.26) que apenas expõe um hw_sector_size nesse local e um sistema Ubuntu Karmic mais recente (kernel 2.6.31) que fornece ambos. portanto, isso depende um pouco do kernel em uso.
quack quixote

Não fornecerá o tamanho físico real.
sjas

@sjas Você poderia expandir? Como você sabe disso?
Hashim

1
@Hashim eu testei alguns discos rígidos antigos que eu tinha onde alguns onde alguns tinham 512b e algum tamanho de setor 4k. superuser.com/a/426015/145072 é a solução que realmente funcionou. tudo além hdparmprovavelmente irá mentir para você.
sjas


7

A minha não pretende ser uma resposta completa, mas espero que também ajude.

Aqui está um pouco de http://mark.koli.ch/2009/05/howto-whole-disk-backups-with-dd-gzip-and-p7zip.html


3 - Determinar o tamanho apropriado do bloco

Para um backup mais rápido, pode ajudar a determinar o tamanho ideal do bloco do dispositivo de disco que você fará o backup. Supondo que você esteja fazendo backup / dev / sda, veja como você pode usar o comando fdisk para determinar o melhor tamanho de bloco:

rescuecd#/> /sbin/fdisk -l /dev/sda | grep Units

Units = cylinders of 16065 * 512 = 8225280 bytes

Observe que a saída do fdisk diz "cilindros de 16065 * 512". Isso significa que existem 512 bytes por bloco no disco. Você pode melhorar significativamente a velocidade do backup aumentando o tamanho do bloco em um múltiplo de 2 a 4. Nesse caso, o tamanho ideal do bloco pode ser 1k (512 * 2) ou 2k (512 * 4). Aliás, ficar ganancioso e usar um tamanho de bloco de 5k (512 * 10) ou algo excessivo não ajudará; eventualmente, o sistema afunilará o próprio dispositivo e você não poderá extrair nenhum desempenho adicional do processo de backup. (enfase adicionada)


Suspeito que a diferença de desempenho entre um tamanho de bloco quase ideal e ideal para uma determinada configuração seja insignificante, a menos que o conjunto de dados seja enorme. De fato, um usuário do FixUnix (pós de 2007) afirmou que seus tempos ideais eram apenas 5% mais rápidos que os sub-ideais. Talvez você possa reduzir um pouco mais a eficiência usando um múltiplo do tamanho do "cluster" ou do tamanho do bloco do sistema de arquivos.

Obviamente, se você se afastar muito dos dois lados do tamanho ideal do bloco, terá problemas.

O ponto principal é que você provavelmente obterá apenas cerca de 5% em desempenho (ou seja, 3 minutos por hora) com o tamanho ideal absoluto do bloco, portanto, considere se vale a pena o seu tempo e esforço para pesquisar mais. Contanto que você fique longe de valores extremos, não deve sofrer.


1
algum motivo para usar em echo "p" | /sbin/fdisk /dev/sda...vez de /sbin/fdisk -l /dev/sda...? o segundo será mais limpo e não tentará fazer alterações.
quack quixote

É melhor perguntar a Mark Kolich (vinculado). Ele estava criando um backup, e eu apenas citei uma seção do artigo dele.
Mark C

1
@MarkC O artigo vinculado usa /sbin/fdisk -l /dev/sda | grep Units. Pode ter sido alterado nos últimos dois anos. De qualquer forma, atualizei sua resposta.
Bob

2
Na IMO, essa é a resposta mais útil, principalmente por causa do último parágrafo em negrito. O Linux trabalha muito para otimizar o acesso ao disco, desde que você use as configurações apropriadas do planejador io e do buffer sujo para o seu disco, um tamanho de bloco de 8192 bytes deve ser adequado para qualquer situação.
Soger 20/05

4

Cada transferência de disco gera uma interrupção que o processador deve manipular. Um disco típico de 50Mb / s desejará gerar 100000 deles por segundo no tamanho de bloco de 512b O processador normal processaria 10s de milhares deles, portanto, um tamanho de bloco maior (2 ^ x) seria mais útil (4k como tamanho padrão de bloco FS na maioria dos casos) sistemas de até 64k de tamanho ISA DMA) seria mais prático ...


Você poderia esclarecer?
sjas

1
@Sjas O que ele está dizendo é, aparentemente, que cada setor é transferido separadamente com uma "interrupção" associada que o processador deve manipular. Um tamanho de bloco maior significa menos interrupções (e, portanto, menos ciclos de CPU usados) para a mesma quantidade de dados.
Mark C

1

Além disso, você pode examinar a saída de lshwpara verificar outros resultados (e também porque eu não pareço ter hdparmdisponível na minha distribuição). Isso pode ajudar a reduzi-la:

sudo lshw | awk 'BEGIN {IGNORECASE=1;} /SCSI/,!//{print}'
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.