34
Figure 3-2 also shows the Block Translation Table (BTT) driver, which can be
optionally configured into the I/O subsystem. Storage devices such as HDDs and SSDs
present a native block size with 512k and 4k bytes as two common native block sizes.
Some storage devices, especially NVM Express SSDs, provide a guarantee that when a
power failure or server failure occurs while a block write is in-flight, either all or none
of the block will be written. The BTT driver provides the same guarantee when using
persistent memory as a block storage device. Most applications and file systems depend
on this atomic write guarantee and should be configured to use the BTT driver, although
operating systems also provide the option to bypass the BTT driver for applications that
implement their own protection against partial block updates.
Persistent Memory-Aware File Systems
The next extension to the operating system is to make the file system aware of and be
optimized for persistent memory. File systems that have been extended for persistent
memory include Linux ext4 and XFS, and Microsoft Windows NTFS. As shown in
Figure 3-3, these file systems can either use the block driver in the I/O subsystem (as
described in the previous section) or bypass the I/O subsystem to directly use persistent
memory as byte-addressable load/store memory as the fastest and shortest path to data
stored in persistent memory. In addition to eliminating the I/O operation, this path
enables small data writes to be executed faster than traditional block storage devices that
require the file system to read the device’s native block size, modify the block, and then
write the full block back to the device.
Chapter 3 Operating SyStem SuppOrt fOr perSiStent memOry
Figure 3-2 also shows the Block Translation Table (BTT) driver, which can be
optionally configured into the I/O subsystem. Storage devices such as HDDs and SSDs
present a native block size with 512k and 4k bytes as two common native block sizes.
Some storage devices, especially NVM Express SSDs, provide a guarantee that when a
power failure or server failure occurs while a block write is in-flight, either all or none
of the block will be written. The BTT driver provides the same guarantee when using
persistent memory as a block storage device. Most applications and file systems depend
on this atomic write guarantee and should be configured to use the BTT driver, although
operating systems also provide the option to bypass the BTT driver for applications that
implement their own protection against partial block updates.
Persistent Memory-Aware File Systems
The next extension to the operating system is to make the file system aware of and be
optimized for persistent memory. File systems that have been extended for persistent
memory include Linux ext4 and XFS, and Microsoft Windows NTFS. As shown in
Figure 3-3, these file systems can either use the block driver in the I/O subsystem (as
described in the previous section) or bypass the I/O subsystem to directly use persistent
memory as byte-addressable load/store memory as the fastest and shortest path to data
stored in persistent memory. In addition to eliminating the I/O operation, this path
enables small data writes to be executed faster than traditional block storage devices that
require the file system to read the device’s native block size, modify the block, and then
write the full block back to the device.
Chapter 3 Operating SyStem SuppOrt fOr perSiStent memOry
