Tenho tido problemas de disco rígido no Ubuntu 18.04, onde o sistema remonta aleatoriamente minha partição raiz (/dev/sda4) como somente leitura devido a erros.
dmesg|grep 'I/O error'
revela problemas óbvios com sda4. Não tenho a saída exata no momento, pois a caixa foi reinicializada com sucesso e não está apresentando problemas no momento.
Meu plano era executar uma verificação do sistema de arquivos no sistema de arquivos. eu seguiesta respostaassim comoeste tutorialcom cuidado. No último tutorial usei a seção intitulada: "Como forçar o fsck a verificar o sistema de arquivos após a reinicialização do sistema no Linux ao usar o systemd"
Após a reinicialização, entretanto, o sistema de arquivos NÃO é verificado conforme revelado pela saída deste comando:
tune2fs -l /dev/sda4 | grep checked
Last checked: Sat Nov 21 15:36:56 2020
Eu tentei essas variações do GRUB CMDLINE, mas elas não tiveram sucesso:
GRUB_CMDLINE_LINUX_DEFAULT="maybe-ubiquity fsck.mode=force"
e
GRUB_CMDLINE_LINUX_DEFAULT="maybe-ubiquity fsck.mode=force fsck.repair=yes"
E sim, eu corri update-grub
. o que estou perdendo?
Saída de smartctl -a /dev/sda
:
Device Model: Samsung SSD 860 EVO 250GB
Serial Number: S59WNG0MA22770K
LU WWN Device Id: 5 002538 e70265a2a
Firmware Version: RVT03B6Q
User Capacity: 250,059,350,016 bytes [250 GB]
Sector Size: 512 bytes logical/physical
Rotation Rate: Solid State Device
Form Factor: 2.5 inches
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: Unknown(0x09fc), ACS-4 T13/BSR INCITS 529 revision 5
SATA Version is: SATA 3.2, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is: Wed May 3 11:35:14 2023 MST
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: (0x53) 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.
No 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: ( 2) minutes.
Extended self-test routine
recommended polling time: ( 85) minutes.
SCT capabilities: (0x003d) SCT Status supported.
SCT Error Recovery Control supported.
SCT Feature Control supported.
SCT Data Table supported.
SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
5 Reallocated_Sector_Ct 0x0033 038 038 010 Pre-fail Always - 311
9 Power_On_Hours 0x0032 095 095 000 Old_age Always - 21420
12 Power_Cycle_Count 0x0032 099 099 000 Old_age Always - 14
177 Wear_Leveling_Count 0x0013 001 001 000 Pre-fail Always - 2041
179 Used_Rsvd_Blk_Cnt_Tot 0x0013 100 100 010 Pre-fail Always - 0
181 Program_Fail_Cnt_Total 0x0032 100 100 010 Old_age Always - 0
182 Erase_Fail_Count_Total 0x0032 100 100 010 Old_age Always - 0
183 Runtime_Bad_Block 0x0013 038 038 010 Pre-fail Always - 311
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
190 Airflow_Temperature_Cel 0x0032 067 065 000 Old_age Always - 33
195 Hardware_ECC_Recovered 0x001a 200 200 000 Old_age Always - 0
199 UDMA_CRC_Error_Count 0x003e 100 100 000 Old_age Always - 0
235 Unknown_Attribute 0x0012 099 099 000 Old_age Always - 10
241 Total_LBAs_Written 0x0032 099 099 000 Old_age Always - 166281511800
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
256 0 65535 Read_scanning was never started
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.
ATUALIZAR:
O servidor travou novamente esta manhã (ainda está ativo, mas /
está montado como somente leitura) e aqui está o que vejo no dmesg:
dmesg |grep sda
[70547.166349] sd 0:0:0:0: [sda] tag#13 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[70547.166354] sd 0:0:0:0: [sda] tag#13 CDB: ATA command pass through(16) 85 06 2c 00 00 00 00 00 00 00 00 00 00 00 e5 00
[70948.441912] sd 0:0:0:0: [sda] tag#15 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[70948.441918] sd 0:0:0:0: [sda] tag#15 CDB: Read(10) 28 00 1a cb 1c 00 00 00 08 00
[70948.441922] print_req_error: I/O error, dev sda, sector 449518592
[70948.442312] sd 0:0:0:0: [sda] tag#16 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[70948.442315] sd 0:0:0:0: [sda] tag#16 CDB: Read(10) 28 00 1a cb 1c 00 00 00 08 00
[70948.442316] print_req_error: I/O error, dev sda, sector 449518592
[70948.442955] sd 0:0:0:0: [sda] tag#17 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[70948.442960] sd 0:0:0:0: [sda] tag#17 CDB: Read(10) 28 00 0e 0b 03 08 00 00 20 00
[70948.442962] print_req_error: I/O error, dev sda, sector 235602696
[70948.443389] sd 0:0:0:0: [sda] tag#18 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[70948.443393] sd 0:0:0:0: [sda] tag#18 CDB: Read(10) 28 00 0e 0b 03 08 00 00 08 00
[70948.443396] print_req_error: I/O error, dev sda, sector 235602696
[72347.211525] sd 0:0:0:0: [sda] tag#19 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[72347.211531] sd 0:0:0:0: [sda] tag#19 CDB: ATA command pass through(16) 85 06 2c 00 00 00 00 00 00 00 00 00 00 00 e5 00
[74147.255746] sd 0:0:0:0: [sda] tag#21 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[74147.255752] sd 0:0:0:0: [sda] tag#21 CDB: ATA command pass through(16) 85 06 2c 00 00 00 00 00 00 00 00 00 00 00 e5 00
[75947.299631] sd 0:0:0:0: [sda] tag#23 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[75947.299637] sd 0:0:0:0: [sda] tag#23 CDB: ATA command pass through(16) 85 06 2c 00 00 00 00 00 00 00 00 00 00 00 e5 00
[77747.345291] sd 0:0:0:0: [sda] tag#25 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[77747.345297] sd 0:0:0:0: [sda] tag#25 CDB: ATA command pass through(16) 85 06 2c 00 00 00 00 00 00 00 00 00 00 00 e5 00
[79547.389376] sd 0:0:0:0: [sda] tag#27 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[79547.389382] sd 0:0:0:0: [sda] tag#27 CDB: ATA command pass through(16) 85 06 2c 00 00 00 00 00 00 00 00 00 00 00 e5 00
[81347.432593] sd 0:0:0:0: [sda] tag#29 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[81347.432598] sd 0:0:0:0: [sda] tag#29 CDB: ATA command pass through(16) 85 06 2c 00 00 00 00 00 00 00 00 00 00 00 e5 00
Sei que a unidade precisa ser substituída, mas meu objetivo é simplesmente rodar fsck
na partição raiz.
Responder1
Não sei como forçar o fsck usando a solução que você está tentando, mas posso sugerir uma solução alternativa:
Use tune2fs
e limite o valor a remontagens e carimbos de data/hora muito baixos
# To see current settings
sudo tune2fs -l /dev/sda4
# To alter it
sudo tune2fs -c 1 -i 1d /dev/sda4
Isso forçará a verificação a cada 1 remontagem ou a cada 1 dia desde a última verificação, o que acontecer primeiro.
Verifique SMART
Como outros já disseram, isso é apenas um curativo para problemas de HW. Às vezes o HDD está morrendo, outras vezes é um problema de HW não relacionado (realize um memtest), outras vezes é apenas um cabo SATA solto (desconecte e conecte-o novamente em ambas as extremidades, se isso não resolver, tente outro cabo) .
Cuidado, na pior das hipóteses, a PSU está com defeito e danificando o restante do HW (nesse caso, substituir o HDD apenas resolverá o problema temporariamente porque, com o tempo, o novo HDD será danificado pela PSU). Verifique se as tensões estão dentro dos níveis aceitáveis.
Postando a saída do smart:
sudo smartctl -a /dev/sda
Pode ajudar a diagnosticar o que pode estar acontecendo.
Atualizar
Também não sei por que você não pode executar o fsck via tune2fs.
Mas eu vi seu SMART. Segundo ele, seu disco está envelhecendo, mas parece estar saudável.
O problema pode estar em outro lugar, como no cabo SATA.
Se você não consegue fazer o fsck funcionar, tudo o que posso sugerir é inicializar a partir de um liveUsb e executar o comando manualmente.
Atualização 2
OK, você postou as mensagens dmseg.Temos informações conflitantes provenientes do SMART e do SO, então vou escrever em detalhes.
Blocos ruins
A SMART diz que suas unidades apresentam bloqueios defeituosos. Isso é normal para qualquer SSD à medida que envelhece, e a unidade realocará os dados em blocos sobressalentes. Quando ficar sem peças sobressalentes, a unidade precisará ser substituída.
SMART diz que quantidade de badblocks está dentro do “normal”: Os atributos mais importantes para ver aqui são Reallocated_Sector_Ct
e Runtime_Bad_Block
.
Ele diz que detectou 311 blocos defeituosos e realocou 311 em blocos sobressalentes. Isso é bom. Se houvesse 311 blocos defeituosos, mas apenas 310 realocações, isso significa que os dados em um dos blocos foram perdidos.
O que importa é o valor “normalizado” (038). É assim que o fabricante informa o que considera normal.
Um valor onde 100 significa perfeito e 0 significa muito ruim. No momento são 38, o que significa “isso está ficando ruim”; mas o fabricante diz que está tudo bem, desde que esse valor esteja acima de 010 (o THRESHold).
Aqui temos nossa primeira informação conflitante: Used_Rsvd_Blk_Cnt_Tot
diz que a reserva não foi tocada, apesar de ter blocos ruins. Não faz sentido.
Mas eu não ficaria surpreso se o firmware simplesmente não rastreasse esse valor, apesar de reportá-lo, então vamos ignorar isso por enquanto.
Nivelamento de desgaste
Este é o atributo mais problemático de ler. Wear_Leveling_Count
diz que é 001. Normalmente, um valor de 1 significa que sua unidade está morta e deve ser substituída o mais rápido possível.
Isso significa que ficaram sem blocos sobressalentes. Mas houve bugs de firmware em que esse atributo é relatado de trás para frente e um valor 1 significa que a unidade está com 99% de integridade.
Usando umCalculadora TBWInseri seu número de LBAs gravados + tamanho do setor 512 e descobri que sua unidade tem 77,43TiB gravados. De acordo com o Google, seu modelo deve ter 150 TBW, entãodeveainda será viável.
Receio que a melhor solução aqui seja ativar uma caixa do Windows e executarCrystalDiskInfoque explica esses bugs de firmware (usando um banco de dados interno) e reportará uma avaliação de saúde muito precisa.
Dado que o seu smart diz, SMART overall-health self-assessment test result: PASSED
estou inclinado a acreditar que ele quer dizer 99%, em vez de 1%.
Mas se eu estiver errado podemos parar por aqui, o disco deve ser substituído.
Problemas de cabo / problemas de placa-mãe
Os erros no dmesg do Linux basicamente dizem que ele tentou ler um setor e obteve dados incorretos.
O kernel ainda diz que tentou ler o setor 235602696 duas vezes e obteve dados diferentes:
- 28 00 0e 0b 03 08 00 002000
- 28 00 0e 0b 03 08 00 000800.
Se o disco disser que não há erros, mas o sistema operacional disser que há; então os dados foram corrompidos em trânsito. Normalmente isso indica:
- O cabo SATA está mal conectado
- O cabo SATA está danificado
- O cabo de alimentação está mal conectado
- O cabo de alimentação está danificado
- Falha no barramento da placa-mãe
- Falha na fonte de alimentação
- Falha de RAM
Mas é aqui que temosnossa segunda fonte de informações conflitantes: UDMA_CRC_Error_Count
é 0.
Isso significa que o disco nunca detectou um único erro causado por um cabo defeituoso/solto ou por um barramento da placa-mãe defeituoso.
Isto é muito improvável. A SMART diz que o disco está bom, os comandos que chegam do sistema operacional para o disco nunca são corrompidos por fiação incorreta; ainda assim, o sistema operacional leu o mesmo setor duas vezes e obteve um byte diferente.
A única coisa que consigo pensar que tornaria isso possível é se você tiver uma RAM ruim.Ou um problema de cabo extremamente improvável, onde todos os dados que vão para o disco nunca são corrompidos, mas os dados que saem dele são corrompidos.
Curso de ação
Meu instinto me diz que o disco está ruim. Mas:
- Faça backup de todos os dados em outro disco. Em uma execução LiveUSB (e uma unidade USB externa grande o suficiente):
sudo apt install zstd
# To backup
sudo zstd -16v < /dev/sda > /media/external_disk/backup_file.zst
# To restore (don't do that on step 1, see step 5)
sudo zstdcat -v /media/external_disk/backup_file.zst > /dev/sda
- Faça backup dos dados novamente, mas desta vez apenas com uma cópia normal dos arquivos (se o disco morrer, é muito mais fácil recuperar a partir de um backup simples do que tentar montar em loop uma imagem zstd compactada de um disco e ler os arquivos a partir disso)
- Reinicie e execute um memtest para descartar erros de RAM
- Desligue, abra o gabinete e desconecte e conecte novamente os cabos SATA e de alimentação (para a unidade). Verifique se eles não estão danificados. Possivelmente substitua-os.
- Inicialize na unidade LiveUSB novamente e execute uma limpeza segura do disco. Se houver algum problema acontecendo com sua unidade, talvez isso a redefina de volta para uma condição de funcionamento (ou talvez resulte no último comando executado se o disco estiver além da salvação). Isso deve levar vários minutos:
sudo blkdiscard -s /dev/sda
- Se tudo correu bem até agora, restaure seu backup com o
sudo zstdcat
comando da etapa 1.
Se o disco ainda apresentar problemas e o memtest for bem-sucedido, pessoalmente eu consideraria o disco ruim.
Não podemos ignorar que um valor de 038 Reallocated_Sector_Ct
significa que as coisas estão piorando, apesar do fabricante dizer que ainda não está “tão” ruim.
Ah! Importante: Se em algum momento você deixou o disco desligado por mais de 3 meses; este cenário é bem possível. Apesar da crença popular, as células NAND podem perder seu armazenamento se ficarem sem energia por muito tempo ("muito tempo" pode variar de 7 dias a 7 anos; mas o caso mais comum é de 3 meses). Principalmente se forem velhos.
Se isso aconteceu com você, basta executar as etapas acima: faça backup dos dados, limpe o disco com segurança, restaure o backup.
Boa sorte.