O VFS7 é uma camada abstrata existente em diversos núcleos Unix que pretende fornecer uma interface bem definida para implementação de sistemas de arquivos. A interface do VFS é estruturada em cima de tipos de objetos genéricos, e uma série de métodos que são chamados a partir desses objetos.
Dessa maneira é mais fácil implementar um sistema de arquivos para esses Unices, bastando fornecer uma implementação para os métodos dos objetos do VFS para a criação de um sistema de arquivos novo. Os objetos básicos conhecidos pelo VFS são: arquivos, sistemas de arquivos, inodes, e nomes de inodes. Cada um desses objetos possuem um conjunto de métodos especificados nas estruturas super_operations (para o sistema de arquivos), file_operations (para arquivos), inode_operations para inodes, e dentry_operations para nomes dos arquivos.
A seguir são apresentados os métodos necessários para implementar um sistema de arquivos usando o VFS do Linux. Note que nem todos esses métodos precisam ser implementados necessariamente, o Linux fornece alguns métodos genéricos para uso geral. As estruturas foram retirados da versão 2.4.19-pre2 do núcleo do Linux, mas não devem apresentar muitas diferenças entre versões. Os argumentos dos métodos foram removidos para deixá-los mais simples e claros. Esses métodos são extremamente importantes para podermos definir objetos e interfaces CORBA consistentes com as necessidades do VFS.
struct super_operations { void (*read_inode) (); void (*dirty_inode) (); void (*write_inode) (); void (*put_inode) (); void (*delete_inode) (); void (*put_super) (); void (*write_super) (); void (*write_super_lockfs) (); void (*unlockfs) (); int (*statfs) (); int (*remount_fs) (); void (*clear_inode) (); void (*umount_begin) (); }; struct file_operations { struct module *owner; loff_t (*llseek) (); ssize_t (*read) (); ssize_t (*write) (); int (*readdir) (); unsigned int (*poll) (); int (*ioctl) (); int (*mmap) (); int (*open) (); int (*flush) (); int (*release) (); int (*fsync) (); int (*fasync) (); int (*lock) (); ssize_t (*readv) (); ssize_t (*writev) (); ssize_t (*sendpage) (); }; struct inode_operations { int (*create) (); struct dentry * (*lookup) (); int (*link) (); int (*unlink) (); int (*symlink) (); int (*mkdir) (); int (*rmdir) (); int (*mknod) (); int (*rename) (); int (*readlink) (); int (*follow_link) (); void (*truncate) (); int (*permission) (); int (*revalidate) (); int (*setattr) (); int (*getattr) (); }; struct dentry_operations { int (*d_revalidate) (); int (*d_hash) (); int (*d_compare) (); int (*d_delete) (); void (*d_release) (); void (*d_iput) (); };