-
Notifications
You must be signed in to change notification settings - Fork 62
Standards and Specifications
All ATA, SCSI, and NVMe based devices are developed based on standards developed by various committees to ensure that all devices will work according to the same set of behaviors.
Depending on what the device's capabilities are and how it is attached to the host system, multiple committees may have defined different aspects of the device's behavior.
The vendors that produce devices are part of these committees so that they can come together and agree on how a feature should work and how it interacts with other existing features on the device.
The following are the primary committees that govern storage device behaviors:
- T10 - The committee that governs SCSI command sets, interfaces (Fibre channel below), and operations
- T11 - The committee that governs the Fibre Channel interface. This is used for much more than storage devices, but Fibre Channel storage follows these standards on the interface level.
- T13 - The committee that governs ATA command sets, interfaces (SATA below), and operations
- SATA-IO - The committee that focuses specifically on the Serial ATA bus capabilities and features unique to serial ATA.
- NVMexpress - The committee that governs the NVMe command sets, interfaces, and operations
- SNIA-SFF - Small Form Factor committee. Has defined a lot of different standards including initial SMART technology, LBA sizes and common storage capacities, device connectors, and more.
There are additional standards organizations that may define additional capabilities, requirements, or interpretations of device behavior beyond the committees above.
- NIST - specifically, NIST 800-88 defines requirements for data erasure and verification
- IEEE - multiple standards are set by IEEE, but not all of IEEE's work is on storage. The biggest standards around storage from IEEE:
- 1394 - The firewire interface. This corresponds with the SBP standard from T10 among others
- 1667 - Most notably used by Microsoft's hardware BitLocker encryption
- 2883 - A standard on data erasure and verification of erasure
-
Trusted Computing Group (TCG) - defines security standards for storage devices and systems.
- Opal SSC
- Pyrite SSC
- Enterprise SSC
- Ruby SSC
- Opalite SSC
- PCIe - Peripheral Component Interconnect committee known for the PCI and PCIe connectors used by NVMe and SAS/SATA storage HBAs (among other things)
- ISO - International Organization for Standardization
- USB - specifically the interface of USB and the Bulk Only Transport (BOT) which uses T10 command standards for communication with storage devices. UAS (USB Attached SCSI) is governed by T10
- OCP - The Open Compute Project is a collection of drive vendors and their data center customers who have specific requirements for their drives. The specifications from OCP define which standardized features are required for data centers as well as what drive statistics/health/SMART data are required for a data center. While the specifications produced by OCP may impact drive features and capabilities this may not or may not affect what is adopted in the primary committees.
There may be additional standards organizations beyond this list, but this is a highlight of those most often used and referenced in relation to storage devices within openSeaChest.
openSeaChest and the low-level libraries that it uses to provide its support are written with a standards and specification first approach. This means that all code is written based on documentation produced by the organizations listed above first and foremost.
Workarounds and support for Vendor Specific behavior will be added as-needed to support as many devices as possible when necessary.
By taking a standards-first approach, this ensures compatibility with devices from any vendor; not only Seagate.