Por que meu disco de 3 TB mostra um tamanho real de ~ 800 GB com várias ferramentas, exceto ferramentas inteligentes?

5

Disco do sistema começou a falhar e, portanto, eu corri para comprar um novo disco rígido 10 minutos antes da hora de fechamento: / Isto é para um disco do sistema de 32 bits. Desde há pouco tempo, eu tinha verificado o Seagate Barracuda 2TB, mas convenci o vendedor a comprar um Disco Rígido WD Red NAS de 3 TB como um lote de clientes que devolveram discos da Seagate com erros últimos meses. Seagate em várias cores. Fui de 2TB para 3TB devido ao custo e meu pressentimento para mergulhar em essa liga - e me forçar a entrar no GPT. Os discos NAS devem estar OK como discos do SO, por exemplo para esta caixa que está funcionando 24 horas por dia, 7 dias por semana, com muita atividade como codificação, etc. (como em baixa E / S), sem jogos, processamento de mídia como conversão de cordas, renderização (embora isso seja feito principalmente por cluster).

Minha principal questão é sobre o tamanho do disco usando várias ferramentas.

(f) disco:

#fdisk -l
#disk -l

Disk /dev/sdc: 801.6 GB, 801569726464 bytes
255 heads, 63 sectors/track, 97451 cylinders, total 1565565872 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: 0x00000000

lsblk:

#lsblk
sdc      8:32   0 746.5G  0 disk

lshw:

#lshw -class disk
*-disk
     description: SCSI Disk
     physical id: 0.0.0
     bus info: scsi@2:0.0.0
     logical name: /dev/sdc
     size: 746GiB (801GB)
     configuration: sectorsize=512
  • Por que eles estão produzindo 764 GiB? Poderia haver algum problema?

  • Como isso exigiria GPT; alguma coisa que eu deveria estar ciente / tomar cuidado extra com? Por exemplo. algum problema com 32 bits?

S.M.A.R.T:

Ter feito smartctl -t <conveyance|short> , ambos produzem OK.

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%         0         -
# 2  Conveyance offline  Completed without error       00%         0         -

S.M.A.R.T também produz o tamanho correto (obviamente):

# smartctl --info /dev/sdc
smartctl 5.43 2012-06-30 r3573 [i686-linux-3.5.0-51-generic] (local build)

=== START OF INFORMATION SECTION ===
Device Model:     WDC WD30EFRX-68EUZN0
Serial Number:    WD-XXXXXXXXXXXX
LU WWN Device Id: X XXXXXX XXXXXXXXX
Firmware Version: 82.00A82
User Capacity:    3,000,592,982,016 bytes [3.00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   8
ATA Standard is:  ACS-2 (revision not indicated)
Local Time is:    Sat Jan 10 18:40:58 2015 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

Não tem muita relevância, mas 1 hora de uso de vários testes, etc. rende:

Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x002f   100   253   051    Pre-fail  Always       -       0
  3 Spin_Up_Time            0x0027   100   253   021    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       1
  5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x002e   100   253   000    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       1
 10 Spin_Retry_Count        0x0032   100   253   000    Old_age   Always       -       0
 11 Calibration_Retry_Count 0x0032   100   253   000    Old_age   Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       1
192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       0
193 Load_Cycle_Count        0x0032   200   200   000    Old_age   Always       -       6
194 Temperature_Celsius     0x0022   131   125   000    Old_age   Always       -       19
196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   200   200   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   100   253   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   200   253   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0008   100   253   000    Old_age   Offline      -       0

Pergunta secundária:

Se acima de OK, qualquer outra coisa que é inteligente fazer antes de instalar o SO no disco?

    
por user129107 10.01.2015 / 20:04

4 respostas

3

Se você estiver usando um sistema baseado em Debian-Ubuntu (como o Linux Mint), então fdisk (util-linux 2.20.1) não entende o GPT.

Você deve experimentar parted -l e particionar / formatou a unidade ainda? Usar gparted (se você estiver usando uma GUI) provavelmente seria mais fácil.

Não tenho certeza sobre lsblk , ele diz que lê sysfs . É possível que exista apenas uma pequena partição na unidade ou um MBR / GPT estranho.

Mas o comentário e o link de Cristian Ciupitu do Seagate soam muito promissores, mas parece ser sobre drivers do Windows ...

Procurando por "parted Erro: / dev / sdc: rótulo de disco não reconhecido" trouxe este link que parece fazer o que você quiser: Como criar uma partição no Linux para o tamanho de > 2TB usando o GPT dividido . Eu tenho em negrito ( embiggened? ) a mensagem de erro em questão, parece que deve ir embora depois de criar um GPT. (Aposto que usar gparted seria semelhante / mais fácil.)

Use parted’s mklabel command to set disk label to GPT as shown below.

# parted /dev/sdb
GNU Parted 2.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) print

