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.
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)
=> 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)
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.
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
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
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").
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.
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.
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.
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
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
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[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
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
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
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
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