SlideShare a Scribd company logo
'FUSE'ing Python for rapid development of
storage efficient file-system
PyCon APAC ‘12
Singapore, Jun 07-09, 2012
Chetan Giridhar, Vishal Kanaujia
File Systems
• Provides way to organize, store, retrieve and manage
information
• Abstraction layer
• File system:
– Maps name to an object
– Objects to file contents
• File system types (format):
– Media based file systems (FAT, ext2)
– Network file systems (NFS)
– Special-purpose file systems (procfs)
• Services
– open(), read(), write(), close()…
User space
Kernel space
User
File System
Hardware
Virtual File-system
• To support multiple FS in *NIX
• VFS is an abstract layer in kernel
• Decouples file system implementation from the
interface (POSIX API)
– Common API serving different file system types
• Handles user calls related to file systems.
– Implements generic FS actions
– Directs request to specific code to handle the request
• Associate (and disassociate) devices with instances of
the appropriate file system.
File System: VFS
ext2 NFS procfs
User
VFS
glibc.so
Kernel space
Block layer/ Device
drivers/Hardware
System call
interface
glibc.so: open(), read()
Myapp.py: open(), read()
System call: sys_open(),
sys_read()
VFS: vfs_open(),
vfs_read()
Developing FS in *NIX
• In-kernel file-systems (traditionally)
• It is a complex task
• Understanding kernel libraries and modules
• Development experience in kernel space
• Managing disk i/o
• Time consuming and tedious development
– Frequent kernel panic
– Higher testing efforts
• Kernel bloating and side effects like security
Solution: User space
• In user space:
– Shorter development cycle
– Easy to update fixes, test and distribute
– More flexibility
• Programming tools, debuggers, and libraries as you
have if you were developing standard *NIX applications
• User-space file-systems
– File systems become regular applications (as
opposed to kernel extensions)
FUSE (Filesystem in USErspace)
• Implement a file system in user-space
– no kernel code required!
• Secure, non-privileged mounts
• User operates on a mounted instance of FS:
- Unix utilities
- POSIX libraries
• Useful to develop “virtual” file-systems
– Allows you to imagine “anything” as a file ☺
– local disk, across the network, from memory, or any other
combination
FUSE: Diving deeper
Myfile.py:
open()
glibc.so
VFS: vfs_open() fuse.ko /dev/fuse
libfuse.so
CustomFS: open()
FUSE | develop
• Choices of development in C, C++, Java, … and of course
Python!
• Python interface for FUSE
– (FusePython: most popularly used)
• Open source project
– http://fuse.sourceforge.net/
• For ubuntu systems:
$sudo apt-get instatall python-fuse
$mkdir ./mount_point
$python myfuse.py ./mount_point
$fusermount -u ./mount_point
FUSE API Overview
• File management
– open(path)
– create(path, mode)
– read(path, length, offset)
– write(path, data, offset)
• Directory and file system management
– unlink(path)
– readdir(path)
• Metadata operations
– getattr(path)
– chmod(path, mode)
– chown(path, uid, gid)
seFS – storage efficient FS
• A prototype, experimental file system with:
– Online data de-duplication (SHA1)
– Compression (text based)
• SQLite
• Ubuntu 11.04, Python-Fuse Bindings
• Provides following services:
open() write() chmod()
create() readdir() chown()
read() unlink()
seFS Architecture
Your
application
<<FUSE code>>
myfuse.py
File
System
Operations
seFS DB
storage
Efficiency =
De-duplication
+
Compression<<pylibrary>>
SQLiteHandler.py
Compression.py
Crypto.py
<<SQLite DB
Interface>>
seFS.py
seFS: Database
seFS
Schema
CREATE TABLE data(
"id" INTEGER
PRIMARY KEY
AUTOINCREMENT,
"sha" TEXT,
"data" BLOB,
"length" INTEGER,
"compressed" BLOB);
CREATE TABLE metadata(
"id" INTEGER,
"abspath" TEXT,
"length" INTEGER,
"mtime" TEXT,
"ctime" TEXT,
"atime" TEXT,
"inode" INTEGER);
data table
metadata table
seFS API flow
$touch abc
getattr()
create()
open()
release()
$rm abc $cat >> abc
getattr()
access()
getattr()
open()
flush()
release()
unlink()
create()
seFS DB
User
Operations
seFS APIs
storage
Efficiency
write()
seFS: Code
#!/usr/bin/python
import fuse
import stat
import time
from seFS import seFS
fuse.fuse_python_api = (0, 2)
class MyFS(fuse.Fuse):
def __init__(self, *args, **kw):
fuse.Fuse.__init__(self, *args, *kw)
# Set some options required by the
# Python FUSE binding.
self.flags = 0
self.multithreaded = 0
self.fd = 0
self.sefs = seFS()
ret = self.sefs.open('/')
self.sefs.write('/', "Root of the seFS")
t = int(time.time())
mytime = (t, t, t)
ret = self.sefs.utime('/', mytime)
self.sefs.setinode('/', 1)
seFS: Code (1)
def getattr(self, path):
sefs = seFS()
stat = fuse.stat()
context = fuse.FuseGetContext()
#Root
if path == '/':
stat.stat_nlink = 2
stat.stat_mode = stat.S_IFDIR | 0755
else:
stat.stat_mode = stat.S_IFREG | 0777
stat.stat_nlink = 1
stat.stat_uid, stat.stat_gid =
(context ['uid'], context
['gid'])
# Search for this path in DB
ret = sefs.search(path)
# If file exists in DB, get its times
if ret is True:
tup = sefs.getutime(path)
stat.stat_mtime =
int(tup[0].strip().split('.')[0])
stat.stat_ctime =
int(tup[1].strip().split('.')[0])
stat.stat_atime =
int(tup[2].strip().split('.')[0])
stat.stat_ino =
int(sefs.getinode(path))
# Get the file size from DB
if sefs.getlength(path) is not None:
stat.stat_size =
int(sefs.getlength(path))
else:
stat.stat_size = 0
return stat
else:
return - errno.ENOENT
seFS: Code (2)
def create(self, path,flags=None,mode=None):
sefs = seFS()
ret = self.open(path, flags)
if ret == -errno.ENOENT:
#Create the file in database
ret = sefs.open(path)
t = int(time.time())
mytime = (t, t, t)
ret = sefs.utime(path, mytime)
self.fd = len(sefs.ls())
sefs.setinode(path, self.fd)
return 0
def write(self, path, data, offset):
length = len(data)
sefs = seFS()
ret = sefs.write(path, data)
return length
seFS: Learning
• Design your file system and define the
objectives first, before development
– skip implementing functionality your file system
doesn’t intend to support
• Database schema is crucial
• Knowledge on FUSE API is essential
– FUSE APIs are look-alike to standard POSIX APIs
– Limited documentation of FUSE API
• Performance?
Conclusion
• Development of FS is very easy with FUSE
• Python aids RAD with Python-Fuse bindings
• seFS: Thought provoking implementation
• Creative applications – your needs and
objectives
• When are you developing your own File
system?! ☺
Further Read
• Sample Fuse based File systems
– Sshfs
– YoutubeFS
– Dedupfs
– GlusterFS
• Python-Fuse bindings
– http://fuse.sourceforge.net/
• Linux internal manual
Contact Us
• Chetan Giridhar
– http://technobeans.com
– cjgiridhar@gmail.com
• Vishal Kanaujia
– http://freethreads.wordpress.com
– vishalkanaujia@gmail.com
Backup
Agenda
• The motivation
• Intro to *NIX File Systems
• Trade off: code in user and kernel space
• FUSE?
• Hold on – What’s VFS?
• Diving into FUSE internals
• Design and develop your own File System with
Python-FUSE bindings
• Lessons learnt
• Python-FUSE: Creative applications/ Use-cases
User-space and Kernel space
• Kernel-space
– Kernel code including device drivers
– Kernel resources (hardware)
– Privileged user
• User-space
– User application runs
– Libraries dealing with kernel space
– System resources
Virtual File-system
• To support multiple FS in *NIX
• VFS is an abstract layer in kernel
• Decouples file system implementation from the
interface (POSIX API)
– Common API serving different file system types
• Handles user calls related to file systems.
– Implements generic FS actions
– Directs request to specific code to handle the request
• Associate (and disassociate) devices with instances of
the appropriate file system.
FUSE: Internals
• Three major components:
– Userspace library (libfuse.*)
– Kernel module (fuse.ko)
– Mount utility (fusermount)
• Kernel module hooks in to VFS
– Provides a special device “/dev/fuse”
• Can be accessed by a user-space process
• Interface: user-space application and fuse kernel
module
• Read/ writes occur on a file descriptor of /dev/fuse
FUSE Workflow
User space
Kernel space
User (file I/O)
FUSE: kernel lib
Custatom File Systatem
Virtual File Systatem
User-space FUSE lib
Facts and figures
• seFS – online storage efficiency
• De-duplication/ compression
– Managed catalogue information (file meta-data rarely changes)
– Compression encoded information
• Quick and easy prototyping (Proof of concept)
• Large dataset generation
– Data generated on demand
Creative applications: FUSE based File
systems
• SSHFS: Provides access to a remote file-system
through SSH
• WikipediaFS: View and edit Wikipedia articles as
if they were real files
• GlusterFS: Clustered Distributed Filesystem
having capability to scale up to several petabytes.
• HDFS: FUSE bindings exist for the open
source Hadoop distributed file system
• seFS: You know it already ☺

