What Does Direct Access File System Mean?
Direct Access File System (DAFS) is a standard file-sharing protocol that is a distributed file system built on top of direct access transports. It uses memory-to-memory interconnect architecture and is designed for storage area networks to enforce bulk data transfers between machine application buffers without forming packets of data. Applications using DAFS transfer data to and from application buffers without an operating system (OS), which frees the processor for other processes beyond making files available to servers using different OSs.
Developed in 1996 by Intel, Compaq and Microsoft as a data transportation mechanism for network-attached storage that uses the virtual interface architecture, DAFS is based on network file system version 4 protocols, in addition to protocol features for direct data transfer that use remote direct memory access (RDMA), reliable locking, session recovery, scatter input/output (I/O) and gather list I/O, etc.
Techopedia Explains Direct Access File System
DAFS is designed to facilitate a user-level file system client, in which a DAFS client can 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 while providing fully asynchronous I/O applications with direct caching and data movement control.
DAFS was initially introduced to combine the low overhead of of a storage area network (SAN) 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 read or write operations. The client must register each memory region with the local kernel prior to 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, allowing clients to pipeline I/O operations and overlap with existing application processing.