terça-feira, 14 de janeiro de 2020

Preparando um novo HD no FreeBSD

Neste final de semana preparei um novo HD externo para funcionar no FreeBSD. Mas, mesmo sendo externo, quase tudo que vou falar aqui funciona para internos também.

Esta preparação incluiu testar o HD. Eu acho que antes de começar a usar um HD deve-se fazer testes nele. Eu falo por experiência, pois vi HDs novos com problemas, e que não passaram nos testes.

Aliás, parte do que vou falar aqui, especialmente o início, também vale para outros sistemas operacionais, especialmente os Unix Like. E estes testes podem ser feitos num sistema diferente do sistema final onde vai ser instalado o HD.

Sobre a escolha do HD

A história começa com a escolha do HD, que foi um pouco complicada.
Faz tempo que pensava em comprar um HD externo alimentado pela USB para fazer backup do notebook durante as viagens à Paraty. Ele conteria todas as fotos e ficaria em Paraty. Seria o meu backup remoto, longe de casa.

Eu poderia usar algum sistema de armazenamento remoto (na nuvem, por exemplo), mas a mensalidade para o espaço em disco que preciso seria muito cara, e quando vou à Paraty eu dependo de Internet via 3G. O backup via Internet comeria o plano todo de tráfego muito rapidamente. Então escolhi um HD externo alimentado pela USB.

E porque este HD deve ser alimentado pela USB? Para ser alimentado pela bateria do notebook e não interromper o funcionamento em caso de falta de luz, piscada de luz etc, já que a energia de Paraty não é tão estável quanto no Rio de Janeiro. Se o HD parar pode dar pane no sistema, e até na cópia dos arquivos em andamento.

Por um bom tempo eu pensava em um de 4 TB, mas com a quantidade de fotos que tenho atualmente não sobraria muito espaço. Descobri que foi lançado o de 5 TB alimentado pela USB. Cheguei a ver o de 4 TB a bom preço, mas não no Centro do Rio de Janeiro, onde trabalho. No Centro do Rio de Janeiro os mais baratos HDs de 4 TB estavam um pouco abaixo dos R$ 560,00, e o de 5 TB começava em R$ 700,00 (Segundo pesquisas feitas no site Boa Dica em 10/01/2020.). Ambos divididos pelos respectivos tamanhos davam R$ 140,00 por Tera Byte. A dúvida era se eu gastava os R$ 140,00 a mais pelo maior ou não.

Decidi pensar mais longe, mais a longo prazo, pois o de 4 TB estaria mais perto de ficar lotado do que o outro.

Reconhecimento

O meu sistema reconheceu o HD novo como da9, então ele será referenciado aqui no texto como /dev/da9.

Isto pode mudar a cada vez que eu plugar, pois depende do que está conectado no sistema. Isto também mudará segundo o seu caso.

Abaixo está a informação obtida do dmesg sobre o HD:

ugen0.7: <Seagate BUP Portable> at usbus0
umass2 on uhub1
umass2: <Seagate BUP Portable, class 0/0, rev 3.20/1.00, addr 7> on usbus0
umass2:  SCSI over Bulk-Only; quirks = 0xc101
umass2:12:2: Attached to scbus12
da9 at umass-sim2 bus 2 scbus12 target 0 lun 0
da9: <Seagate BUP Portable 0004> Fixed Direct Access SPC-4 SCSI device
da9: Serial Number 00000000NAB9JDTT
da9: 400.000MB/s transfers
da9: 4769307MB (9767541167 512 byte sectors)
da9: quirks=0x2<NO_6_BYTE>
GEOM: da9: the secondary GPT table is corrupt or invalid.
GEOM: da9: using the primary only -- recovery suggested.
GEOM: diskid/DISK-00000000NAB9JDTT: the secondary GPT table is corrupt or invalid.
GEOM: diskid/DISK-00000000NAB9JDTT: using the primary only -- recovery suggested.


Cada sistema irá reconhecer de uma forma, dando mensagens de uma forma, e o conteúdo delas também depende do HD.

O reconhecimento encontrou duas partições, que receberam os nomes de da9p1 e da9p2, como mostrado abaixo quando foi pedida a lista para completar /dev/da9.

root:SUPER[409] smartctl -a /dev/da9
da9%   da9p1% da9p2%


S.M.A.R.T.

Aqui começam os testes.

O S.M.A.R.T. é um sistema de monitoramento e teste de HDs. Além de dizer o status do HD, ele pode ser usado para testar o HD.