More Related Content

PPTX
Fuse- Filesystem in User space
PDF
Python Fuse
PDF
PythonFuse (PyCon4)
PDF
Course 102: Lecture 14: Users and Permissions
PDF
Writing flexible filesystems in FUSE-Python
PPT
Linux filesystemhierarchy
PDF
An Introduction to User Space Filesystem Development
PPT
Unix File System
Fuse- Filesystem in User space
Python Fuse
PythonFuse (PyCon4)
Course 102: Lecture 14: Users and Permissions
Writing flexible filesystems in FUSE-Python
Linux filesystemhierarchy
An Introduction to User Space Filesystem Development
Unix File System

What's hot (20)

PPTX
11 linux filesystem copy
PDF
FUSE Developing Fillesystems in userspace
PDF
Course 102: Lecture 16: Process Management (Part 2)
PDF
FUSE (Filesystem in Userspace) on OpenSolaris
PPT
Unix file systems 2 in unix internal systems
PDF
The sysfs Filesystem
PDF
Course 102: Lecture 28: Virtual FileSystems
ODP
why we need ext4
PPT
Chapter 10 - File System Interface
PDF
Python & FUSE
PPT
PDF
Course 101: Lecture 2: Introduction to Operating Systems
PPTX
Linux for Security Professionals (Tips and Tricks) - Init 6 10/2012
PDF
Course 102: Lecture 26: FileSystems in Linux (Part 1)
PDF
(120513) #fitalk an introduction to linux memory forensics
PPTX
Memory forensics
PDF
AOS Lab 7: Page tables
PDF
005 skyeye
PDF
AOS Lab 12: Network Communication
ODP
4. linux file systems
11 linux filesystem copy
FUSE Developing Fillesystems in userspace
Course 102: Lecture 16: Process Management (Part 2)
FUSE (Filesystem in Userspace) on OpenSolaris
Unix file systems 2 in unix internal systems
The sysfs Filesystem
Course 102: Lecture 28: Virtual FileSystems
why we need ext4
Chapter 10 - File System Interface
Python & FUSE
Course 101: Lecture 2: Introduction to Operating Systems
Linux for Security Professionals (Tips and Tricks) - Init 6 10/2012
Course 102: Lecture 26: FileSystems in Linux (Part 1)
(120513) #fitalk an introduction to linux memory forensics
Memory forensics
AOS Lab 7: Page tables
005 skyeye
AOS Lab 12: Network Communication
4. linux file systems
Ad

Similar to Fuse'ing python for rapid development of storage efficient (20)

PDF
Fuse'ing python for rapid development of storage efficient FS
PDF
Part 03 File System Implementation in Linux
PDF
Javase7 1641812
PPTX
UNIT III.pptx
PDF
Writing file system in CPython
PPT
Chapter 8 distributed file systems
PDF
The Linux Kernel Implementation of Pipes and FIFOs
ODP
Introduction to file system and OCFS2
PPT
Building File Systems with FUSE
PDF
Development of the irods rados plugin @ iRODS User group meeting 2014
PPT
operating system File - System Interface
PPT
Xfs file system for linux
PDF
Ch10 file system interface
PDF
Systems Programming - File IO
PDF
009709863.pdf
PDF
Details on Root Filesystem in Embedded Linux
PPTX
5.distributed file systems
PDF
All'ombra del Leviatano: Filesystem in Userspace
PDF
Poking The Filesystem For Fun And Profit
Fuse'ing python for rapid development of storage efficient FS
Part 03 File System Implementation in Linux
Javase7 1641812
UNIT III.pptx
Writing file system in CPython
Chapter 8 distributed file systems
The Linux Kernel Implementation of Pipes and FIFOs
Introduction to file system and OCFS2
Building File Systems with FUSE
Development of the irods rados plugin @ iRODS User group meeting 2014
operating system File - System Interface
Xfs file system for linux
Ch10 file system interface
Systems Programming - File IO
009709863.pdf
Details on Root Filesystem in Embedded Linux
5.distributed file systems
All'ombra del Leviatano: Filesystem in Userspace
Poking The Filesystem For Fun And Profit
Ad

Recently uploaded (20)

PDF
R24 SURVEYING LAB MANUAL for civil enggi
PPTX
OOP with Java - Java Introduction (Basics)
PPTX
UNIT 4 Total Quality Management .pptx
PPTX
Geodesy 1.pptx...............................................
PPTX
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
PDF
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
PDF
Well-logging-methods_new................
PDF
Model Code of Practice - Construction Work - 21102022 .pdf
PDF
July 2025 - Top 10 Read Articles in International Journal of Software Enginee...
PPTX
bas. eng. economics group 4 presentation 1.pptx
PPTX
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
PPTX
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
PDF
Operating System & Kernel Study Guide-1 - converted.pdf
PPT
CRASH COURSE IN ALTERNATIVE PLUMBING CLASS
PPTX
IOT PPTs Week 10 Lecture Material.pptx of NPTEL Smart Cities contd
PPTX
Lecture Notes Electrical Wiring System Components
PDF
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
DOCX
573137875-Attendance-Management-System-original
PPTX
Sustainable Sites - Green Building Construction
PDF
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
R24 SURVEYING LAB MANUAL for civil enggi
OOP with Java - Java Introduction (Basics)
UNIT 4 Total Quality Management .pptx
Geodesy 1.pptx...............................................
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
Well-logging-methods_new................
Model Code of Practice - Construction Work - 21102022 .pdf
July 2025 - Top 10 Read Articles in International Journal of Software Enginee...
bas. eng. economics group 4 presentation 1.pptx
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
Operating System & Kernel Study Guide-1 - converted.pdf
CRASH COURSE IN ALTERNATIVE PLUMBING CLASS
IOT PPTs Week 10 Lecture Material.pptx of NPTEL Smart Cities contd
Lecture Notes Electrical Wiring System Components
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
573137875-Attendance-Management-System-original
Sustainable Sites - Green Building Construction
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT

Fuse'ing python for rapid development of storage efficient

  • 1. 'FUSE'ing Python for rapid development of storage efficient file-system PyCon APAC ‘12 Singapore, Jun 07-09, 2012 Chetan Giridhar, Vishal Kanaujia
  • 2. File Systems • Provides way to organize, store, retrieve and manage information • Abstraction layer • File system: – Maps name to an object – Objects to file contents • File system types (format): – Media based file systems (FAT, ext2) – Network file systems (NFS) – Special-purpose file systems (procfs) • Services – open(), read(), write(), close()… User space Kernel space User File System Hardware
  • 3. Virtual File-system • To support multiple FS in *NIX • VFS is an abstract layer in kernel • Decouples file system implementation from the interface (POSIX API) – Common API serving different file system types • Handles user calls related to file systems. – Implements generic FS actions – Directs request to specific code to handle the request • Associate (and disassociate) devices with instances of the appropriate file system.
  • 4. File System: VFS ext2 NFS procfs User VFS glibc.so Kernel space Block layer/ Device drivers/Hardware System call interface glibc.so: open(), read() Myapp.py: open(), read() System call: sys_open(), sys_read() VFS: vfs_open(), vfs_read()
  • 5. Developing FS in *NIX • In-kernel file-systems (traditionally) • It is a complex task • Understanding kernel libraries and modules • Development experience in kernel space • Managing disk i/o • Time consuming and tedious development – Frequent kernel panic – Higher testing efforts • Kernel bloating and side effects like security
  • 6. Solution: User space • In user space: – Shorter development cycle – Easy to update fixes, test and distribute – More flexibility • Programming tools, debuggers, and libraries as you have if you were developing standard *NIX applications • User-space file-systems – File systems become regular applications (as opposed to kernel extensions)
  • 7. FUSE (Filesystem in USErspace) • Implement a file system in user-space – no kernel code required! • Secure, non-privileged mounts • User operates on a mounted instance of FS: - Unix utilities - POSIX libraries • Useful to develop “virtual” file-systems – Allows you to imagine “anything” as a file ☺ – local disk, across the network, from memory, or any other combination
  • 8. FUSE: Diving deeper Myfile.py: open() glibc.so VFS: vfs_open() fuse.ko /dev/fuse libfuse.so CustomFS: open()
  • 9. FUSE | develop • Choices of development in C, C++, Java, … and of course Python! • Python interface for FUSE – (FusePython: most popularly used) • Open source project – http://fuse.sourceforge.net/ • For ubuntu systems: $sudo apt-get instatall python-fuse $mkdir ./mount_point $python myfuse.py ./mount_point $fusermount -u ./mount_point
  • 10. FUSE API Overview • File management – open(path) – create(path, mode) – read(path, length, offset) – write(path, data, offset) • Directory and file system management – unlink(path) – readdir(path) • Metadata operations – getattr(path) – chmod(path, mode) – chown(path, uid, gid)
  • 11. seFS – storage efficient FS • A prototype, experimental file system with: – Online data de-duplication (SHA1) – Compression (text based) • SQLite • Ubuntu 11.04, Python-Fuse Bindings • Provides following services: open() write() chmod() create() readdir() chown() read() unlink()
  • 12. seFS Architecture Your application <<FUSE code>> myfuse.py File System Operations seFS DB storage Efficiency = De-duplication + Compression<<pylibrary>> SQLiteHandler.py Compression.py Crypto.py <<SQLite DB Interface>> seFS.py
  • 13. seFS: Database seFS Schema CREATE TABLE data( "id" INTEGER PRIMARY KEY AUTOINCREMENT, "sha" TEXT, "data" BLOB, "length" INTEGER, "compressed" BLOB); CREATE TABLE metadata( "id" INTEGER, "abspath" TEXT, "length" INTEGER, "mtime" TEXT, "ctime" TEXT, "atime" TEXT, "inode" INTEGER); data table metadata table
  • 14. seFS API flow $touch abc getattr() create() open() release() $rm abc $cat >> abc getattr() access() getattr() open() flush() release() unlink() create() seFS DB User Operations seFS APIs storage Efficiency write()
  • 15. seFS: Code #!/usr/bin/python import fuse import stat import time from seFS import seFS fuse.fuse_python_api = (0, 2) class MyFS(fuse.Fuse): def __init__(self, *args, **kw): fuse.Fuse.__init__(self, *args, *kw) # Set some options required by the # Python FUSE binding. self.flags = 0 self.multithreaded = 0 self.fd = 0 self.sefs = seFS() ret = self.sefs.open('/') self.sefs.write('/', "Root of the seFS") t = int(time.time()) mytime = (t, t, t) ret = self.sefs.utime('/', mytime) self.sefs.setinode('/', 1)
  • 16. seFS: Code (1) def getattr(self, path): sefs = seFS() stat = fuse.stat() context = fuse.FuseGetContext() #Root if path == '/': stat.stat_nlink = 2 stat.stat_mode = stat.S_IFDIR | 0755 else: stat.stat_mode = stat.S_IFREG | 0777 stat.stat_nlink = 1 stat.stat_uid, stat.stat_gid = (context ['uid'], context ['gid']) # Search for this path in DB ret = sefs.search(path) # If file exists in DB, get its times if ret is True: tup = sefs.getutime(path) stat.stat_mtime = int(tup[0].strip().split('.')[0]) stat.stat_ctime = int(tup[1].strip().split('.')[0]) stat.stat_atime = int(tup[2].strip().split('.')[0]) stat.stat_ino = int(sefs.getinode(path)) # Get the file size from DB if sefs.getlength(path) is not None: stat.stat_size = int(sefs.getlength(path)) else: stat.stat_size = 0 return stat else: return - errno.ENOENT
  • 17. seFS: Code (2) def create(self, path,flags=None,mode=None): sefs = seFS() ret = self.open(path, flags) if ret == -errno.ENOENT: #Create the file in database ret = sefs.open(path) t = int(time.time()) mytime = (t, t, t) ret = sefs.utime(path, mytime) self.fd = len(sefs.ls()) sefs.setinode(path, self.fd) return 0 def write(self, path, data, offset): length = len(data) sefs = seFS() ret = sefs.write(path, data) return length
  • 18. seFS: Learning • Design your file system and define the objectives first, before development – skip implementing functionality your file system doesn’t intend to support • Database schema is crucial • Knowledge on FUSE API is essential – FUSE APIs are look-alike to standard POSIX APIs – Limited documentation of FUSE API • Performance?
  • 19. Conclusion • Development of FS is very easy with FUSE • Python aids RAD with Python-Fuse bindings • seFS: Thought provoking implementation • Creative applications – your needs and objectives • When are you developing your own File system?! ☺
  • 20. Further Read • Sample Fuse based File systems – Sshfs – YoutubeFS – Dedupfs – GlusterFS • Python-Fuse bindings – http://fuse.sourceforge.net/ • Linux internal manual
  • 21. Contact Us • Chetan Giridhar – http://technobeans.com – cjgiridhar@gmail.com • Vishal Kanaujia – http://freethreads.wordpress.com – vishalkanaujia@gmail.com
  • 23. Agenda • The motivation • Intro to *NIX File Systems • Trade off: code in user and kernel space • FUSE? • Hold on – What’s VFS? • Diving into FUSE internals • Design and develop your own File System with Python-FUSE bindings • Lessons learnt • Python-FUSE: Creative applications/ Use-cases
  • 24. User-space and Kernel space • Kernel-space – Kernel code including device drivers – Kernel resources (hardware) – Privileged user • User-space – User application runs – Libraries dealing with kernel space – System resources
  • 25. Virtual File-system • To support multiple FS in *NIX • VFS is an abstract layer in kernel • Decouples file system implementation from the interface (POSIX API) – Common API serving different file system types • Handles user calls related to file systems. – Implements generic FS actions – Directs request to specific code to handle the request • Associate (and disassociate) devices with instances of the appropriate file system.
  • 26. FUSE: Internals • Three major components: – Userspace library (libfuse.*) – Kernel module (fuse.ko) – Mount utility (fusermount) • Kernel module hooks in to VFS – Provides a special device “/dev/fuse” • Can be accessed by a user-space process • Interface: user-space application and fuse kernel module • Read/ writes occur on a file descriptor of /dev/fuse
  • 27. FUSE Workflow User space Kernel space User (file I/O) FUSE: kernel lib Custatom File Systatem Virtual File Systatem User-space FUSE lib
  • 28. Facts and figures • seFS – online storage efficiency • De-duplication/ compression – Managed catalogue information (file meta-data rarely changes) – Compression encoded information • Quick and easy prototyping (Proof of concept) • Large dataset generation – Data generated on demand
  • 29. Creative applications: FUSE based File systems • SSHFS: Provides access to a remote file-system through SSH • WikipediaFS: View and edit Wikipedia articles as if they were real files • GlusterFS: Clustered Distributed Filesystem having capability to scale up to several petabytes. • HDFS: FUSE bindings exist for the open source Hadoop distributed file system • seFS: You know it already ☺