Solid-state drive
lastmod 2025-11-26created 2016-09-036 edits
A solid-state drive (SSD), or solid state disk, is a device that stores information using semiconductors.
Because a solid-state drive operates purely electronically, it greatly reduces the problems of mechanical hard disk drives (HDDs): long seek times, response times, mechanical latency, failure rates, and noise. On the other hand, SSDs using flash memory rather than DRAM were in most cases slower than hard disks for sequential reads and writes, though not for data access time. However, SSDs built with the latest technology mostly achieve read and write speeds equal to or higher than hard disk drives.
File system support for SSDs
- Main article: File systems optimized for flash memory, solid state media
- Wikipedia (en) Solid-state drive - Block alignment
Typically the same file systems used on hard disk drives can also be used on solid state drives. It is usually expected for the file system to support the TRIM command which helps the SSD to recycle discarded data (support for TRIM arrived some years after SSDs themselves but is now nearly universal). This means that file system does not need to manage wear leveling or other flash memory characteristics, as they are handled internally by the SSD. Some flash file systems using log-based designs (F2FS, JFFS2) help to reduce write amplification on SSDs, especially in situations where only very small amounts of data are changed, such as when updating file-system metadata.
While not a file system feature, operating systems should also aim to align partitions correctly, which avoids excessive read-modify-write cycles. A typical practice for personal computers is to have each partition aligned to start at a 1 MiB (= 1,048,576 bytes) mark, which covers all common SSD page and block size scenarios, as it is divisible by all commonly used sizes - 1 MiB, 512 KiB, 128 KiB, 4 KiB, and 512 B. Modern operating system installation software and disk tools handle this automatically.
Optimization
- SSD for Developers (Coding for SSD) - Part 1: Table of Contents 1
- SSD for Developers (Coding for SSD) - Part 2: SSD Architecture and Benchmarking 2
- SSD for Developers (Coding for SSD) - Part 3: Pages & Blocks & FTL (Flash Translation Layer) 3
- SSD for Developers (Coding for SSD) - Part 4: Advanced Features and Internal Parallelism 4
- SSD for Developers (Coding for SSD) - Part 5: Access Patterns and System Optimizations 5
- SSD for Developers (Coding for SSD) - Part 6: A Summary – What every programmer should know about solid-state drives 6