This problem has been reported to occur on Intel MacPro's using internal drives from various manufactures with capacities >= 3 TB. Specifically, it's been reported when using Disk Utility in OS X Mountain Lion (10.8) and Mavericks (10.9).
Although there have been solutions involving using diskutil in Terminal posted here at AskDifferent and elsewhere on the web, I found a simpler solution: Format the disk using Disk Utility from an OS X Snow Leopard (10.6) Install DVD.
Warning: This solution will cause you to lose all data on the drive.
- Backup any valuable data from the drive in question.
- Reboot using the OS X Snow Leopard (10.6) Install DVD. (Hold down the C-Key to boot from the DVD.)
- Choose your language (eg. English).
- Instead of installing OS X, choose Disk Utility from the Utilities menu.
- Select your drive from the pane on the left of the Disk Utility screen.
- Choose the Partition tab.
- Select your desired Partition Layout.
- Select Mac OS Extended (Journaled) under Format:
- Check the Options button and verify that GUID is selected as the partition scheme.
- Click the Apply button and verify you want to proceed.
- When the partition and format process is complete, quit Disk Utility and reboot.
The disk will now be correctly formatted using a GUID partition table.
(If you need to repartition or reformat the drive in the future, you will need to repeat this process. Hopefully Apple will fix this bug in a later version of Disk Utility.)
You can repartition the disk with gpt and format the partition with newfs_hfs:
Open Terminal.app and to get an overview enter:
diskutil list
Get the partition table of the disk in question (below I assume the disk to partition is disk2):
sudo gpt -r show disk2
Destroy the GUID partition table and create a new one:
diskutil umountDisk disk2
sudo gpt destroy disk2
sudo gpt create disk2
If the disk previously was formatted as a FAT volume, a new GUID partition table can't be created because the PMBR turns into an MBR (which blocks the GPT creation) and you have to overwrite it first:
diskutil umountDisk disk2
sudo gpt destroy disk2
diskutil umountDisk disk2
sudo dd if=/dev/zero of=/dev/disk2 count=1
sudo gpt create disk2
Get the new partition table:
sudo gpt -r show disk2
Now create a new partition with gpt. Depending on the block size of your disk you may have to align the partition. Disks with a block size of 512 Bytes have to be aligned. On disks with a block size of 4096 Bytes you can use the first free block (block nr. 6) and the size of the free space.
Example (a 2.2 TB disk with a block size of 512 Bytes):
start size index contents
0 1 PMBR
1 1 Pri GPT header
2 32 Pri GPT table
34 4292870077
4292870111 32 Sec GPT table
4292870143 1 Sec GPT header
Do the math and align your volume to 4k blocks. This means: the start block and the size is divisible through 8 (and has to fit in 4292870071 blocks in my example because the lowest recommended start block is 40). Create a new partition:
sudo gpt add -i 1 -b 40 -s 4292870064 -t 48465300-0000-11AA-AA11-00306543ECAC disk2
with i: index position (usually 1 for the first partition); b: start block; s: size in blocks and t: type of partition (here HFS+ = 48465300-0000-11AA-AA11-00306543ECAC).
Example (a 6.0 TB disk with a block size of 4096 Bytes):
start size index contents
0 1 PMBR
1 1 Pri GPT header
2 4 Pri GPT table
6 976746229
976746235 4 Sec GPT table
976746239 1 Sec GPT header
sudo gpt add -i 1 -b 6 -s 976746229 -t 48465300-0000-11AA-AA11-00306543ECAC disk2
Format the partition with newfs_hfs (-v name: name the volume; -J: journaled):
sudo newfs_hfs -v test -J /dev/rdisk2s1
The volume will be mounted automatically. Else enter diskutil mount disk2s1
.
Be warned: checking the disk with Disk Utility will yield:
Problems were found with the partition map which might prevent booting...
and with diskutil verifyDisk disk2
Started partition map verification on disk2
Checking prerequisites
Checking the partition list
Problems were found with the partition map which might prevent booting
Error: -69770: Partition map check failed because no slices were found
Best Answer
The equivalent commands are given below.
Where
diskX
is the identifier for the drive. The value ofX
needs to be replaced with a integer of0
or higher. The commanddiskutil list
will list all the current disk identifiers. The commanddiskutil listfilesystems
will list the available formats.