If you are facing a healthy file system at the level of its structure and want to find files which have disk faulty blocks, here is how I would proceed:
Make a full backup of your disk with Time Machine
or Carbon Copy Cloner
Check this backup.
Run the following heavy and risky (in case you do have bad blocks outside of your filesystem structure) command (make sure the {} is quoted so filenames containing spaces work):
find / -type f -print -exec dd if="{}" of=/dev/null bs=1m \;
This heavy find
command will print for any plain file its name (thus not reading it, but just its directory entry) and then continue making a full and fast read of all its data blocks.
Upon hiting the first file containing bad blocks, this find
will cause the kernel to log read error
on /var/log/system.log
, and it will either slow down or bring your system to a total halt.
This will mostly depend on the hard drive capacity to relocate the bad blocks found on its internal pool dedicated to this usual fix task.
This file containing bad blocks will be the last name printed by find
.
Write down this file name on a piece of paper!
Let's say that this file name is:
/.DocumentRevisions-V100/.cs/ChunkStorage/0/0/0/9
At this point you may have the possibility to kill find
quickly by hiting ctrl+C. If killing it nicely is failing, just crash your Mac.
Upon rebooting your Mac, directly check the file containing bad blocks:
dd if='/.DocumentRevisions-V100/.cs/ChunkStorage/0/0/0/9' of=/dev/null bs=1m
If the command terminate correctly, then the error was light enough for your disk to be able to read this file and reallocate the bad blocks.
- If the command doesn't terminate, you won't be able to kill it
normally, your data is totally lost, and you will have to crash your Mac
once more.
In this last case, you have to consider replacing your disk and to work from your last backups. Some other files might also contain bad blocks and may have stayed undetected since a long time as long as you didn't read them.
The kernel won't fire a read error on a block you never read.
If your main partition is encrypted it will not be unlocked and mounted after booting to Recovery Mode.
After starting Disk Utility you have to unlock the volume first. Then enter the FileVault2 password. The volume will be mounted automatically after entering the proper password.
Now verify or repair your main volume.
Best Answer
The best option is to reboot with the option key held down. Boot from your Recovery HD and first repair the volume containing the partition you indicated, then repair the partition itself.
It is unusual, but not unheard of for the verify function to not be available since the design is to be able to self-verify but nor self-repair the boot volume.