|
|
Log in / Subscribe / Register

An update on storage standards

We're bad at marketing

We can admit it, marketing is not our strong suit. Our strength is writing the kind of articles that developers, administrators, and free-software supporters depend on to know what is going on in the Linux world. Please subscribe today to help us keep doing that, and so we don’t have to get good at marketing.

By Jake Edge
April 5, 2017

LSFMM 2017

In a second-day plenary session at the 2017 Linux Storage, Filesystem, and Memory-Management Summit, Fred Knight updated the attendees on what has happened in the storage standards world over the last year. While the transports (e.g. Fibre Channel, Ethernet) and the SCSI protocol have not seen a ton of changes over the last year, the NVM Express (NVMe) standards have had a lot of action.

On the transport standards side, Fibre Channel has some new speeds available (32Gb/128Gb) and some in the works (64Gb/256Gb). Terabit Fibre Channel is on the roadmap, Knight said, "it will be interesting to see if they can reach it". Ethernet has added new speeds (from 2.5Gb up through terabit) as well as new markets (e.g. automotive). NVMe has a new command set and multiple connectivity options (e.g. PCIe, RDMA over Ethernet, InfiniBand).

SCSI

For SCSI, a simplified binding status command has been added (TEST BIND). The WRITE ATOMIC command has been added; it will allow writes that either write all of the data or none of it. In addition, a 32-byte variant of WRITE SCATTER has been added. The combination of atomic with scatter writes, which was discussed at LSFMM 2016, is not likely to make an appearance, Knight said. Some storage companies are objecting to it; they have figured out that Linux gets this right and they might get it wrong, so they want to leave it alone, he said.

[Fred Knight]

The WRITE STREAM command for stream IDs has been added to the standard. In addition, the BACKGROUND CONTROL command has been added to allow some control over the background tasks that a storage device may be doing (e.g. garbage collection). That background processing can impact I/O at times, so users have wanted some ability to change the parameters governing it.

Some predefined feature sets (e.g. "2010 Basic", "2016 Basic", "Maintenance", "Provisioning") have been established that storage devices can advertise and hosts can check to see what features are available. New feature sets will be added over time, Knight said, so it will be an ongoing process. Ted Ts'o asked if devices can advertise some feature set but implement additional features beyond those in the set; Knight said they could.

The biggest thing in the SCSI world over the last year has been drive depopulation, Knight said. The way that drives fail is different than what was expected, so it is often just a part of the drive that goes bad. If you have an 8TB drive where one head goes bad, you can just disable that portion of the drive and turn it into a 6TB drive, for example.

For both SCSI and ATA, the "repurposing" support is available. The drive will be available at the reduced capacity and the data that was there will either no longer be available or will be at a different logical block address (LBA) than it was before. The GET PHYSICAL ELEMENT STATUS command can be used to determine what element is failing and what capacity it has. The REMOVE ELEMENT AND TRUNCATE command can then be used to disable the failing piece. The drive can be reformatted; if another element fails, the process can be repeated.

There has been longtime support in the standard for reading the whole drive to try to recover the data that is still there. There are commands that will provide information that the next N LBAs are bad, so they can be skipped. That will allow the host to recover as much data as it can after an element failure.

There was some talk last year about a "data preserving" mode for depopulation. It is complex, however, so it will take a lot longer to be added if it is at all. There are "a bunch of people" asking if there really is a need for that, so it could "end up on the cutting room floor", Knight said.

NVMe

It has been a busy year for the NVMe group, he said. The formal specifications for the fabric were published. The "sanitize" command has been formalized; it can be used to clean the drive before it is repurposed. Other mechanisms, such as crypto erase and block erase, will ruin SSDs, so those devices do not implement them.

A device crash-dump facility, called "telemetry", has been added to the specification. Stream IDs have been added as well. Some support for persistent reservation has been added, but it is incompatible with the SCSI feature, which is not what was wanted. A compatible version is currently a work in progress.

Virtualized/emulated controllers are another feature that has been added. This allows virtual machines to think they have their own dedicated NVMe controller. Each guest gets a dedicated queue pair mediated by the hypervisor. That allows multiple guests to share a single physical NVMe adapter.

