The curious case of CoW filesystems
CoW is a resource management mechanism that is used in the Linux kernel. This concept is most commonly associated with the fork ()
system call. The fork ()
system call creates a new process by duplicating the calling process. When a new process is created using a fork ()
system call, memory pages are shared between the parent and child processes. As long as the pages are being shared, they cannot be modified. When either the parent or child process attempts to modify a page, the kernel duplicates the page and marks it writable.
Most filesystems in Linux that have existed for a long time use a very conventional approach when it comes to the core design principles. Over the past several years, two major changes in the extended filesystem have been the use of journaling and extents. Although efforts have been made to scale the filesystems for modern use, some major areas such as error detection, snapshots, and deduplication have been left out. These...