Reformat exFat with specific Device Block Size and Cluster Size

The maximum allocation block (or cluster) count for exFAT is 2^32 = 4,294,967,296.

To get the minimal size of an allocation cluster on your partition divide the size of your partition through 2^32.

Examples:

  • for a 100 GB partition the minimal size is 100,000,000,000 bytes/4,294,967,296=~23.3 bytes. Since the smallest device block size is 512 bytes, the allocation block size can't be smaller.

  • For a 3 TB partition the minimal size is 3,000,000,000,000 bytes/4,294,967,296=~698.5 bytes. The minimal possible allocation block size is then 1024 bytes.

To format a partition use newfs_exfat [options] /dev/disk*s*

The following options regarding allocation block sizes are available:

 -b bytes-per-cluster
         File system block size (bytes per cluster).  Acceptable values
         are powers of 2 in the range 512 through 33554432.

 -c sectors-per-cluster
         Sectors per cluster.  Acceptable values are powers of 2 in the
         range 1 through 65536. 

To reformat your exFAT volume first copy the content to another volume. Then enter:

diskutil list #to get the disk identifier of the exFAT partition
diskutil unmount /dev/disk0s6
sudo newfs_exfat -c 1 -v exFAT /dev/disk0s6
diskutil mount /dev/disk0s6

The command will create one allocation (or cluster) block/device block and rename the volume to exFAT.

Alternatively you may use

sudo newfs_exfat -b 512 -v exFAT /dev/disk0s6

Most modern HDDs or SSDs use device block sizes of 4096 bytes and the displayed device block size of 512 bytes is only a "logical" device block size probably for compatibility reasons. So a minimal allocation block size of at least 4096 bytes is recommended.

Also the default cluster block sizes of various sized exFAT partitions in Windows "mention" at least 4 kb.


To get the current cluster block size (and other informations) of an exFAT volume do the following:

diskutil list #to get the disk identifier of the exFAT partition
diskutil unmount /dev/disk0s6
sudo newfs_exfat -N /dev/disk0s6
diskutil mount /dev/disk0s6