Atualizar

Atualizar

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 fsckna 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 tune2fse 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_Cte 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_Totdiz 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_Countdiz 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: PASSEDestou 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:

  1. 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
  1. 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)
  2. Reinicie e execute um memtest para descartar erros de RAM
  3. 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.
  4. 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
  1. Se tudo correu bem até agora, restaure seu backup com o sudo zstdcatcomando 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_Ctsignifica 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.

informação relacionada