public inbox for gentoo-user@lists.gentoo.org
 help / color / mirror / Atom feed
From: Wols Lists <antlists@youngman.org.uk>
To: gentoo-user@lists.gentoo.org
Subject: Re: [gentoo-user] e2fsck -c when bad blocks are in existing file?
Date: Tue, 8 Nov 2022 18:24:41 +0000	[thread overview]
Message-ID: <7811a6a2-c192-fd50-1545-52126287754a@youngman.org.uk> (raw)
In-Reply-To: <3193783.oiGErgHkdL@lenovo.localdomain>

On 08/11/2022 13:20, Michael wrote:
> On Tuesday, 8 November 2022 03:31:07 GMT Grant Edwards wrote:
>> I've got an SSD that's failing, and I'd like to know what files
>> contain bad blocks so that I don't attempt to copy them to the
>> replacement disk.
>>
>> According to e2fsck(8):
>>
>>         -c     This option causes e2fsck to use badblocks(8)  program  to  do
>>   a read-only scan of the device in order to find any bad blocks.  If any
>> bad blocks are found, they are added to the bad  block  inode to  prevent
>> them from being allocated to a file or directory.  If this option is
>> specified twice, then the bad block scan  will  be done using a
>> non-destructive read-write test.
>>
>> What happens when the bad block is _already_allocated_ to a file?
>>
>> --
>> Grant
> 
> Previously allocated to a file and now re-allocated or not, my understanding
> is with spinning disks the data in a bad block stays there unless you've dd'ed
> some zeros over it.  Even then read or write operations could fail if the
> block is too far gone.[1]  Some data recovery applications will try to read
> data off a bad block in different patterns to retrieve what's there.  Once the
> bad block is categorized as such it won't be used by the filesystem to write
> new data to it again.
> 
> With SSDs the situation is less deterministic, because the disk's internal
> wear levelling firmware moves things around according to its algorithms to
> remap bad blocks. This is all transparent to the filesystem, block addresses
> sent to the fs are virtual anyway.  Bypassing the firmware controller to
> access individual cells on an SSD requires specialist equipment and your own
> lab, although things may have evolved since I last looked into this.

Which is actually pretty much exactly the same as what happens with 
spinning rust.

The primary aim of a hard drive - SSD or spinning rust - is to save the 
user's data. If the drive can't read the data it will do nothing save 
returning a read error. Think about it - any other action will simply 
make matters worse, namely the drive is actively destroying 
possibly-salvageable data.

All being well, the user has raid or backups, and will be able to 
re-write the file, at which point the drive will attempt recovery, as it 
now has KNOWN GOOD data. If the write fails, the block will then be 
added to the *drive internal* badblock list, and will be remapped elsewhere.

MODERN DRIVES SHOULD NEVER HAVE AN OS-LEVEL BADBLOCKS LIST. If they do, 
something is seriously wrong, because the drive should be hiding it from 
the OS.
> 
> The general advice is to avoid powering down an SSD which is suspected of
> corruption, until all the data is copied/recovered off it first.  If you power
> it down, data on it may never be accessible again without the aforementioned
> lab.

Seriously, this is EXTREMELY GOOD advice. I don't know whether it is 
still true, but there have been plenty of stories in the past about 
SSDs, when they get too many errors, they self-destruct on power-down!!!

This imho is a serious design fault - you can't recover data from an SSD 
that won't boot - but the fact is it appears to be a deliberate decision 
by the manufacturers.
> 
> BTW, running badblocks in read-write mode on an ailing/aged SSD may exacerbate
> the problem without much benefit by accelerating wear and causing additional
> cells to fail.  At the same time you could be relying on the suspect disk
> firmware to access via its virtual map the data on some of its cells.  Data
> scrubbing (btrfs, zfs) and recent backups would probably be a better strategy
> with SSDs.
> 
Yup. If you suspect badblocks have damaged your data, you need backups 
or raid. And then don't worry about it - apart from making sure your 
drives look healthy and replacing any that are dodgy.

Just make sure you interpret smartmontools data correctly - perfectly 
healthy drives can drop dead for no apparent reason, and drives that 
look at death's door will carry on for ever. In particular, read errors 
aren't serious unless they are accompanied by a growing number of 
relocation errors. If the relocation number jumps, watch it. If it 
doesn't move while you're watching, it was probably a glitch and the 
drive is okay. But use your head and be sensible. Any sign of regular 
failed writes, BIN THE DRIVE.

(I think my 8TB drive says 1 read error per less-than-two end-to-end 
scans is well within spec...)

Cheers,
Wol



  parent reply	other threads:[~2022-11-08 18:24 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-08  3:31 [gentoo-user] e2fsck -c when bad blocks are in existing file? Grant Edwards
2022-11-08 13:20 ` Michael
2022-11-08 14:28   ` [gentoo-user] " Grant Edwards
2022-11-08 17:55     ` Laurence Perkins
2022-11-08 18:49       ` Michael
2022-11-08 21:52       ` John Covici
2022-11-09 23:31       ` Grant Edwards
2022-11-09 23:54         ` Wol
2022-11-10  0:18           ` Grant Edwards
2022-11-10  0:37             ` Laurence Perkins
2022-11-08 18:24   ` Wols Lists [this message]
2022-11-09  8:46     ` [gentoo-user] " Michael
2022-11-09 16:53       ` Laurence Perkins
2022-11-12 13:38         ` Michael
2022-11-12 16:44           ` [gentoo-user] " Grant Edwards
2022-11-12 19:34             ` Michael
2022-11-13  3:54               ` Grant Edwards
2022-11-14 16:37                 ` Laurence Perkins

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7811a6a2-c192-fd50-1545-52126287754a@youngman.org.uk \
    --to=antlists@youngman.org.uk \
    --cc=gentoo-user@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox