Quais são os tamanhos de setor no Mac OS X?

15

Li na página da Wikipedia HFS Plus que o tamanho padrão do setor em um Mac é 512 b. No entanto, também li que os Macs suportam setores de 4kb. Como posso determinar quais setores eu tenho, 512 b ou 4 kb? Eu acho que 512 é a resposta certa, mas gostaria de ter certeza.

kalaracey
fonte

Respostas:

27

No terminal, você pode usar o diskutil para obter informações sobre a unidade, incluindo o tamanho do bloco do dispositivo:

$ diskutil info / | grep "Block Size"
  Device Block Size:        512 Bytes
Tim B
fonte
1
Obrigado Timothy - não sabia sobre esse comando. Parece um tesouro para disco de informação / manipulação sob OS X.
kalaracey
Cuidado: esta resposta não faz distinção entre o tamanho do bloco do dispositivo e o tamanho do bloco de alocação. Eles podem ser muito diferentes, e o tamanho do bloco de alocação pode muito bem ser o que o OP está procurando, pois é o que o sistema de arquivos usa. Veja a resposta de Mike.
LarsH
12

Primeiro, observe que o tamanho do bloco do dispositivo é diferente do tamanho do bloco em uso pelo sistema de arquivos. O valor anterior, conforme relatado pelo diskutil, refere-se ao tamanho do bloco bruto usado pelo hardware. Não encontrei uma maneira fácil de verificar o último valor pela linha de comando, mas você pode simplesmente criar um arquivo de zero byte e obter informações no Finder. Dirá 0 bytes, mas 4k serão usados ​​no disco.

Segundo, você pode criar um sistema de arquivos HFS + com tamanhos de bloco maiores que 4k usando o programa de linha de comando newfs_hfs. A maneira mais fácil é usar o Utilitário de Disco para particionar a unidade e criar uma partição com a formatação padrão e, em seguida, use /bin/dfpara determinar o dispositivo de bloco (apenas um exemplo:) /dev/disk0s2. Em seguida, desmonte essa partição (usando umount /dev/diskXXXo Utilitário de Disco) e, para reformatar como HFS + com blocos de 64k, faça o seguinte:

newfs_hfs -v VolumeName -b 65536 /dev/disk0s2

Use a dica Obter informações acima para verificar se um arquivo pequeno agora ocupa 64k no disco (pode ser 65k para unidades com 10 potências).

O desempenho é o principal motivo pelo qual você pode querer fazer isso, se a maioria dos dados a serem armazenados forem arquivos grandes (como MP3s, fotos, vídeos, arquivos .zip etc.), além de ajudar a manter baixa a fragmentação do disco. Obviamente, não se preocupe se você planeja armazenar principalmente arquivos pequenos.

Descobri que em unidades grandes (> 1 TB) formatadas como HFS com o tamanho de bloco padrão de 4k, quando a unidade se aproxima da capacidade, o desempenho de gravação diminui enormemente. Suponho que isso se deva à fragmentação da partição e à necessidade de procurar e bicar blocos livres para gravar os últimos 1% dos dados. Espero que tamanhos maiores de blocos aliviem um pouco esse problema.

Mike Gleason
fonte
O tamanho do bloco do sistema de arquivos é dado por stat -f %k ..
LHF
Além disso: é mais fácil na unidade se o tamanho do bloco do sistema de arquivos corresponder ao tamanho físico do bloco. Caso contrário, cada gravação tem que ser realmente um ciclo de leitura-modificação-gravação, (Caching ajuda, é claro.)
Edward Falk
Re: "Eu não encontrei uma maneira fácil de verificar o último valor pela linha de comando" Eu não sei sobre versões mais antigas, mas no macOS Sierra 10.12.6, diskutil infoàs vezes, informamos o tamanho do bloco de alocação: Allocation Block Size: 32768 Bytesassim como o tamanho do bloco do dispositivo. Achei isso verdade ao usar o dispositivo bruto rdisk2s0com um cartão SD no leitor de cartão. Não sei como fazê-lo funcionar no disco rígido.
LarsH
9

O tamanho do bloco do dispositivo OS X pode ser determinado executando o seguinte comando em um prompt da janela Terminal:

diskutil info / | grep "Block Size"

Que produzirá as seguintes informações:

Device Block Size: 512 Bytes

O tamanho do bloco do sistema de arquivos pode ser determinado usando o statutilitário:

stat -f %k .

O que mostrará o tamanho ideal do bloco de operações de E / S do sistema de arquivos em bytes:

4096
rjb
fonte
4

Com o sistema de arquivos HFS mais antigo, a segunda tentativa da Apple em um sistema de arquivos para o Macintosh, só havia 65.535 blocos de alocação em um disco. O tamanho do bloco era uma função do tamanho do disco em bytes dividido pelo número máximo de blocos de alocação, 65.535. Para discos pequenos, isso era bom, mas quando os tamanhos de disco começaram a se aproximar de 1 GB, o tamanho mínimo do bloco de alocação era 16 KB (1073741824/65535) = 16384.25, mas é necessário truncar para 16384.

O que isso significa é que um arquivo de 1 byte em um disco HFS de 1 GB exigia 16.384 bytes para armazenar no disco rígido, portanto havia muito espaço desperdiçado. Então a Apple criou o invólucro HFS + para reduzir o espaço desperdiçado.

Pode haver uma maneira de definir o tamanho do bloco mais alto, mas por que você deseja?

Aqui está um script rápido do bash que lista todas as saídas do diskinfo para todos os discos conectados no momento.

#!/bin/bash

for disk in /dev/disk*s*
do
    diskutil info $disk
    echo "**************************************************************************************"
    echo " "
done
Ɱark Ƭ
fonte
Obrigado pela sua resposta, Mark, mas acho que você pode ter entendido mal a minha pergunta. Estou procurando o tamanho de um bloco no HFS Plus (o atual sistema de arquivos padrão para Macs). Isso é interessante sobre as falhas do HFS.
precisa saber é o seguinte
O ponto é que isso varia, mas parece ser geralmente 512 bytes.
você precisa saber é o seguinte
0

Parece que o tamanho do bloco do dispositivo agora é de 4096 bytes nos iMacs de 2017 (iMac18,1), causando problemas para as pessoas que usam o ntfsprogs.

js2010
fonte