Como formatar um disco rígido do setor de 4k?

12

Comprei um disco rígido Seagate ST3000DM001 de 3 TB. Foi vendido dentro de um recinto. Formatei para ext4, copiei alguns dados para ele e depois os removi do gabinete e os conectei diretamente à placa-mãe. Meus dados não estavam visíveis para o sistema operacional (estavam vendo uma partição desconhecida de ~ 300GiB e o restante como espaço livre), então comecei a ler sobre as unidades de formato avançado e> 2 TB.

Conectei o disco com o USB novamente, copiei todos os dados e liguei novamente ao sata. Eu usei o gparted para criar uma tabela de partição GPT (o utilitário de disco do ubuntu não me deixaria Error synchronizing after initial wipe: Timed out waiting for object (udisks-error-quark, 0), criei uma grande partição Ext3 de 3Tb, deixei o Align tovalor padrão MiBe formatado.

A unidade é reconhecida corretamente e é montada corretamente. Os arquivos podem ser copiados de e para a unidade com sucesso.

Contudo:

Gparted mostra o disco com setores de 512k que eu sei que não é verdade 1

captura de tela gparted

enquanto cat /sys/block/sdb/queue/physical_block_sizerelatórios4096

Encontrei alguns relatórios libpartedcom problemas nos setores não 512k 2 e outros 3 que dizem que o alinhamento ao MiB é suficiente.

Relatórios separados que a unidade está alinhada quando escolho o mínimo:

(parted) align-check 
alignment type(min/opt)  [optimal]/minimal? min                           
Partition number? 1                                                       
1 aligned
(parted)    

Minha configuração está correta? Tenho penalidades de desempenho porque o disco está formatado com setores de 512k, o gParted está reportando valores falsos ou entendi tudo errado?

  1. http://www.storagereview.com/seagate_barracuda_3tb_review_1tb_platters_st3000dm001
  2. http://ubuntuforums.org/showthread.php?t=1536933&p=9754234#post9754234
  3. http://wdc.custhelp.com/app/answers/detail/a_id/5655
qwazix
fonte
Eu tenho algumas dessas unidades Seagte, bem como unidades WD e Fujitsu / HGST 3TB e todas elas funcionam sem problemas. Você pode estar certo sobre o GParted, porque o meu Seagate atualmente conectado via USB aparece com o tamanho de setor de 4096 no GParted. Minha versão GParted é 0.12.1, o padrão de quantal.
LiveWireBT 27/08/13
Eu acredito que ele mostrará 4096 aqui também se eu conectá-lo via USB. Há alguma mágica no controlador USB-SATA lá.
Qwazix 27/08/2013
Controle de

Respostas:

5

Ele relata 512 bytes porque esse é o tamanho do setor lógico para compatibilidade com versões anteriores com sistemas operacionais mais antigos (Windows). (g) parted alinha as partições a 1 MiB, o que é mais do que suficiente para funcionar corretamente com unidades que usam setores físicos de 4k, por isso é bom do jeito que está.

psusi
fonte
11

Primeiro, a maioria das unidades de formato avançado apresenta um tamanho de setor lógico de 512 bytes, mesmo que o tamanho do setor físico seja de 4096 bytes (4KiB). Isso é feito através da manipulação de dados no firmware da unidade e pode resultar em problemas de desempenho se as partições não estiverem alinhadas corretamente. As chances são de que essa não é a fonte do seu problema, e seu foco no alinhamento de partições é perdido. (Para ter certeza, o alinhamento da partição é importante; simplesmente não é a fonte do seu problema.)

Meu palpite (e éapenas um palpite) é que seu problema resulta da alternância entre um gabinete USB e a conexão direta do disco. Alguns gabinetes convertem setores lógicos de 512 bytes no disco em setores lógicos de 4096 bytes apresentados ao computador - ou seja, o oposto do que o firmware em um disco de formato avançado faz. Não sou positivo, mas suspeito que alguns gabinetes façam isso apenas em discos com mais de 2 TB. Os esquemas de particionamento MBR e GPT se referem aos dados por números de setor, portanto, alterar o tamanho do setor invalida os dados de particionamento. Portanto, se você preparar o disco em um gabinete USB que se traduz dessa maneira e tentar usá-lo diretamente (ou vice-versa), verá erros porque as partições (e até os dados de backup da GPT) não serão onde o computador espera que esteja. Seria como dizer a uma pessoa com os olhos vendados para "

A solução para este problema é preparar e usar o disco em um caminho - quer usar o gabinete USB ou usar uma conexão direta, não ambos. Se os dois forem necessários por algum motivo, você precisará encontrar um gabinete que funcione sem aplicar esse tipo de tradução.

Para testar minha hipótese, você pode usar uma ferramenta (como parted) que reporte tamanhos de setor lógicos . Por exemplo:

sudo parted /dev/sda print
Model: ATA Hitachi HDP72505 (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B

Omiti várias informações dessa saída. O detalhe importante está na linha final mostrada aqui: Os tamanhos de setor lógico e físico são de 512 bytes. Se você executar este teste, reconecte o disco da outra maneira e execute-o novamente, poderá comparar os resultados. Se o tamanho do setor lógico mudar dependendo de como você conecta o disco, minha hipótese está correta e é a fonte do seu problema. Ou pelo menos, é um problema; pode haver outros também. Em particular, o Error synchronizing after initial wipeerro que você mencionou pode indicar outro problema. OTOH, isso poderia ser um efeito colateral departedtentando ler os dados da GPT de backup além do final do disco. De qualquer maneira, se houver uma alteração no tamanho do setor lógico, você deve resolver esse problema antes de lidar com qualquer outra coisa. Se você deseja reparticionar o disco, mas tiver problemas devido ao Error synchronizingerro, tente usar gdiskou cgdisk(no gdiskpacote) em vez de partedou GParted; a gdiskfamília é mais robusta contra erros do que a partedfamília.

Rod Smith
fonte
Eu acredito que o problema é por causa da alternância entre usb e interno. Na verdade, esse foi o meu pensamento inicial e é por isso que recriei a tabela de partição depois de colocar o disco novamente no PC e conectar-me ao SATA. (Tirei-o em primeiro lugar apenas para retirar meus dados). Não quero removê-lo novamente para testar o setor lógico relatado via USB, mas todos os fatos sugerem isso.
Qwazix
Não pretendo continuar alternando interfaces, o disco funciona como está agora, preparado sob conexão SATA. Estou preocupado com as penalidades de desempenho que você mencionou e quero entender o que realmente acontece. parted /dev/sdb printretorna, 512/4096portanto, parece que o gParted reporta o tamanho do setor lógico, o que explica por que o @LiveWireBT vê 4096 para o mesmo disco (conectado via USB) e também confirma seu palpite, conforme descrito acima.
Qwazix
Tinham o mesmo problema com uma unidade externa Integral Store'n'Go, o tamanho de sector lógico é de 512, enquanto o tamanho físico é 4096.
gaborous
4

Foram feitas alterações no kernel e nos utilitários do Linux para oferecer suporte a unidades de formato avançado. Essas alterações garantem que todas as partições nas unidades de formato avançado estejam alinhadas corretamente nos limites do setor 4K. O suporte ao kernel para unidades de formato avançado está disponível nas versões 2.6.31 e superior. O suporte para porcionamento e formatação de unidades Advanced Format está disponível nos seguintes utilitários Linux:

Fdisk: O GNU Fdisk é um utilitário de linha de comando que particiona discos rígidos. As versões 1.2.3 e superior suportam unidades de formato avançado.

Parted: GNU Parted é um utilitário gráfico para particionar discos rígidos. As versões 2.1 e superior suportam unidades de formato avançado.

Os discos nativos de 4K (4Kn) têm um tamanho de setor lógico de 4 KB. Os sistemas operacionais modernos podem armazenar dados nesses discos, mas geralmente não podem inicializar a partir desses discos. Esses discos geralmente são unidades externas com conexão USB.

Para criar uma partição usada como um dispositivo de armazenamento de mídia, basta pressionar Ctrl+ Alt+ Tno teclado para abrir o Terminal. Quando abrir, execute o (s) comando (s) abaixo:

sudo mkfs.ext4 -m 0 /dev/sdb1

A maioria dos discos de 4k tem um tamanho físico de setor de 4096 bytes, para que 3TB caibam nas placas, mas ainda têm tamanho de setor lógico de 512B para compatibilidade com sistemas operacionais que esperam que um setor seja 512B. É por isso que quando você usa o comando print no parted para imprimir os detalhes, é o tamanho do setor lógico / físico 512B / 4096B. Isso é normal.

Essa "conversão" é feita pela inteligência no próprio disco e é normal. É assim que deve funcionar.

Se você não conseguir ver o 3TB inteiro primeiro verifique no BIOS que não está limitando o tamanho do disco. Talvez você precise da atualização do BIOS para suportar o disco.

Também usar parted para criar partição a partir de 0, o que é um erro. Você precisa iniciar a primeira partição no setor 2048, que é equivalente a 1MiB, para que as partições no disco estejam alinhadas para um desempenho ideal.

Portanto, altere a unidade para MiB, imprima os detalhes do disco que também imprimirão o tamanho do disco no MiB e crie a partição (se você quiser apenas uma partição única) começando de 1MiB e terminando no último MiB (ou um antes do último) .

Por exemplo, um disco de 3 TB deve ter, na realidade, algo como 2.861.022 MiB. Portanto, seria como criar uma única partição que abranja todo o disco em um dispositivo de disco chamado / dev / sdX (substitua o X pela letra correta):

sudo parted /dev/sdX
unit MiB
mklabel gpt
print (to see the total size in MiB)
mkpart primary 1 2861022
quit

Se o tamanho do disco for de alguns MiB mais ou menos que 2861022, ajuste o local final.

É isso aí. Depois disso, crie o sistema de arquivos que você deseja na partição.

Fontes e leitura extra

Unidades do setor de 4K e Linux

Erro ao verificar e instalar unidades de 4k no Linux

Fóruns do Ubuntu

Mitch
fonte
Obrigado pela resposta, mas realmente não responde à minha pergunta. Entendo que o kernel reconhece o tamanho do setor da unidade e que o gparted também deve reconhecê-lo, mas informa de outra forma e estou curioso para saber se há uma explicação para isso, se é um bug ou se fiz algo errado .
Qwazix
0

Contanto que você alinhe suas partições em um múltiplo de 4KB, você estará bem. Caso contrário, você não precisa fazer nada de especial em unidades com setores físicos de 4KB.

O software de particionamento antigo alinhava partições em um múltiplo de setores de 63x512B, o que resultaria em um desempenho ruim se a unidade tivesse setores físicos de 4KB, porque são 31 e meio KiloBytes, NÃO um múltiplo de 4KB.

Virtualmente, nenhum software de particionamento disponível agora no Ubuntu fará mais isso (a menos que você solicite especificamente). A maioria se alinhará a um múltiplo de 1MiB (setores de 2048x512B, que também são setores de 256x4KB) por padrão.

O que aconteceria se você não o alinhar?

Se você não alinhar as partições a múltiplos de 4KB, o pior que acontecerá é uma perda de desempenho (bastante significativa para arquivos pequenos). Unidades com setores de 4KB tendem a emular setores de 512B para compatibilidade com sistemas existentes. Portanto, eles funcionam perfeitamente bem se você apenas os tratar como uma unidade do setor de 512B. Mas quando você escreve em uma única área de 512B, ele reescreve um setor inteiro de 4KB.

Portanto, por motivos de desempenho, é importante garantir que os clusters de 4KB que você usa no sistema de arquivos estejam alinhados com os setores de 4KB na unidade, para que uma única gravação de cluster não resulte na necessidade de gravar dois setores de 4KB na unidade.

thomasrutter
fonte