Error: /dev/sdb: unrecognised disk label

(parted) mklabel gpt

(parted) print
Model: Unknown (unknown)
Disk /dev/sdb: 5909GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End  Size  File system  Name  Flags

[Então continua fazendo uma partição, mas os comandos acima parecem os mais relevantes]

Create >2TB Partition using Parted mkpart

Use parted’s mkpart command as shown below to create partition that is greater than 2TB. In this example, we are creating a partition that is roughly of 6TB in size.

# parted /dev/sdb

(parted) mkpart primary 0GB 5909GB

(parted) print
Model: Unknown (unknown)
Disk /dev/sdb: 5909GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  5909GB  5909GB               primary

Se você tentar criar um GPT, haverá boas mensagens de erro para pesquisar. Ou se ainda relatar o tamanho como 800GB, eu começaria a suspeitar que pode haver algo errado com o disco, mas como a SMART acha que está tudo bem, isso deixa os drivers / kernel do linux ...

E você não está usando algum tipo de gabinete USB externo? Está conectado diretamente ao computador, como um HD interno?

    
por 10.01.2015 / 21:15
2

Você parece ter construído seu próprio kernel, e é apenas 32 bits. Para ter acesso a > 2 discos TB, você tem que habilitar CONFIG_LBDAF (suporte para dispositivos de bloco grandes (2TB +) e arquivos), embora eu pudesse jurar que, sem ele, o tamanho era limitado a 2 TB, em vez de ficar no módulo de 32 bits.

    
por 11.01.2015 / 00:45
1

Publicando uma "resposta" , que é mais uma observação, já que a questão se tornaria um pouco confusa e longa com essas informações.

Fez mais alguns testes. Um com código C simples usando ioctl() e lseek() .

ioctl BLKGETSIZE64  : 801569726464 (Same value as the tools)
ioctl BLKGETSIZE    :   1565565872 (Same as sectors reported by fdisk)
lseek Size          : 801569726464

Uma rápida olhada na fonte para lsblk , fdisk e lshw todos eles usam ioctl() ou sysfs para obter os dados de tamanho. (Tome "eles usam" luz aqui, pois eu só desnatado alguma fonte online.)

lsblk usa setores, ( /sys/block/sdc/size ) e left shift por 9. (AKA × 512 ou × 2 ^ 9)

Sectors: 1565565872                      (From printout in Q)
         1565565872 << 9 = 801569726464

Olhando mais de perto o tamanho relatado e mudando meu cérebro para binário em vez de decimal, também reconhecemos rapidamente que:

3000592982016 = 00101011101010100001010001110110000000000000 (44-bits (48))
 801569726464 =     1011101010100001010001110110000000000000 (40-bits)

Mais ainda:

Size by SMART - Size by tools (in effect kernel)
3000592982016 - 801569726464 = 2199023255552 == 2^32 * 512 or 2^32 << 9

fdisk também informa o tamanho do setor físico como 512 em oposição ao 4096 da SMART, o que talvez indique algum problema no controlador.

    
por 11.01.2015 / 08:48
0

Para mim, o problema era que eu estava usando (mesmo modelo de unidade) com um gabinete USB externo. Depois de conectá-lo diretamente a um conector SATA, ele passou a ser reconhecido como 3TB. Se você está tendo o mesmo problema e usando uma interface USB para a unidade, tente conectar a unidade diretamente a uma conexão SATA.

Como @phuclv observou, há uma grande explicação disso em Superusuário em link

    
por 07.06.2018 / 19:58

Tags