On 2/6/23 06:34, Matias Bjørling wrote:
Maybe it is one beginning for generic open-source userspace SSD
FTL, which could be useful for people curious in SSD internal. I
have google several times for such toolkit to see if it can be
ported to UBLK easily. SSD simulator isn't great, which isn't disk
and can't handle real data & workloads. With such project, SSD
simulator could be less useful, IMO.
Another possible avenue could be the FTL module that's part of SPDK.
It might be worth checking out as well. It has been battletested for
a couple of years and is used in production
(https://www.youtube.com/watch?v=qeNBSjGq0dA).
The module itself could be extracted from SPDK into its own, or
SPDK's ublk extension could be used to instantiate it. In any case, I
think it could provide a solid foundation for a host-side FTL
implementation.
Thanks Matias for the link. I had not yet heard about this project.
Although I have not yet had the time to watch the video, on
https://spdk.io/doc/ftl.html I found the following: "The Flash
Translation Layer library provides efficient 4K block device access on
top of devices with >4K write unit size (eg. raid5f bdev) or devices
with large indirection units (some capacity-focused NAND drives), which
don't handle 4K writes well. It handles the logical to physical address
mapping and manages the garbage collection process." To me that sounds
like an effort that has very similar goals as ZNS and ZBC? Does the
following advice apply to that project: "Don't stack your log on my
log"? (Yang, Jingpei, Ned Plasson, Greg Gillis, Nisha Talagala, and
Swaminathan Sundararaman. "Don’t stack your log on my log." In 2nd
Workshop on Interactions of NVM/Flash with Operating Systems and
Workloads ({INFLOW} 14). 2014.)
Thanks,
Bart.