The NVMe group has around 80 people on a two-hour call each week, while the T10 (SCSI), T11 (Fibre Channel), and T13 (ATA) committees have three-day meetings every few months. There is some concern that those groups are running out of things to do. The NVMe group is ramping up, he said, while the others are much more stable than they were a few years ago.

Mathew Wilcox asked how Knight felt about all the different errors that can be reported by storage devices essentially all boiling down to EIO (I/O error) in Linux. Knight chuckled and pointed to all of the kinds of sense codes and media errors that are reported by storage devices. But as Martin Petersen pointed out, for POSIX they really all do need to be mapped to EIO because applications don't understand anything else.


Index entries for this article
ConferenceStorage, Filesystem, and Memory-Management Summit/2017


to post comments

An update on storage standards

Posted Apr 5, 2017 21:55 UTC (Wed) by MattJD (subscriber, #91390) [Link] (4 responses)

> Other mechanisms, such as crypto erase and block erase, will ruin SSDs, so those devices do not implement them.

I'm having a hard time understanding this comment. Why would crypto erase ruin SSDs? Don't modern (high-end?) SSDs encrypt all data anyways (with a key stored on device), so that when you issue an erase command it just scrubs the key?

Or is this meant to actually overwrite all the data on the drive? Unless you are doing this daily, would this even matter to modern drives? Current warranties seem to be about 0.3 drive writes per day (based on my observation from a sampling of reviews) for consumer gear, and most consumers don't come close to that.

Crypto/Block Erase

Posted Apr 6, 2017 4:18 UTC (Thu) by fratti (subscriber, #105722) [Link] (3 responses)

It seems more likely to me that Crypto- and Block-Erase would simply be ineffective in SSDs, though I do not know much about NVMe. SSDs usually hide the actual cells behind a controller that does cell wear management and garbage collection.

This is also why SSD lives are actually longer than some people think, and why it's a good idea to leave a portion of your SSD unoccupied at all times. The controller will shuffle around which cells it uses to write to in order to ensure that all cells are worn about equally. As a side effect, this means that doing things such as writing random data over "the entire" drive is not guaranteed to actually destroy all data on it, since the controller may distribute that written data over the cells as it sees fit, as if there was another block layer below the block layer of the OS.

Crypto/Block Erase

Posted Apr 6, 2017 19:06 UTC (Thu) by mageta (subscriber, #89696) [Link] (1 responses)

No. "SANITIZE" is just a "simple" command (I assume this is much like the SANITIZE we have in SCSI SBC command). The device/-server can implement that command however it likes.. so if a SSD would provide a compliant implementation it would obviously have to do so in a way that really sanitizes the blocks addressed in the command.

Crypto/Block Erase

Posted Apr 6, 2017 22:21 UTC (Thu) by fratti (subscriber, #105722) [Link]

We're not disagreeing. I'm not talking about SANITIZE. I'm talking about how a classic erase/overwrite as is done on spinning platter disks would be ineffective on SSDs due to their wear levelling, thus if block erasure worked the same as on spinning platter drives, it would be harmful to SSDs.

Crypto/Block Erase

Posted Apr 6, 2017 22:57 UTC (Thu) by jhoblitt (subscriber, #77733) [Link]

I had assumed that NVMe devices had a hidden log structured filesystem similar to SATA/SAS devices for wear leveling. Is that not always the case?

An update on storage standards

Posted Apr 6, 2017 23:20 UTC (Thu) by jhoblitt (subscriber, #77733) [Link]

Very tangential to the topic but does anyone have a guess as to where we are headed with NVMe physical interfaces? Many desktop boards now include a (single) M.2 slot along with multiple SATA ports. The attached server storage market seems to be moving towards RAID/JBOD controllers with SFF-8639 / U.2 ports. However, U.2 devices don't seem to be very plentiful and appear to price'd/spec'd to replace only top segment SAS drives. 2.5" U.2 drives must already be mostly dead space -- this seems wasteful in terms of storage density.

Are we headed towards U.2 / SFF-8639 ports replacing SATA for desktop/low end server mainboards? Or storage ports going away completely and PCIe "m.2" adapter cards being used as needed?


Copyright © 2017, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds