Take the 2-minute tour ×
Ask Different is a question and answer site for power users of Apple hardware and software. It's 100% free, no registration required.

Verification should be nondestructive.

For Mac hardware

There's a possible answer in Super User, but it predates Lion so:

  • I don't know whether badblocks run from a live CD is applicable where Apple_CoreStorage is amongst the types on the device to be checked.

If not applicable from a live CD, then one answer to this question might involve:

  • libfvde with an installation of any compatible OS that can run bad blocks.

Less exotically, I'll offer two answers that do not involve libfvde.


Background

Whilst I mention troublesome disks below, I don't seek help with those disks.

This question seeks answers that may be generalised to anyone who would like to check a disk.

Without Mac hardware

I typically use Ultimate Boot CD (UBCD) 5.1.1 to run HDAT2 4.5.3.

With Mac hardware

UBCD

Good for some purposes, but not for what I want from HDAT2.

If you know of a way to make HDAT2 run with, say, a MacBookPro5,2: that'll make a great answer.

ZEVO

Giving disks to ZFS instead of HFS Plus simplifies discovery of errors in space that is used, without attention to unused space. On at least two of my disks, a scrub following a Time Machine backup to ZFS has revealed what OS X alone can not: errors affecting bands within the sparse bundle disk image used by Time Machine.

S.M.A.R.T.

OS X SAT SMART Driver is useful, but not applicable to all types of external drive.

For an external drive where S.M.A.R.T. status is verified, according to Disk Utility, scrub finds errors … and so on.

For this question

  • Prefer a nondestructive check of all space (all blocks of a disk)
  • without a change of file system.

Related

In the ZEVO support forum:

share|improve this question

4 Answers 4

Install badblocks on OS X (Lion or greater)

For me, installation of Ext2 Filesystem 1.4d4 (2006-12-03) fails on Build 12A269 of OS X 10.8.

Whether installation is possible on 10.7.x, I don't know.

badblocks is currently not within MacPorts.

In 2009 someone mentioned using portutil to install badblocks but I don't know whether or how to go about that with Mountain Lion.


badblocks installed

