Direct Access Files System (DAFS) is a file-sharing protocol that uses memory-to-memory interconnect architecture and is designed for storage area networks to enforce bulk data transfer between machines' application buffers without forming packets of data. Applications using DAFS transfer data to and from application buffers without the operating system, freeing up the processor for other processes beyond making files available to servers using different operating systems. DAFS is a standard protocol developed for network-attached storage that uses the virtual interface architecture that was designed in 1996 by Intel, Compaq and Microsoft as a data transportation mechanism. It is based on network file system version 4 protocols, with additional protocol features for direct data transfer that make use of remote direct memory access (RDMA), reliable locking, session recovery, scatter I/O, gather list I/O, etc. It’s a distributed file system built on top of direct access transports.
DAFS is basically designed to enable a user-level file system client, where a DAFS client may run as an application library above the OS kernel, with kernel activity limited to network device support and memory management. Such a structure improves portability, performance and reliability. It also offers fully asynchronous input/output (I/O) applications with a direct control on caching and data movement. DAFS was initially introduced to combine the low overhead of of a storage area network with direct access transport to read and write applications. DAFS assumes reliable network transport and offers server-oriented command flow control. DAFS supports direct variants of key data transfer operations including read, write, setattr and getattr. The direct operations transfer data directly to and from client-provided memory regions using RDMA write or read operations. The client needs to register each memory region with the local kernel before requesting any direct I/O on the region. Thus, the DAFS application programming interface (API) defines primitives to register and unregister memory regions for a direct I/O. The API also supports a fully asynchronous interface, enabling the clients to pipeline I/O operations and overlap with existing application processing.
Read More »
Get Techopedia delivered to your inbox!