I suspect there might be bad sector on a disk. I used ext3 filesystem.
What tool is the best equivalent of the error checking tool of Windows?
I suspect there might be bad sector on a disk. I used ext3 filesystem.
What tool is the best equivalent of the error checking tool of Windows?
Disks
To check for bad sectors check the SMART data, probably the best accessible by launching the Disks utility (Palimpsest). Even if you don't see any bad blocks there, launch a self-test to be sure.
The program is bundled in the
gnome-disk-utility
package. Rungksudo gnome-disks
Or in Ubuntu 16.04 version (3.18):
Badblocks
You can also use
badblocks
to just check, or to check and fix first write the result to a temporary file:
will check the whole disk and print out all bad blocks encountered on /dev/sda.
From
badblocks
manual:fsck
fsck
itself will not help you find bad sectors, worse still, if there are a lot of bad sectors it can damage your data even more. Use it only when the disk is healthy.Throughout this answer I'll assume, that a storage drive appears as a block device at the path
/dev/sdc
. To find the path of a storage drive in our current setup, use:palimpsest
), if a GUI is available, orlsblk
andls -l /dev/disk/by-id
and try to find the right device by size, partitioning, manufacturer and model name.Basic check
Sometimes a storage medium simply refuses to work at all. It still appears as a block device to the kernel and in the disk manager, but its first sector holding the partition table is not readable. This can be verified easily with:
If this command results in a message about an “Input/output error”, our drive is broken or otherwise fails to interact with the Linux kernel as expected. In the a former case, with a bit of luck, a data recovery specialist with an appropriately equipped lab can salvage its content. In the latter case, a different operating system is worth a try. (I've come across USB drives that work on Windows without special drivers, but not on Linux or OS X.)
S.M.A.R.T. self-test
Devices that support it, can be queried about their health through S.M.A.R.T. or instructed to perform integrity self-tests of different thoroughness. This is generally the best option, but usually only available on (non-ancient) hard disk and solid state drives. Most removable flash media don't support it.
Further resources and instructions:
Read-only check
To test the read integrity of the whole device without writing to it, we can use
badblocks(8)
like this:This operation can take a lot of time, especially if the storage drive actually is damaged. If the error count rises above zero, we'll know that there's a bad block. We can safely abort the operation at any moment (even forcefully like during a power failure), if we're not interested in the exact amount (and maybe location) of bad blocks. It's possible to abort automatically on error with the option
-e 1
.Note for advanced usage: if we want to reuse the output for
e2fsck
, we need to set the block size (-b
) to that of the contained file system. We can also tweak the amount of data (-c
, in blocks) tested at once to improve throughput; 16 MiB should be alright for most devices.Non-destructive read-write check
Sometimes – especially with flash media – an error only occurs when trying to write. (This will not reliably discover (flash) media, that advertise a larger size, than they actually have; use Fight Flash Fraud instead.)
NEVER use this on a drive with mounted file systems!
badblocks
refuses to operate on those anyway, unless you force it.Don't interrupt this operation forcefully! Ctrl+C (SIGINT/SIGTERM) and waiting for graceful premature termination is ok, but
killall -9 badblocks
(SIGKILL) isn't. Upon forceful terminationbadblocks
cannot restore the original content of the currently tested block range and will leave it overwritten with junk data and possibly corrupt the file system.To use non-destructive read-write checks, add the
-n
option to the abovebadblocks
command.Destructive read-write check
As above, but without restoring the previous drive content after performing the write test, therefore it's a little faster. Since data is erased anyway, forceful termination remains without (additional) negative consequence.
To use destructive read-write checks, add the
-w
option to the abovebadblocks
command.fsck - check and repair a Linux file system. Invoke it using
where /dev/sda1 is the drive you want to check. See 'man fsck' for more details.
There's also 'badblocks' command which checks a device for, you guessed it, bad blocks.
The drive need to be unmounted when checked, so to check the root partition you need to create a file 'forcefsck' in the root of the partition and reboot. The device will be checked upon the next boot:
Alternatively, you can boot from a Live CD and run the check from there.
badblocks
You can check for badblocks running the command
sudo badblocks -nsv /dev/[device-partition] > bad-blocks-result
for a non-destructive read-write test. That will generate a file calledbad-blocks-result
with the sectors damaged.sudo fsck -t ext3 -l bad-blocks-result /dev/[device-partition]
to tell the file system where the bad sectors are and move data away from them, if possible.You can find more reading about it here.
smartctl
IMO smartctl is a better tool. You likely have to install it first
Then
to print drive health data, attributes, and available test results. To quit less, type
q
. Alternativelyto just print health data.
To begin a new short (a few minutes) or long (up to many hours) self test in background:
GSsmartControl (home page) and Gnome Disks are graphical front ends if you prefer.
See also
F3 (Fight Flash Fraud) is another option which should additionally detect fake flash drives (flash drives whose actual capacity is a fraction of advertised capacity):
Install F3
Insert your drive
Write test data to the free space on the drive (check where your drive is mounted with
lsblk
)Read the test data
Reference:
Badblocks works well but it isn't designed for detecting fake flash drives and may not report any errors for them.
You can test-read the entire disk, while showing a progress indicator:
Certain disk problems would manifest as reported I/O errors. This is a bit nicer than
dd
due to the progress indicator and because the command-line interface is a bit more standard and a bit less typo-prone. Note thatpv
is basically and enhanced version ofcat
. It may not be installed by default, but can be installed withsudo apt-get install pv
.A similar approach is to read the disk with one of the several available tools that are specifically aware of disk I/O errors -- and have the feature of "trying hard to rescue data". Search for
ddrescue
in the package manager.If you have a partition that you CAN NOT LOOSE THE DATA follow these steps
$fdisk -l commnd
Lets assume that the partition to check is called /dev/sdPTC (partition to check) and that you have another partition to store the results mounted on /scan/resultPath/ folder
2.Then you can run this command
$sudo badblocks -v /dev/sdPTC > /scan/resultPath/badsectors.txt
which will determine what are the bad blocks of the given device and store them on a file called badsectors.txt
fsck
command to tell Ubuntu not to use the bad sectors mentioned in the badsectors.txt file.$sudo fsck -l /scan_result/badsectors.txt /dev/sda
That way life of the hard disk is increased a bit until you get a new one for replacement.
If you have a complete partition that you want to check for bad physical sectors and you CAN AFFORD LOOSE ALL DATA on that partition or is EMPTY follow these steps
$sudo apt-get install gnome-disk-utility
$sudo gnome-disks
Check and double check that there is no important data on that partition
Using
gnome-disks
DELETE/REMOVE the partition by hand using the "-" signUsing
gnome-disks
CREATE a new partition and select the "slow" option that will check the given space for errors