Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I've noticed that on my home Ubuntu server one drive is read only for some reason. Digging up I found that this can happen when hard drives have errors. I used badblocks to check for errors, and indeed I have some damaged sectors.

In most cases the only rational course of action is to try to backup data, remove the HDD and buy a new one. However, this server doesn't have anything I already don't have backed up on multiple places, and I'd like to use it till it dies. I use it for streaming music and running some simple scripts. In any case, it would be a big fuss reinstalling everything.

Is there a way to mark these bad blocks without formatting a hdd?

share|improve this question

1 Answer 1

I assume you are talking about physical bad blocks on a disk and not about corrupted file systems.

To check the physical condition of your disk it's best to install smartmontools

sudo apt-get install smartmontools

This works because all modern disks log their health status using a system called S.M.A.R.T.

Use the smartctrl command to read out this status. For example to read all attributes from the first disk call

sudo smartctl --all /dev/sda

Watch out for a line talking about the overall heath status. Once this indicates an error it's very likely that the disk will fail soon.

SMART overall-health self-assessment test result: PASSED

Other lines you want to check for are the Pending Sector Count and the Reallocated Sectors.

  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       48
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       2

Reallocated lists usually in the raw field the number of bad sectors the disk exchanged for working spare ones. Pending are sectors which might be reallocated in case the next write fails.

You can even trigger self tests of the disk when supported by your model sudo smartctl -t long /dev/sda

To fore checking of all sectors use badblocks in a mode in which data is written. Beware that even in general it's safe to call it will put extra load on your disks which might cause them to fail. Always have a backup of your data.

sudo badblocks -svvn -c 262144 /dev/sda

If you have fully processed your disk this way the disk controller should have replaced all bad blocks by working ones and the reallocated count will be increased in the SMART log.

share|improve this answer
what is the influence of -c or the number of blocks which are tested at a time or in other words why do you such a large value compared to the default of 64? –  greole Sep 5 at 15:26
default block-size of 1024 bytes multiplied by the default of 64 blocks at a time leads to only 64k processed on each request. With modern disks having a throughput of up to 150 MiB/s this introduces more overhead than I feel comfortable with. I want to give the drive the chance to process the data in the most efficient way without waiting for the data on the bus. –  user228505 Dec 8 at 12:20

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.