Later, with Pacifist, I found badblocks installed. (Either the result of a long ago successful installation of Ext2 Filesystem, or a partial result of today's supposedly failed installation).

I used it to check all blocks of a slice that is currently spare, then copied it to that slice:

sh-3.2$ gjp22$ diskutil list disk0
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *750.2 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:                  Apple_HFS swap                    32.0 GB    disk0s2
   3:              Apple_Journal                         536.9 MB   disk0s3
   4:                  Apple_HFS spare                   671.1 MB   disk0s4
   5:          Apple_CoreStorage                         99.5 GB    disk0s5
   6:                 Apple_Boot Boot OS X               650.0 MB   disk0s6
   7:          Apple_CoreStorage                         616.3 GB   disk0s7
   8:                 Apple_Boot Boot OS X               134.2 MB   disk0s8
sh-3.2$ gjp22$ sudo /usr/local/sbin/badblocks -v /dev/disk0s4
/usr/local/sbin/badblocks: Resource busy while trying to determine device size
sh-3.2$ gjp22$ diskutil unmount /Volumes/spare
Volume spare on disk0s4 unmounted
sh-3.2$ gjp22$ sudo /usr/local/sbin/badblocks -v /dev/disk0s4
Checking blocks 0 to 655360
Checking for bad blocks (read-only test): done                                
Pass completed, 0 bad blocks found.
sh-3.2$ gjp22$ diskutil mount /dev/disk0s4
Volume spare on /dev/disk0s4 mounted
sh-3.2$ gjp22$ sudo ditto /usr/local/sbin/badblocks /Volumes/spare/sbin/badblocks

badblocks alone

I tried using the copy of badblocks with Recovery OS. It did not work:

-bash-3.2# sw_vers
ProductName:    Mac OS X
ProductVersion: 10.8
BuildVersion:   12A269
-bash-3.2# mount | grep "on / "
/dev/disk1s2 on / (hfs, local, read-only)
-bash-3.2# diskutil list disk1
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     Apple_partition_scheme                        *1.3 GB     disk1
   1:        Apple_partition_map                         30.7 KB    disk1s1
   2:                  Apple_HFS Mac OS X Base System    1.3 GB     disk1s2
-bash-3.2# diskutil unmount /Volumes/swap 
Volume swap on disk0s2 unmounted
-bash-3.2# /Volumes/spare/sbin/badblocks -v /dev/disk0s2
Illegal instruction: 4
-bash-3.2# 

Tentative conclusion

A full installation of OS X on a separate physical disk, followed by a partially successful installation of Ext2 Filesystem – to include at least badblocks – should allow a complete check of any other disk.

share|improve this answer

Start Ubuntu and run badblocks

Use an Ubuntu disc that works with your Mac, then run badblocks with appropriate options.

Ubuntu Manpage: badblocks - search a device for bad blocks

DVD compatible with a MacBookPro5,2

  • Ubuntu 8.10

DVDs not compatible with a MacBookPro5,2

  • Ubuntu 12.04 desktop i386
  • Xubuntu 12.04.1 desktop i386
  • Ubuntu 12.10 desktop i386

Example A

Adapted from a Mac-oriented post in the ZEVO support forum:

I ran badblocks onto a dedicated PC with Ubuntu Live, disk connected via SATA 6.

I opened four Terminal windows and began:

  • two instances with option -n
  • two instances with options -wsv

– at intervals of ten minutes (the second instance begun ten minutes after the first, and so on).

After seventy hours it was around 75% -n and 50% -w.

Yesterday I decided to stop badblocks and review S.M.A.R.T. values – a comparison with results of a first run of smartctl (after unboxing this new disk). Nothing had changed.

That's not Mac hardware, but as some Mac hardware can use SATA 6, I like this example; a pleasantly thought-provoking approach to multiple concurrent runs of badblocks against a single disk.

Example B

Started from Ubuntu 8.10, a partial test of a 750 GB Seagate Momentus® XT ST750LX003-1AC154 solid state hybrid internal to a MacBookPro5,2

ubuntu@ubuntu:/dev$ man badblocks
ubuntu@ubuntu:/dev$ badblocks -n -s -v /dev/sda
badblocks: Permission denied while trying to determine device size
ubuntu@ubuntu:/dev$ sudo badblocks -n -s -v /dev/sda
Checking for bad blocks in non-destructive read-write mode
From block 0 to 732574583
Checking for bad blocks (non-destructive read-write test)
Testing with random pattern: ^C1.30% done, 9:34 elapsed
Interrupt caught, cleaning up
ubuntu@ubuntu:/dev$ sudo badblocks -n -s -v /dev/sda
Checking for bad blocks in non-destructive read-write mode
From block 0 to 732574583
Checking for bad blocks (non-destructive read-write test)
Testing with random pattern:   0.23% done, 1:47 elapsed
                               0.92% done, 7:09 elapsed
                               1.00% done, 7:46 elapsed
                              25.13% done, 3:49:32 elapsed
                              25.13% done, 3:49:33 elapsed
                              25.13% done, 3:49:34 elapsed
                              25.13% done, 3:49:35 elapsed

I aborted the run to start OS X.

That was around 7.75 minutes for one percent, so for badblocks with those options to test that number of blocks (732574583) might take around 12.9 hours.

 Overviews of the disk used for that test

macbookpro08-centrim:~ gjp22$ diskutil list disk0
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *750.2 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:                  Apple_HFS swap                    32.0 GB    disk0s2
   3: FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF               536.9 MB   disk0s3
   4:                  Apple_HFS spare                   671.1 MB   disk0s4
   5:          Apple_CoreStorage                         99.5 GB    disk0s5
   6:                 Apple_Boot Boot OS X               650.0 MB   disk0s6
   7:          Apple_CoreStorage                         616.3 GB   disk0s7
   8:                 Apple_Boot Boot OS X               134.2 MB   disk0s8
macbookpro08-centrim:~ gjp22$ sudo gpt -r show -l /dev/disk0
Password:
       start        size  index  contents
           0           1         PMBR
           1           1         Pri GPT header
           2          32         Pri GPT table
          34           6         
          40      409600      1  GPT part - "EFI System Partition"
      409640    62500000      2  GPT part - "Apple_HFS_Untitled_2"
    62909640      262144         
    63171784     1048576      3  GPT part - "journal"
    64220360     1310720      4  GPT part - "spare"
    65531080   194305104      5  GPT part - "OS"
   259836184     1269544      6  GPT part - "Boot OS X"
   261105728  1203781256      7  GPT part - "gjp22-cs"
  1464886984      262144      8  GPT part - "Booter"
  1465149128           7         
  1465149135          32         Sec GPT table
  1465149167           1         Sec GPT header

If I understand correctly: around 1,465,149,169 blocks. So why might badblocks determine that only 732,574,583 are to be tested? If not related to SSHD (see below) this might be a separate question.

Related

Solid State Hybrid Technology: HDD SSD SSHD | Seagate

In Super User:


For a simplified edition of this answer, I'd like to perform a similar test with a hard disk drive (not a hybrid) as an example.

share|improve this answer

Install badblocks on Mac OS X (Leopard or less)

Mac OS X Ext2 Filesystem includes a badblocks that can be used with Mac OS X.

Credit: doctormac: How to check for bad blocks on a mac with Mac OS X? (2011) reference to Bad blocks? badblocks! | Terminal (2007)

share|improve this answer
up vote 0 down vote accepted

… If you know of a way to make HDAT2 run with, say, a MacBookPro5,2: that'll make a great answer. …

Recently I find that HDAT2 5.0 – on the most recent version (5.3.0) of Ultimate Boot CD – does run effectively with my 2009 MacBookPro5,2. So:

  • for myself, I'll mark this answer as accepted
  • then if anyone finds it impossible to run a version of HDAT with their own hardware, we can (re)consider alternative answers.
share|improve this answer

Your Answer

 
discard

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.