{"id":38214,"date":"2014-06-19T14:16:23","date_gmt":"2014-06-19T12:16:23","guid":{"rendered":"https:\/\/www.mugaict.com\/synetosviluppo\/dive-filesystems-zfs-part-1\/"},"modified":"2014-06-19T14:16:23","modified_gmt":"2014-06-19T12:16:23","slug":"dive-filesystems-zfs-part-1","status":"publish","type":"post","link":"https:\/\/syneto.eu\/dive-filesystems-zfs-part-1\/","title":{"rendered":"A dive into filesystems \u2013 ZFS \u2013 part 1"},"content":{"rendered":"

I’m starting a series of posts about ZFS. I will try to provide as much as possible architectural diagrams and code examples. The series is for people wanting to learn more about general filesystem architecture, especially about ZFS (OpenZFS).<\/span><\/p>\n

I will restrict myself for now to the implementation and architecture on Illumos,<\/a> the open source fork of OpenSolaris.<\/span><\/p>\n

Let’s start with the higher level abstraction, the Virtual File System. Like the most of the Unix systems Illumos uses a framework called Virtual File System (VFS) which represent an abstraction layer under which multiple concrete filesystems can be implemented. One of the first versions of VFS was introduced in SunOS 2.0 with the introduction of NFS (Network file system). It’s good to know that the implementation on Illumos was actually the first one ever made regarding virtual file systems. The SunOS implementation was the one used in the first commercial version of a Unix operating system Unix System V Release 4<\/a>.<\/span><\/p>\n

VFS allows almost any objects to be abstracted as files and filesystems. I will mention a few of the file system categories that are in use today:<\/p>\n