Why Does Write Amplification Occur on Flash Storage?

Write amplification occurs on flash storage because the smallest unit that can be written is much smaller than the smallest unit that can be erased. When an operating system performs small random file updates, the storage controller cannot overwrite the existing data in place. Instead, it must write the new data to a fresh location, mark the old data as invalid, and eventually copy all remaining valid data out of an entire erase block before that block can be wiped and reused.

Pages Versus Erase Blocks

Flash memory, such as NAND flash found in solid-state drives, is organized into a strict hierarchy. Data is read and programmed in units called pages, which are typically 4 KB to 16 KB in size. However, pages are grouped together into much larger units called erase blocks, which commonly contain 128 to 512 pages and span several megabytes.

While a single page can be written independently, flash physics prevents individual pages from being overwritten directly. Before a programmed page can be written again, its entire parent erase block must be reset to an erased state.

Out-of-Place Updates and the Flash Translation Layer

When an application modifies a small portion of a file, the host system sends a small random write request to the drive. Because the Flash Translation Layer (FTL) cannot overwrite the old page in place, it performs an out-of-place update:

  1. The FTL writes the updated data to a previously erased, empty page in a different location.
  2. It updates its internal logical-to-physical mapping table to point the file's logical block address to the new physical page.
  3. It marks the old physical page as stale or invalid.

This process allows the write to complete quickly, but it leaves behind fragmented blocks containing a mix of valid and invalid pages.

Garbage Collection and Data Migration

As the drive fills up, the FTL must reclaim space from blocks that contain invalid pages. This background process is called garbage collection. To erase a block and make its pages available for future writes, the controller must first preserve any valid data still residing in that block.

The controller reads every remaining valid page from the target block, writes those pages into a new block, updates the mapping table again, and finally erases the original block. Because small random updates scatter invalid pages across many different blocks, garbage collection is forced to copy a large amount of valid data just to free up a small amount of space.

Quantifying Write Amplification

The ratio of actual physical data written to the flash media compared to the logical data sent by the host is known as the Write Amplification Factor (WAF):

\[WAF = \frac{\text{Data Written to Flash}}{\text{Data Written by Host}}\]

In an ideal sequential write workload, where entire blocks are written and invalidated together, \(WAF\) approaches \(1\). Under heavy small random write workloads, however, each host write triggers additional internal page copies during garbage collection, pushing \(WAF\) significantly higher than \(1\). This extra write traffic reduces sustained write performance and accelerates the wear of the flash cells, which have a finite number of program-erase cycles.