Ubuntu – Ubuntu goes into read-only mode randomly

12.10diskfilesystemmountread-only

For the last few days, my Ubuntu 12.10 has been going to read-only mode randomly, making me unable to save any edited files, and forcing me to restart my computer, which is a pain because this is the platform on which I do all my programming work. When I do restart into Ubuntu (I have a dual-boot with Windows 7), it tells me that it detected a disk error, and that I have to press f to fix it, after which it will restart successfully.

My Windows 7 doesn't have any problems with it, so it can't be the hard disk. I also saw on a forum that I should run these commands to fix the issue: mount --options remount,rw / and mount --all, but these just say that I cannot mount the device on a read-only system. I'm a Linux newbie (and a newbie with computers in general) so any help would be greatly appreciated!

EDIT 1:

Okay, so I ran fsck from the boot CD… Is it supposed to only take two seconds? 'Cuz mine did. Anyway, it came back with two errors:

Superblock last mount time is in the future (hardware clock incorrect)

and

Superblock last write time is in the future (hardware clock incorrect)

It fixed both of them, apparently.

EDIT 2:

I just ran sudo fsck -Cf /dev/sda5. Found a lot more this time.

Is fsck supposed to take only a few seconds?

EDIT 3:

I just ran sudo badblocks -v /dev/sda5 and badblocks found four bad sectors:

27238968  
27238969  
27238970  
27238971  

What do I do with this knowledge? The guide bodhi linked says to write them to a file, but I'm in LiveCD – I can't write anything to the hard disk.

Best Answer

The Issue

The reason it randomly switches to read-only is that if the kernel detects a filesystem error, it immediately switches to read-only mode to prevent further trashing the disk. (That is, the problem isn't with the hard disk itself, but with the filesystem on the hard drive.) If you continue using such a corrupted filesystem, it will only get worse, not better. The easiest way to fix it is to use a live CD/DVD; the Ubuntu install disk will do.

The Fix

It goes without saying, but step zero is, Ensure you have a backup of vital data.

  1. Boot your computer from the live disk.
  2. The easiest way to perform these operations is in the terminal, so go ahead and open one with Ctrl-Alt-T.
  3. Run sudo blkid to get a list of all the block devices on the computer. You are looking for the partition you installed Ubuntu to; it will likely be /dev/sdaX, where X is some number. If you have absolutely no idea which one it is, it will likely be the only one formatted as ext3 or ext4 (TYPE="ext4").
  4. Run sudo umount <your partition> to ensure the partition is unmounted; the filesystem checker will refuse to operate on a mounted disk.
  5. Run sudo fsck -Cy <your partition>. The -C option displays a progress bar and is entirely for show. -y tells fsck to go ahead and fix everything it finds. If it comes back with errors, use your best judgement, or post them here and I'll look at them.
  6. Reboot; hopefully, you're done! If you'd like, you can run fsck more than once to ensure that it really did fix everything.
Related Question