A method, comprising: step A) receiving a first key-value system command at a key-value file system shim, wherein the first key-value system command includes an object name identifying an object and wherein the first key-value system command is a command issued by an application to access a storage device; step B) mapping by the key-value file system shim the first key-value system command to a file system command, the file system command including a file name identifying a file; step C) sending by the key-value file system shim the file system command to a file system; step D) attempting to use a page cache of an operating system, the page cache being included in the file system to satisfy the file system command; step E) if the page cache cannot satisfy the file system command, step E1) receiving the file system command at a key-value file system from the file system; step E2) checking by the key-value file system if an inode for the file that stores desired metadata for the file exists; step E3) if no inode for the file that stores the desired metadata of the file exists, requesting by the key-value file system a metadata object for the file from the storage device; receiving the metadata object for the file at the key-value file system from the storage device; storing by the key-value file system the metadata from the metadata object in the inode for the file; step E4) accessing by the key-value file system the object name from the metadata object or from the inode; step E5) mapping by the key-value file system the file system command to a second key-value system command including the object name identifying the object; step E6) attempting by the key-value file system to satisfy the second key-value system command using a key-value file system cache; searching by the key-value file system the key-value file system cache to see if the key-value file system cache stores the object; step E7) if the object is not found in the key-value file system cache, sending by the key-value file system the second key-value system command to the storage device to retrieve the object; receiving the object from the storage device; storing by the key-value file system a copy of the object in the key-value file system cache; returning the object to the page cache of the operating system; and propagating the object to the application. step A) receiving a first key-value system command at a key-value file system shim, wherein the first key-value system command includes an object name identifying an object and wherein the first key-value system command is a command issued by an application to access a storage device; step B) mapping by the key-value file system shim the first key-value system command to a file system command, the file system command including a file name identifying a file; step C) sending by the key-value file system shim the file system command to a file system; step D) attempting to use a page cache of an operating system, the page cache being included in the file system to satisfy the file system command; step E) if the page cache cannot satisfy the file system command, step E1) receiving the file system command at a key-value file system from the file system; step E2) checking by the key-value file system if an inode for the file that stores desired metadata for the file exists; step E3) if no inode for the file that stores the desired metadata of the file exists, requesting by the key-value file system a metadata object for the file from the storage device; receiving the metadata object for the file at the key-value file system from the storage device; storing by the key-value file system the metadata from the metadata object in the inode for the file; step E4) accessing by the key-value file system the object name from the metadata object or from the inode; step E5) mapping by the key-value file system the file system command to a second key-value system command including the object name identifying the object; step E6) attempting by the key-value file system to satisfy the second key-value system command using a key-value file system cache; searching by the key-value file system the key-value file system cache to see if the key-value file system cache stores the object; step E7) if the object is not found in the key-value file system cache, sending by the key-value file system the second key-value system command to the storage device to retrieve the object; receiving the object from the storage device; storing by the key-value file system a copy of the object in the key-value file system cache; returning the object to the page cache of the operating system; and propagating the object to the application.