For many years, I have used two SanDisk Ultra 16 GB USB flash drives
as OS installation media. Since I do not trust Ventoy yet,
and alternative “one stick that does it all” solutions have had odd bugs from time to time,
I prefer having separate physical USB sticks for each OS, one for Fedora Linux,
and one for Windows 10.

I hate reflashing sticks all the time and would like to have at least one around
that always has Fedora Linux on it, so I decided to get two more USB sticks of the
same brand and size. Once they arrived, I got annoyed.

The old flash drive shows up like this in GNOME Disks.

Here’s the new one.

Although it does not matter one bit for my use case, I am annoyed that the new one
is shipping with much fewer bits than the old one. I’m a whole 607125504 bytes short!
That’s 579 MB, or about half a gigabyte.

The only difference that I can make out on the surface is that the new one was manufactured in Malaysia.

Other than years worth of wear and tear, they look almost identical.
Other than years worth of wear and tear, they look almost identical.

But it seems that SanDisk (or their new owner Western Digital) has legally covered their butt with
this knowledge base article.

Here’s the line that explains why some bytes are seemingly missing on formatted media.
This is what consumers are usually concerned about once they use their storage device.

SanDisk defines 1 GB as 1,000,000,000 bytes. Operating Systems define 1 GB as 1,073,741,824 BYTES.

However, this section is the one actually relevant to my finding.

A portion of the total capacity is used to store certain functions including optimizations of the memory
that support performance and endurance and therefore is not available for user storage.
This is disclosed on our packaging and marketing materials when you see the statement “Actual user storage less.”

Based on this, I assume that SanDisk cheaped out and decided to not add enough flash to provide
both the advertised storage of 16 000 000 000 bytes available to the user and some room for
over-provisioning that flash storage benefits from. And somehow they are the only ones who do it
this way, as all other storage media that I own shows up with the proper number of bytes.

And for those interested, here’s f3 output for both the old and new sticks.

Old:

# f3probe /dev/sdc --destructive --time-ops
F3 probe 8.0
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.

WARNING: Probing normally takes from a few seconds to 15 minutes, but
         it can take longer. Please be patient.

Good news: The device `/dev/sdc' is the real thing

Device geometry:
	         *Usable* size: 14.91 GB (31266816 blocks)
	        Announced size: 14.91 GB (31266816 blocks)
	                Module: 16.00 GB (2^34 Bytes)
	Approximate cache size: 0.00 Byte (0 blocks), need-reset=no
	   Physical block size: 512.00 Byte (2^9 Bytes)

Probe time: 1'49"
 Operation: total time / count = avg time
      Read: 463.8ms / 4814 = 96us
     Write: 1'48" / 4192321 = 25us
     Reset: 1us / 1 = 1us

New:

# f3probe /dev/sdd --destructive --time-ops
F3 probe 8.0
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.

WARNING: Probing normally takes from a few seconds to 15 minutes, but
         it can take longer. Please be patient.

Good news: The device `/dev/sdd' is the real thing

Device geometry:
	         *Usable* size: 14.34 GB (30081024 blocks)
	        Announced size: 14.34 GB (30081024 blocks)
	                Module: 16.00 GB (2^34 Bytes)
	Approximate cache size: 0.00 Byte (0 blocks), need-reset=no
	   Physical block size: 512.00 Byte (2^9 Bytes)

Probe time: 1'02"
 Operation: total time / count = avg time
      Read: 338.2ms / 4814 = 70us
     Write: 1'02" / 4192321 = 14us
     Reset: 1us / 1 = 1us

I’m not even mad, I’m just disappointed.

If you prefer to share your thoughts on this post privately,
just send me an e-mail!

Places where you can discuss this post:

Read More