root:SUPER[409] smartctl -a /dev/da9
smartctl 7.0 2018-12-30 r4883 [FreeBSD 12.0-STABLE amd64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda 2.5 5400
Device Model:     ST5000LM000-2AN170
Serial Number:    WCJ27HCJ
LU WWN Device Id: 5 000c50 0c2f3f01d
Firmware Version: 0001
User Capacity:    5.000.981.078.016 bytes [5,00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5526 rpm
Form Factor:      2.5 inches
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-3 T13/2161-D revision 5
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Fri Jan 10 23:06:06 2020 -02
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x00) Offline data collection activity
                                        was never started.
                                        Auto Offline Data Collection: Disabled.
Self-test execution status:      (   0) The previous self-test routine completed
                                        without error or no self-test has ever
                                        been run.
Total time to complete Offline
data collection:                (    0) seconds.
Offline data collection
capabilities:                    (0x73) SMART execute Offline immediate.
                                        Auto Offline data collection on/off support.
                                        Suspend Offline collection upon new
                                        command.
                                        No Offline surface scan supported.
                                        Self-test supported.
                                        Conveyance Self-test supported.
                                        Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                                        power-saving mode.
                                        Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                                        General Purpose Logging supported.
Short self-test routine
recommended polling time:        (   1) minutes.
Extended self-test routine
recommended polling time:        ( 814) minutes.
Conveyance self-test routine
recommended polling time:        (   2) minutes.
SCT capabilities:              (0x30a5) SCT Status supported.
                                        SCT Data Table supported.

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   065   065   006    Pre-fail  Always       -       3338689
  3 Spin_Up_Time            0x0003   097   097   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       7
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   100   253   045    Pre-fail  Always       -       3736
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       0 (206 208 0)
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       7
183 SATA_Downshift_Count    0x0032   100   100   000    Old_age   Always       -       0
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   100   000    Old_age   Always       -       0
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   070   070   040    Old_age   Always       -       30 (Min/Max 28/30)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       6
193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       12
194 Temperature_Celsius     0x0022   030   040   000    Old_age   Always       -       30 (0 21 0 0 0)
195 Hardware_ECC_Recovered  0x001a   065   065   000    Old_age   Always       -       3338689
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
240 Head_Flying_Hours       0x0000   100   253   000    Old_age   Offline      -       0 (172 51 0)
241 Total_LBAs_Written      0x0000   100   253   000    Old_age   Offline      -       1166127
242 Total_LBAs_Read         0x0000   100   253   000    Old_age   Offline      -       2172562
254 Free_Fall_Sensor        0x0032   100   100   000    Old_age   Always       -       0

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.


Dá para ver que o HD é novinho pelo parâmetro 9, Power On Hours, mas que ele já tinha sido ligado como diz o parâmetro 12, Power Cycle Count. Pode ter sido algum teste na fábrica.

Então vamos começar os testes, começando pelo curto. Este teste é rápido, e por isto vale a pena para começar por ele. Se o disco já fracassar, então não se esperou muito pelo resultado.

root:SUPER[410] smartctl -t short /dev/da9
smartctl 7.0 2018-12-30 r4883 [FreeBSD 12.0-STABLE amd64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org


O resultado pode ser visto abaixo:

root:SUPER[412] smartctl -a /dev/da9
smartctl 7.0 2018-12-30 r4883 [FreeBSD 12.0-STABLE amd64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda 2.5 5400
Device Model:     ST5000LM000-2AN170
Serial Number:    WCJ27HCJ
LU WWN Device Id: 5 000c50 0c2f3f01d
Firmware Version: 0001
User Capacity:    5.000.981.078.016 bytes [5,00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5526 rpm
Form Factor:      2.5 inches
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-3 T13/2161-D revision 5
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Fri Jan 10 23:10:59 2020 -02
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x00) Offline data collection activity
                                        was never started.
                                        Auto Offline Data Collection: Disabled.
Self-test execution status:      (   0) The previous self-test routine completed
                                        without error or no self-test has ever
                                        been run.
Total time to complete Offline
data collection:                (    0) seconds.
Offline data collection
capabilities:                    (0x73) SMART execute Offline immediate.
                                        Auto Offline data collection on/off support.
                                        Suspend Offline collection upon new
                                        command.
                                        No Offline surface scan supported.
                                        Self-test supported.
                                        Conveyance Self-test supported.
                                        Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                                        power-saving mode.
                                        Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                                        General Purpose Logging supported.
Short self-test routine
recommended polling time:        (   1) minutes.
Extended self-test routine
recommended polling time:        ( 814) minutes.
Conveyance self-test routine
recommended polling time:        (   2) minutes.
SCT capabilities:              (0x30a5) SCT Status supported.
                                        SCT Data Table supported.

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   065   065   006    Pre-fail  Always       -       3338689
  3 Spin_Up_Time            0x0003   097   097   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       7
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   100   253   045    Pre-fail  Always       -       8532
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       0 (71 87 0)
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       7
183 SATA_Downshift_Count    0x0032   100   100   000    Old_age   Always       -       0
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   100   000    Old_age   Always       -       0
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   067   067   040    Old_age   Always       -       33 (Min/Max 28/33)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       8
193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       16
194 Temperature_Celsius     0x0022   033   040   000    Old_age   Always       -       33 (0 21 0 0 0)
195 Hardware_ECC_Recovered  0x001a   065   065   000    Old_age   Always       -       3338689
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
240 Head_Flying_Hours       0x0000   100   253   000    Old_age   Offline      -       0 (179 141 0)
241 Total_LBAs_Written      0x0000   100   253   000    Old_age   Offline      -       1166127
242 Total_LBAs_Read         0x0000   100   253   000    Old_age   Offline      -       2172562
254 Free_Fall_Sensor        0x0032   100   100   000    Old_age   Always       -       0

SMART Error Log Version: 1
No Errors Logged

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         -

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.


Sim, é um exagero colocar a saída toda do programa, mas basta procurar por "SMART Self-test log structure revision number 1" para ver o resultado. Pode ver que foi rápido, pois o LifeTime está em zero, assim como Power On Hours.

Como passou no primeiro teste vamos para o segundo.

root:SUPER[413] smartctl -t long /dev/da9
smartctl 7.0 2018-12-30 r4883 [FreeBSD 12.0-STABLE amd64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Extended self-test routine immediately in off-line mode".
Drive command "Execute SMART Extended self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 814 minutes for test to complete.
Test will complete after Sat Jan 11 12:47:17 2020

Use smartctl -X to abort test.

Este teste é demorado. Em alguns HDs de 4 TB que testei passa das 10 horas, e este HD é maior ainda, pois é maior. O tempo estimado é de 814 minutos, o que dá pouco mais de 13 horas e meia.

É possível acompanhar o  teste em andamento, mas infelizmente não guardei nenhuma saída do programa mostrando que tem um este em andamento. Ele aparece na mesma lista dos testes terminados.

Como este teste não bloqueia o uso do HD, resolvi olhar como estava o esquema de particionamento do HD.

Aliás, aconselho rodar este teste periodicamente nos seus HDs, e até colocar no sistema de agendamento de tarefas do seu sistema. Eu fiz isto, e posso sempre olhar o resultado dos últimos testes feitos e saber a saúde dos HDs.

Abaixo está o esquema de particionamento:

root:SUPER[416] gpart show /dev/da9
=>        34  9767541100  da9  GPT  (4.5T) [CORRUPT]
          34           6       - free -  (3.0K)
          40      409600    1  efi  (200M)
      409640        2008       - free -  (1.0M)
      411648  9767129088    2  ms-basic-data  (4.5T)
  9767540736         398       - free -  (199K)

Como mostrado antes, realmente o HD estava dividido em duas partições.

Repare bem o "[CORRUPT]". Ele vai ser importante adiante.

No dia seguinte eu vi o resultado do teste, e notei que demorou cerca de 12 horas, o que é menos do que o estimado.

root:SUPER[426] smartctl -a /dev/da9
smartctl 7.0 2018-12-30 r4883 [FreeBSD 12.0-STABLE amd64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda 2.5 5400
Device Model:     ST5000LM000-2AN170
Serial Number:    WCJ27HCJ
LU WWN Device Id: 5 000c50 0c2f3f01d
Firmware Version: 0001
User Capacity:    5.000.981.078.016 bytes [5,00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5526 rpm
Form Factor:      2.5 inches
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-3 T13/2161-D revision 5
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Sat Jan 11 11:59:35 2020 -02
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x00) Offline data collection activity
                                        was never started.
                                        Auto Offline Data Collection: Disabled.
Self-test execution status:      (   0) The previous self-test routine completed
                                        without error or no self-test has ever
                                        been run.
Total time to complete Offline
data collection:                (    0) seconds.
Offline data collection
capabilities:                    (0x73) SMART execute Offline immediate.
                                        Auto Offline data collection on/off support.
                                        Suspend Offline collection upon new
                                        command.
                                        No Offline surface scan supported.
                                        Self-test supported.
                                        Conveyance Self-test supported.
                                        Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                                        power-saving mode.
                                        Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                                        General Purpose Logging supported.
Short self-test routine
recommended polling time:        (   1) minutes.
Extended self-test routine
recommended polling time:        ( 814) minutes.
Conveyance self-test routine
recommended polling time:        (   2) minutes.
SCT capabilities:              (0x30a5) SCT Status supported.
                                        SCT Data Table supported.

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   065   065   006    Pre-fail  Always       -       3338689
  3 Spin_Up_Time            0x0003   097   097   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       7
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   066   060   045    Pre-fail  Always       -       3793175
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       12 (214 4 0)
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       7
183 SATA_Downshift_Count    0x0032   100   100   000    Old_age   Always       -       0
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   100   000    Old_age   Always       -       0
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   053   046   040    Old_age   Always       -       47 (Min/Max 28/54)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       10
193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       20
194 Temperature_Celsius     0x0022   047   054   000    Old_age   Always       -       47 (0 21 0 0 0)
195 Hardware_ECC_Recovered  0x001a   065   065   000    Old_age   Always       -       3338689
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
240 Head_Flying_Hours       0x0000   100   253   000    Old_age   Offline      -       8 (250 201 0)
241 Total_LBAs_Written      0x0000   100   253   000    Old_age   Offline      -       1166127
242 Total_LBAs_Read         0x0000   100   253   000    Old_age   Offline      -       2172562
254 Free_Fall_Sensor        0x0032   100   100   000    Old_age   Always       -       0

SMART Error Log Version: 1
No Errors Logged

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

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

O resultado é o primeiro da lista "SMART Self-test log structure revision number 1". Sempre está no topo o teste mais recente.

O veredito é que o HD está bom. Passou perfeitamente em todos os testes.

Tudo feito até este ponto pode ser feito em qualquer HD, não importando em qual sistema operacional ele será usado. Até aqui nenhum dado foi perdido ou alterado, e os únicos dados gravados nele são os resultados dos testes e os que seriam gravados no S.M.A.R.T. devido a este tempo de uso, e nada mais.

Refazendo as partições

Agora tenho que refazer as partições, pois as que vieram me são completamente inúteis. Então aqui começa a etapa que é destrutiva para os dados contidos no HD.

Posso falar claramente que tive problemas por este procedimento não ser rotina para mim, mas já fiz antes e tenho parte dele anotado em uma lista de discussão poe e-mail. Sempre que preciso recorro a esta postagem na lista de discussão, e depois de publicada esta postagem no meu blog recorrerei a ela.

Outro problema que tive se refere ao "[CORRUPT]" mostrado antes. Isto impediu alguns procedimentos.

Comecei tentando criar a tabela de particionamento:

root:SUPER[427] gpart create -s GPT /dev/da9
gpart: geom 'da9': File exists


Dá para ver pela mensagem de erro que não funcionou. Ela existia.

Então tentei remover as partições que existiam:

root:SUPER[428] gpart delete -i 1 /dev/da9
gpart: table 'da9' is corrupt: Operation not permitted


Como a tabela parecia corrompida, não foi possível remover a partição. O gpart se recusou a deletar.

Então tentei apagar na força bruta:

root:SUPER[429] dd if=/dev/zero of=/dev/da9 bs=1048576 count=1024
1024+0 records in
1024+0 records out
1073741824 bytes transferred in 9.114867 secs (117801151 bytes/sec)

root:SUPER[430] gpart create -s GPT /dev/da9
gpart: geom 'da9': File exists
root:SUPER[431] gpart show /dev/da9
=>        34  9767541100  da9  GPT  (4.5T) [CORRUPT]
          34        2014       - free -  (1.0M)
        2048      262144    1  ms-reserved  (128M)
      264192  9767276544    2  ms-basic-data  (4.5T)
  9767540736         398       - free -  (199K)


Assim escrevi 1 GB no HD pensando que isto apagaria a tabela de partição, mas não funcionou. O particionamento continuou existindo.

Uma opção era de fazer isto pelo HD inteiro, mas fazendo uma conta rápida, com o tempo que isto demorou, pode-se pensar que demoraria mais de 11 horas. Eu nem cheguei a fazer a conta na hora, pois já era óbvio que demoraria demais, por isto que limitei o tamanho escrito.

Então resolvi recorrer ao manual do gpart, e assim descobri que tinha como destruir o particionamento. (Nada como recorrer ao manual.)

root:SUPER[432] gpart destroy /dev/da9
gpart: Device busy
root:SUPER[433] gpart destroy -F /dev/da9
da9 destroyed

A primeira tentativa falhou, então usei a opção de fazer forçado, "-F".

Agora tinha que conferir se funcionou:

root:SUPER[434] gpart show /dev/da9
gpart: No such geom: /dev/da9.


E funcionou. Agora poderia prosseguir.

root:SUPER[435] gpart create -s GPT /dev/da9
da9 created
root:SUPER[436] gpart show /dev/da9
=>        40  9767541088  da9  GPT  (4.5T)
          40  9767541088       - free -  (4.5T)
root:SUPER[437] gpart add -t freebsd-ufs /dev/da9
da9p1 added
root:SUPER[438] gpart show /dev/da9
=>        40  9767541088  da9  GPT  (4.5T)
          40  9767541088    1  freebsd-ufs  (4.5T)
root:SUPER[439] ls /dev/da9*
/dev/da9   /dev/da9p1


Consegui criar o particionamento, listei e vi que foi criado e estava vazio, então criei a partição do FreeBSD. Depois listei as partições deste HD que estavam no /dev.

Tudo prosseguia como desejado.

Criando o sistema de arquivos

Foi decidido pelo sistema de arquivos UFS2. Um dos motivos é a simplicidade e pouco consumo de memória do sistema. O UFS1 estava fora de questão devido ao tamanho do HD.  Opção para isto é "-O 2", e o comando para criação será o newfs.

Um outro aspecto é a não necessidade de alto desempenho, pois é um backup, e não algo para ser usado continuamente. Será usado esporadicamente para recuperação, e será usado esporadicamente para armazenamento (exceto na primeira vez). Então foi pedia a otimização para espaço com a opção "-o space".

Outro aspecto é que não precisa de reserva de emergência, que tipicamente é de 8%, reservado ao root. Se o disco atingir este limite, somente o root pode escrever no disco. Este limite foi reduzido para 1%. Opção "-m 1".

Ele poderá ter um nome, um label, para ser usado na montagem, o que é mais uma coisa para identificar o disco. Opção "-L Bkp_Paraty".

Como os arquivos vão ser grandes, no mínimo na ordem de 1 MB, então foi pedida uma blocagem grande. Opção "-b 65536".

Este HD é para backup de um conteúdo bem específico, então tenho que adequar o sistema de arquivos ao tipo de conteúdo que será guardado nele. Se não configurar adequadamente eu desperdiço espaço em disco, ou sobra espaço em disco e esgota a tabela de inode, e assim não é mais possível armazenar mais aquivos. este é o parâmetro mais delicado a escolher.

Praticamente tudo que será armazenado neste HD são arquivos de fotografia, em duas versões, raw e JPEG, de praticamente de 3 câmeras fotográficas, fora as fotos ocasionais do celular e mais de 5 mil arquivos de fotos de um Palm Zire 72 que está aposentado. Uma destas câmeras ainda é usada, mas ocasionalmente. Outra, a que mais tem fotos, quase não é mais usada, e a terceira é bem usada, e é a que gera os maiores arquivos.

Então eu devia dar uma olhada nos tamanhos gerados por cada uma das câmeras para estimar o tamanho da tabela de inodes. Na realidade não se escolhe a quantidade de inodes, e sim, uma média de tamanho de arquivo, e assim o newfs pega o tamanho do sistema de arquivos que está criando e divide por este tamanho médio informado para obter a quantidade de inodes a serem gerados.

Com a primeira câmera os arquivos raw tipicamente são de 12 a 13 MB, e os JPEG são de 1 a 2 MB. Isto dá um tamanho médio estimado de cerca de 7 MB por arquivo.

goffredo:SUPER[1024] l mnt/Lumix_FZ28/cartao_0001/DCIM/134_PANA/ | head -9
total 13172176
 1408 -r-xr-xr-x  1 goffredo  users   1357142 15 dez  2009 P1340001.JPG
12032 -r-xr-xr-x  1 goffredo  users  12227072 15 dez  2009 P1340001.RW2
 1600 -r-xr-xr-x  1 goffredo  users   1567530 15 dez  2009 P1340002.JPG
12160 -r-xr-xr-x  1 goffredo  users  12321792 15 dez  2009 P1340002.RW2
 1536 -r-xr-xr-x  1 goffredo  users   1483145 15 dez  2009 P1340003.JPG
12096 -r-xr-xr-x  1 goffredo  users  12292608 15 dez  2009 P1340003.RW2
 1536 -r-xr-xr-x  1 goffredo  users   1475087 15 dez  2009 P1340004.JPG
12096 -r-xr-xr-x  1 goffredo  users  12284416 15 dez  2009 P1340004.RW2


A segunda câmera tem mais resolução, e arquivos maiores, além de mais qualidade no JPEG.

goffredo:SUPER[1027] l mnt/Nikon_D90/N_D90_00.009/100NCD90/ | head -9
total 15878528
 4288 -r-xr-xr-x  1 goffredo  users   4273261 28 ago  2011 DSC_4183.JPG
 9344 -r-xr-xr-x  1 goffredo  users   9492871 28 ago  2011 DSC_4183.NEF
 4352 -r-xr-xr-x  1 goffredo  users   4378738 28 ago  2011 DSC_4184.JPG
 9472 -r-xr-xr-x  1 goffredo  users   9603845 28 ago  2011 DSC_4184.NEF
 5696 -r-xr-xr-x  1 goffredo  users   5752981 28 ago  2011 DSC_4185.JPG
11008 -r-xr-xr-x  1 goffredo  users  11152299 28 ago  2011 DSC_4185.NEF
 6464 -r-xr-xr-x  1 goffredo  users   6503848 28 ago  2011 DSC_4186.JPG
11520 -r-xr-xr-x  1 goffredo  users  11691933 28 ago  2011 DSC_4186.NEF


Os arquivos raw variam de 9 a 12 MB, e os JPEG de 4 a 7 MB. Então o tamanho varia de 13 a 19 MB por par de arquivos de cada foto, então pode-se estimar cerca de 8 MB por arquivo para esta câmera.

A terceira câmera tem mais resolução ainda. Então os arquivos são maiores ainda.

goffredo:SUPER[1034] l mnt/Nikon_Df/N_D90_00.016/246NC_DF | head -9
total 4114304
 5120 -r-xr-xr-x  1 goffredo  users   5131745 12 out  2018 NDF_8252.JPG
17664 -r-xr-xr-x  1 goffredo  users  17999989 12 out  2018 NDF_8252.NEF
 5760 -r-xr-xr-x  1 goffredo  users   5822451 12 out  2018 NDF_8253.JPG
17856 -r-xr-xr-x  1 goffredo  users  18169340 12 out  2018 NDF_8253.NEF
 6080 -r-xr-xr-x  1 goffredo  users   6158802 12 out  2018 NDF_8254.JPG
18112 -r-xr-xr-x  1 goffredo  users  18452570 12 out  2018 NDF_8254.NEF
 4480 -r-xr-xr-x  1 goffredo  users   4465938 12 out  2018 NDF_8255.JPG
17408 -r-xr-xr-x  1 goffredo  users  17699310 12 out  2018 NDF_8255.NEF
goffredo:SUPER[1035] l mnt/Nikon_Df/N_D90_00.016/245NC_DF | head -9
total 27521472
 6848 -r-xr-xr-x  1 goffredo  users   6930716 15 set  2018 NDF_7176.JPG
19072 -r-xr-xr-x  1 goffredo  users  19409851 15 set  2018 NDF_7176.NEF
 7552 -r-xr-xr-x  1 goffredo  users   7647615 15 set  2018 NDF_7177.JPG
19584 -r-xr-xr-x  1 goffredo  users  19929074 15 set  2018 NDF_7177.NEF
 7104 -r-xr-xr-x  1 goffredo  users   7164312 15 set  2018 NDF_7178.JPG
18752 -r-xr-xr-x  1 goffredo  users  19135077 15 set  2018 NDF_7178.NEF
 8000 -r-xr-xr-x  1 goffredo  users   8071044 15 set  2018 NDF_7179.JPG
19904 -r-xr-xr-x  1 goffredo  users  20293269 15 set  2018 NDF_7179.NEF


Os tamanhos para o raw em geral variam de 17 a 20 MB, e dos JPEG de 5 a 8 MB, isto dá entre 22 a 28 MB por par de arquivos de foto, o que dá cerca de 12.5 MB por arquivo.

Note que não fiz um levantamento preciso, e o que está mostrado aqui está mais cuidadoso do que fiz na hora. Confesso que olhei rapidamente e chutei.

No início ia chutar 7000000 Bytes por arquivo, quase chutei 8000000 Bytes por arquivo, mas a olhada nos aquivos da terceira câmera me fez decidir por 9000000 Bytes por arquivo. E no final vi que chutei bem, como mostrarei adiante.

A opção "-i 9000000" é a escolha do tamanho médio dos arquivos.

A criação ficou da forma abaixo (Apaguei uma parte que não tinha importância e estava grande demais.):

root:SUPER[440] newfs -b 65536 -i 9000000 -O 2 -m 1 -o space -L Bkp_Paraty /dev/da9p1
increasing fragment size from 4096 to block size / 8 (8192)
/dev/da9p1: 4769307.0MB (9767541088 sectors) block size 65536, fragment size 8192
        using 1315 cylinder groups of 3626.88MB, 58030 blks, 512 inodes.
super-block backups (for fsck_ffs -b #) at:
 256, 7428096, 14855936, 22283776, 29711616, 37139456, 44567296, 51995136, 59422976, 66850816, 74278656, 81706496, 89134336, 96562176, 103990016, 111417856, 118845696, 126273536, 133701376, 141129216, 148557056, (... parte apagada...) 9678475776, 9685903616, 9693331456, 9700759296, 9708187136, 9715614976, 9723042816, 9730470656, 9737898496, 9745326336, 9752754176, 9760182016


Depois fui fazer uns ajustes com tunefs ligando o journaling (opção "-j enable") e os soft updates (opção "-n enable").

root:SUPER[441] tunefs -j enable -n enable /dev/da9
tunefs: /dev/da9: No such file or directory
root:SUPER[442] tunefs -j enable -n enable /dev/da9p1
Using inode 4 in cg 0 for 33554432 byte journal
tunefs: soft updates journaling set
tunefs: soft updates remains unchanged as enabled

Note que errei no primeiro comando, pois, ao invés de informar o sistema de arquivos recém criado, informei o disco. Na segunda informei o sistema de arquivos.

Agora é montar, dar uma olhada, e criar o diretório para receber o backup. Como este backup roda como o meu usuário comum, sem ser privilegiado, tive que mudar a posse do diretório para ele.

root:SUPER[443] mount /dev/da9p1 /mnt/backup/
root:SUPER[444] ls -ls /mnt/backup/
total 32840
    8 drwxrwxr-x  2 root  operator       512 11 jan 12:17 .snap
32832 -r--------  1 root  wheel     33554432 11 jan 12:18 .sujournal
root:SUPER[445] mkdir /mnt/backup/imagens
root:SUPER[446] chown goffredo:users /mnt/backup/imagens/
root:SUPER[448] df -hi /mnt/backup/
Filesystem    Size    Used   Avail Capacity iused ifree %iused  Mounted on
/dev/da9p1    4,5T     32M    4,5T     0%       4  673k    0%   /mnt/backup

No último comando eu verifico o espaço em disco e a quantidade de inodes. São 673 mil inodes, o que permite quase 340 mil fotos no disco, contando o par de arquivos raw e JPEG. Como tenho menos de 200 mil fotos (por enquanto), acho que não tenho que me preocupar por um bom tempo.

Está na hora de começar o backup.

Sistema de arquivos sem partição?

Um adendo cabe aqui.

Sim, é possível criar um sistema de arquivos no FreeBSD sem particionar, e já fiz isto. Basta destruir o GPT (talvez nem precise fazer isto), pular a etapa de particionamento, e fazer o newfs em cima. Mas aqui eu quis seguir a rotina de criar um GPT. Uma vantagem é que outros sistemas poderiam reconhecer que tem uma partição de outro sistema de arquivos e sistema operacional e respeitar o conteúdo.

Neste caso o mount ficaria como o abaixo, dizendo diretamente o disco, sem dizer qual partição:

root:SUPER[443] mount /dev/da9 /mnt/backup/

Backup

O backup demorou mais de 47 horas.

O script é muito específico para o meu caso, portanto não vou apresentar ele aqui, mas vou descrever alguns comportamentos dele.

Ele segue parcialmente uma ordem cronológica, com as câmeras antigas, e que geram menores arquivos, primeiro, e vai seguindo até a mais recente, que gera arquivos maiores.

Durante este tempo observei o consumo de espaço e de inodes algumas vezes, como mostrado abaixo.

root:SUPER[469] df -hi /mnt/backup/
Filesystem    Size    Used   Avail Capacity iused ifree %iused  Mounted on
/dev/da9p1    4,5T    345G    4,2T     7%     59k  614k    9%   /mnt/backup
root:SUPER[470] du -shc /mnt/backup/imagens/*
8,0K    /mnt/backup/imagens/Filme
 20G    /mnt/backup/imagens/kphoto
333G    /mnt/backup/imagens/Lumix_FZ28
424K    /mnt/backup/imagens/print_Catalogo
8,0K    /mnt/backup/imagens/Zire_72
353G    total
root:SUPER[471] df -hi /mnt/backup/
Filesystem    Size    Used   Avail Capacity iused ifree %iused  Mounted on
/dev/da9p1    4,5T    403G    4,1T     9%     68k  605k   10%   /mnt/backup
root:SUPER[472] df -hi /mnt/backup/
Filesystem    Size    Used   Avail Capacity iused ifree %iused  Mounted on
/dev/da9p1    4,5T    427G    4,1T     9%     72k  602k   11%   /mnt/backup
root:SUPER[473] df -hi /mnt/backup/
Filesystem    Size    Used   Avail Capacity iused ifree %iused  Mounted on
/dev/da9p1    4,5T    681G    3,8T    15%    108k  565k   16%   /mnt/backup
root:SUPER[474] du -shc /mnt/backup/imagens/*
8,0K    /mnt/backup/imagens/Filme
 20G    /mnt/backup/imagens/kphoto
579G    /mnt/backup/imagens/Lumix_FZ28
 99G    /mnt/backup/imagens/Nikon_D90
424K    /mnt/backup/imagens/print_Catalogo
8,0K    /mnt/backup/imagens/Zire_72
698G    total
root:SUPER[475] df -hi /mnt/backup/
Filesystem    Size    Used   Avail Capacity iused ifree %iused  Mounted on
/dev/da9p1    4,5T    931G    3,6T    20%    143k  530k   21%   /mnt/backup
root:SUPER[476] df -hi /mnt/backup/
Filesystem    Size    Used   Avail Capacity iused ifree %iused  Mounted on
/dev/da9p1    4,5T    958G    3,6T    21%    147k  526k   22%   /mnt/backup
root:SUPER[477] df -hi /mnt/backup/
Filesystem    Size    Used   Avail Capacity iused ifree %iused  Mounted on
/dev/da9p1    4,5T    1,6T    2,9T    35%    239k  434k   36%   /mnt/backup
root:SUPER[478] du -shc /mnt/backup/imagens/*
8,0K    /mnt/backup/imagens/Filme
 20G    /mnt/backup/imagens/kphoto

579G    /mnt/backup/imagens/Lumix_FZ28
1,1T    /mnt/backup/imagens/Nikon_D90
424K    /mnt/backup/imagens/print_Catalogo
8,0K    /mnt/backup/imagens/Zire_72
1,7T    total
root:SUPER[479] df -hi /mnt/backup/
Filesystem    Size    Used   Avail Capacity iused ifree %iused  Mounted on
/dev/da9p1    4,5T    1,8T    2,7T    40%    272k  401k   40%   /mnt/backup
root:SUPER[480] df -hi /mnt/backup/
Filesystem    Size    Used   Avail Capacity iused ifree %iused  Mounted on
/dev/da9p1    4,5T    1,8T    2,7T    41%    275k  398k   41%   /mnt/backup
root:SUPER[481] df -hi /mnt/backup/
Filesystem    Size    Used   Avail Capacity iused ifree %iused  Mounted on
/dev/da9p1    4,5T    2,0T    2,5T    45%    294k  379k   44%   /mnt/backup
root:SUPER[482] df -hi /mnt/backup/
Filesystem    Size    Used   Avail Capacity iused ifree %iused  Mounted on
/dev/da9p1    4,5T    2,1T    2,4T    47%    299k  374k   44%   /mnt/backup
root:SUPER[483] df -hi /mnt/backup/
Filesystem    Size    Used   Avail Capacity iused ifree %iused  Mounted on
/dev/da9p1    4,5T    2,1T    2,4T    48%    302k  371k   45%   /mnt/backup
root:SUPER[484] df -hi /mnt/backup/
Filesystem    Size    Used   Avail Capacity iused ifree %iused  Mounted on
/dev/da9p1    4,5T    2,7T    1,8T    60%    345k  328k   51%   /mnt/backup
root:SUPER[485] df -hi /mnt/backup/
Filesystem    Size    Used   Avail Capacity iused ifree %iused  Mounted on
/dev/da9p1    4,5T    2,7T    1,8T    60%    346k  327k   51%   /mnt/backup
root:SUPER[486] df -hi /mnt/backup/
Filesystem    Size    Used   Avail Capacity iused ifree %iused  Mounted on
/dev/da9p1    4,5T    2,8T    1,7T    62%    353k  320k   52%   /mnt/backup

Pode notar claramente que no início o percentual de consumo de inodes era maior do que o de espaço no HD, mas depois de um ponto, quando começou a copiar os arquivos da Nikon D90 a situação começou a mudar, e inverteu de vez no final. Fiquei com uma boa sobra de inodes, o que me faz pensar que talvez devesse ter criado um para cada 10 milhões de Bytes.

Existia um outro modo de estimar que só me ocorreu no momento em que escrevia este texto. Como tenho um sistema de arquivos só para as fotos bastava dividir o espaço em disco usado nele pela quantidade de inodos usados, ou pela quantidade de fotos que tenho multiplicado por dois.

Edit_dir

Eu tenho um diretório com uma árvore de subdiretórios que reflete a árvore de diretório na qual as fotos são armazenadas, mas com uma diferença. É que é uma árvore para edição de fotos.

Eu também precisava fazer um backup dela. Isto foi feito de um modo simples.

goffredo:SUPER[1015] time cp -pnr edit_dir /mnt/backup
cp: edit_dir/Nikon_D90/N_D90_00.011/103NCD90/DSC_0136/DSC_0136.NEF: No such file or directory
0.183u 46.049s 20:23.83 3.7%    10+175k 935612+813677io 87744pf+0w


Sim, tinha um erro, que foi fácil de corrigir. O link simbólico estava apontado para o lugar errado.

Erro no backup

As pessoas mais atentas devem ter percebido um diretório vazio listado lá atrás, ocupando somente 8 KB. Isto estava me intrigando.

No final do meu script de backup é mostrado o espaço em disco e o consumo de inodes dos sistemas de arquivos, tanto o de origem, como o de backup e mais alguns. O resultado também estava me intrigando.

goffredo:SUPER[1012] time bkp_imagens.sh
Filesystem           Size    Used   Avail Capacity iused ifree %iused  Mounted on
/dev/da9p1           4,5T    2,8T    1,7T    62%    353k  320k   52%   /mnt/backup
/dev/ufs/Z306B10W    3,6T    2,7T    917G    75%    453k   85k   84%   /home
/dev/ufs/Z306B10W    3,6T    2,7T    917G    75%    453k   85k   84%   /home
/dev/ufs/fotos       3,6T    2,8T    840G    77%    365k  714k   34%   /home/goffredo/trabalho/imagens/mnt
5.244u 1365.742s 47:28:52.10 0.8%       10+177k 31840988+22914993io 10068247pf+0w


Cerca de 12 mil arquivos a menos tinham sido copiados. Fui verificar o script de backup e achei algumas omissões, algumas coisas que não estavam sendo copiadas. Eram fotos minhas feitas por outras pessoas, fotos que fiz com câmeras de outras pessoas etc. Modifiquei o script e rodei de novo para completar o backup.

Mas agora estou com a impressão que estou duplicando algumas coisas. Isto é coisa para ver depois com calma. É melhor duplicar do que faltar.

Espaço final

O espaço em disco no final pode ser visto abaixo.

root:SUPER[496] df -hi /mnt/backup/
Filesystem    Size    Used   Avail Capacity iused ifree %iused  Mounted on
/dev/da9p1    4,5T    2,9T    1,6T    64%    366k  308k   54%   /mnt/backup


Ainda cabem muitas fotos, e parece que no final vão sobrar inodes, o que implica que eu poderia ter criado o sistema de arquivos para um tamanho médio de arquivos maior. Pelo menos não vai sobrar a quantidade absurda que sobraria se deixasse o newfs escolher por conta própria.

Reverificando o disco

Agora que está tudo copiado, assim espero, coloquei mais um teste longo para rodar:

root:SUPER[497] smartctl -t long /dev/da9
smartctl 7.0 2018-12-30 r4883 [FreeBSD 12.0-STABLE amd64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Extended self-test routine immediately in off-line mode".
Drive command "Execute SMART Extended self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 814 minutes for test to complete.
Test will complete after Tue Jan 14 17:43:28 2020

Use smartctl -X to abort test.


Eu fiz isto com o sistema de arquivos montado. Este teste pode ser feito com o sistema no ar, com o sistema de arquivos montado e em uso, tal como pode ser feito com um HD desmontado com um sistema de arquivos incompatível com o sistema operacional do computador. Ele é completamente independente do conteúdo do disco.

E aproveito a oportunidade para mostrar como é um relatório de S.M.A.R.T. com um teste em andamento:

root:SUPER[498] smartctl -a /dev/da9    
smartctl 7.0 2018-12-30 r4883 [FreeBSD 12.0-STABLE amd64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda 2.5 5400
Device Model:     ST5000LM000-2AN170
Serial Number:    WCJ27HCJ
LU WWN Device Id: 5 000c50 0c2f3f01d
Firmware Version: 0001
User Capacity:    5.000.981.078.016 bytes [5,00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5526 rpm
Form Factor:      2.5 inches
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-3 T13/2161-D revision 5
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Tue Jan 14 04:14:48 2020 -02
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x00) Offline data collection activity
                                        was never started.
                                        Auto Offline Data Collection: Disabled.
Self-test execution status:      ( 249) Self-test routine in progress...
                                        90% of test remaining.
Total time to complete Offline
data collection:                (    0) seconds.
Offline data collection
capabilities:                    (0x73) SMART execute Offline immediate.
                                        Auto Offline data collection on/off support.
                                        Suspend Offline collection upon new
                                        command.
                                        No Offline surface scan supported.
                                        Self-test supported.
                                        Conveyance Self-test supported.
                                        Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                                        power-saving mode.
                                        Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                                        General Purpose Logging supported.
Short self-test routine
recommended polling time:        (   1) minutes.
Extended self-test routine
recommended polling time:        ( 814) minutes.
Conveyance self-test routine
recommended polling time:        (   2) minutes.
SCT capabilities:              (0x30a5) SCT Status supported.
                                        SCT Data Table supported.

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   084   065   006    Pre-fail  Always       -       235049819
  3 Spin_Up_Time            0x0003   097   097   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       7
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   072   060   045    Pre-fail  Always       -       15849171
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       77 (37 118 0)
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       7
183 SATA_Downshift_Count    0x0032   100   100   000    Old_age   Always       -       0
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   100   000    Old_age   Always       -       0
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   059   046   040    Old_age   Always       -       41 (Min/Max 28/54)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       12
193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       46
194 Temperature_Celsius     0x0022   041   054   000    Old_age   Always       -       41 (0 21 0 0 0)
195 Hardware_ECC_Recovered  0x001a   084   065   000    Old_age   Always       -       235049819
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
240 Head_Flying_Hours       0x0000   100   253   000    Old_age   Offline      -       58 (104 77 0)
241 Total_LBAs_Written      0x0000   100   253   000    Old_age   Offline      -       6224082914
242 Total_LBAs_Read         0x0000   100   253   000    Old_age   Offline      -       3932946
254 Free_Fall_Sensor        0x0032   100   100   000    Old_age   Always       -       0

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Self-test routine in progress 90%        77         -
# 2  Extended offline    Completed without error       00%        12         -
# 3  Short offline       Completed without error       00%         0         -

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.


Procure por "SMART Self-test log structure revision number 1" para ver a mensagem do teste em progresso. É o primeiro da lista. No momento o HD tem 77 horas ligado.

E o teste terminou sem erros.

root:SUPER[508] smartctl -a /dev/da9
smartctl 7.0 2018-12-30 r4883 [FreeBSD 12.0-STABLE amd64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda 2.5 5400
Device Model:     ST5000LM000-2AN170
Serial Number:    WCJ27HCJ
LU WWN Device Id: 5 000c50 0c2f3f01d
Firmware Version: 0001
User Capacity:    5.000.981.078.016 bytes [5,00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5526 rpm
Form Factor:      2.5 inches
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-3 T13/2161-D revision 5
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Wed Jan 15 00:07:29 2020 -02
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x00) Offline data collection activity
                                        was never started.
                                        Auto Offline Data Collection: Disabled.
Self-test execution status:      (   0) The previous self-test routine completed
                                        without error or no self-test has ever
                                        been run.
Total time to complete Offline
data collection:                (    0) seconds.
Offline data collection
capabilities:                    (0x73) SMART execute Offline immediate.
                                        Auto Offline data collection on/off support.
                                        Suspend Offline collection upon new
                                        command.
                                        No Offline surface scan supported.
                                        Self-test supported.
                                        Conveyance Self-test supported.
                                        Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                                        power-saving mode.
                                        Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                                        General Purpose Logging supported.
Short self-test routine
recommended polling time:        (   1) minutes.
Extended self-test routine
recommended polling time:        ( 814) minutes.
Conveyance self-test routine
recommended polling time:        (   2) minutes.
SCT capabilities:              (0x30a5) SCT Status supported.
                                        SCT Data Table supported.

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   084   065   006    Pre-fail  Always       -       235049819
  3 Spin_Up_Time            0x0003   097   097   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       7
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   073   060   045    Pre-fail  Always       -       19613194
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       97 (138 47 0)
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       7
183 SATA_Downshift_Count    0x0032   100   100   000    Old_age   Always       -       0
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   100   000    Old_age   Always       -       0
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   063   046   040    Old_age   Always       -       37 (Min/Max 28/54)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       12
193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       47
194 Temperature_Celsius     0x0022   037   054   000    Old_age   Always       -       37 (0 21 0 0 0)
195 Hardware_ECC_Recovered  0x001a   084   065   000    Old_age   Always       -       235049819
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
240 Head_Flying_Hours       0x0000   100   253   000    Old_age   Offline      -       62 (240 62 0)
241 Total_LBAs_Written      0x0000   100   253   000    Old_age   Offline      -       6224082914
242 Total_LBAs_Read         0x0000   100   253   000    Old_age   Offline      -       3932946
254 Free_Fall_Sensor        0x0032   100   100   000    Old_age   Always       -       0

SMART Error Log Version: 1
No Errors Logged

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

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.


Montagem automática no boot, ou facilitada

Nos sistemas Unix Like existe o arquivo /etc/fstab que contém as informações de montagem dos sistemas de arquivos.

Todos que montam automaticamente no boot do sistema estão descritos lá, tal como alguns que não montam automaticamente, mas que são montados facilmente, como costuma ser o CDROM.

Este sistema de arquivos criado poderia ser montado facilmente com a seguinte linha no /etc/fstab:

/dev/ufs/Bkp_Paraty /mnt/backup ufs rw,noatime,noauto,noexec 0 0

A opção "noauto" garante que ele não será montado automaticamente no boot, mas a descrição existirá na tabela. Então a montagem poderia ser feita com a seguinte linha de comando:

mount /mnt/backup/

Note que não foi mencionado como o dispositivo foi reconhecido, e sim, o nome que foi dado ao sistema de arquivos no momento da sua criação. Esta e a grande vantagem de colocar um label no sistema de arquivos. Não importa se ele foi reconhecido como da5, da9, da0 etc, mas sempre terá este label associado a ele.

E mesmo que não esteja no /etc/fstab, você pode sempre montar de uma forma independente do reconhecimento do disco.

mount /dev/ufs/Bkp_Paraty /mnt/backup/

Então poderá usar o histórico de comandos já dados para pegar como você montou antes para montar agora. Esta forma funcionará sempre que o HD estiver conectado ao computador.

Não esqueça de desmontar

Sempre que usar um HD externo não esqueça de desmontar ele. Isto avisa ao sistema para encerrar todas as atividades com ele, e liberá-lo. Isto vale para todo e qualquer sistema operacional, especialmente se o(s) sistema(s) de arquivos do disco foram montados para leitura e escrita. E confirme que ele liberou antes de desplugar.

Nos sistemas Unix Like é da forma abaixo:

umount /mnt/backup/

E se não desmontou?

Se o disco foi desplugado sem desmontar, seja por falta de luz, por puxar o cabo etc, tem que fazer a verificação dos sistemas de arquivos.

Nos sistemas Unix Like é com o comando fsck, e pode ser feito assim:

fsck -y /dev/ufs/Bkp_Paraty

Note o uso de novo do nome dado ao sistema de arquivos. Também poderia ser /dev/da9p1, que é como ele foi reconhecido. Mas como falado, cada vez que for usado pode ser reconhecido de forma diferente.

Neste sistema de arquivos, da forma que ele foi criado, na primeira vez o fsck usará o journaling. Isto resolve quase sempre, mas como já vi não resolver tudo, eu rodo o fsck da forma mencionada acima pelo menos duas vezes. A primeira vez é sempre mais rápida, pois usa o journaling, e nas outras é mais demorado, pois realmente testa o sistema de arquivos.

Eu rodo até que tenha um teste perfeito, sem encontrar nada. Eu sempre rodo, em qualquer Unix, até que não ache mais problemas.

O FreeBSD algumas vezes acha problemas na segunda passada, e quase nunca na terceira.

Finalizando

Espero ter coberto quase tudo que possa ser pensado sobre o caso.

Qualquer dúvida, observação, pergunta etc, pode fazer no comentário, me enviar por e-mail, me perguntar nas redes sociais etc.

Nenhum comentário:

Postar um comentário