Set allocation units when formatting a USB stick

What’s the best way to do this on Linux? I usually use either GParted or the KDE partition manager and both don’t seem to offer this feature. So terminal I guess?

Background: I copy a lot of files from my PS4 to usb and although the PS4 Slim has usb 3.1 the write speed is incredibly low. And a known trick to make it faster is to format the stick on Windows and choose the largest allocation unit size available.

I have never tried to do this but I guess that what Windows calls “Allocation Units” is really the cluster size? Both mkfs.exfat and mkfs.vfat support the -s option which controls the number of sectors per cluster.

Keep in mind that this is a multiple of sector size so I guess you would take your desired “allocation unit” size and divide it by the sector size to get the correct number to pass here.

1 Like

https://man.archlinux.org/man/mkfs.exfat.8

There is no -s option.
Maybe you can tinker with the -b and -c options to improve performance.

2 Likes

If the version of mkfs.exfat on your system matches that man page then I am fairly certain that -c is what you are looking for.

Interestingly, mine does not.

>> mkfs.exfat                                                                                                                          
mkexfatfs 1.3.0
Usage: mkfs.exfat [-i volume-id] [-n label] [-p partition-first-sector] [-s sectors-per-cluster] [-V] <device>
1 Like
[~]$ mkfs.exfat
exfatprogs version : 1.1.3
Usage: mkfs.exfat
	-L | --volume-label=label                              Set volume label
	-c | --cluster-size=size(or suffixed by 'K' or 'M')    Specify cluster size
	-b | --boundary-align=size(or suffixed by 'K' or 'M')  Specify boundary alignment
	     --pack-bitmap                                     Move bitmap into FAT segment
	-f | --full-format                                     Full format
	-V | --version                                         Show version
	-v | --verbose                                         Print debug
	-h | --help                                            Show help

That’s what I get. Why does your mkfs.exfat show

mkexfatfs 1.3.0

I your kernel earlier than 5.7?
https://wiki.gentoo.org/wiki/ExFAT#Formatting

1 Like

No. It looks like you are using exfatprogs and I have exfat-utils installed.

My install is several years old.

2 Likes

Thx so far everybody!

Could you give me a hint here? Largest one on Windows was 8192 IIRC. But what’s the sector size on a USB stick?

edit It just came to my mind that I could always format my sticks at work on Windows. Why didn’t I think of this earlier? :thinking:

I would just install exfatprogs if you haven’t already. The version of mkfs.exfat there seems to support setting a clustersize in KiB or MiB.

1 Like

In this case I would use
sudo dump.exfat /dev/sdb1
(alter /dev/sdb1 according to your system)
In the bottom section you find your cluster size in Bytes.
Save the complete output of dump.exfat and then do your Windows thing to the drive (format with maximum allocation unit size) then do dump.exfat again and compare the outputs.
So you know what cluster-size to choose with Linux next time.
Please share dump.exfat outputs. I’m curious.

1 Like

Will share but it may take a few days. Life is really stressful at the moment :woozy_face: