porting the hammer file system to linux
play

PORTING THE HAMMER FILE SYSTEM TO LINUX Daniel Lorch June 10, 2009 - PowerPoint PPT Presentation

Porting the HAMMER File System to Linux Daniel Lorch 1/13 PORTING THE HAMMER FILE SYSTEM TO LINUX Daniel Lorch June 10, 2009 Outline 2/13 Motivation 1. A Hammer File System Walkthrough 2. Tool Evaluation 3. Porting Work 4. Demo 5.


  1. Porting the HAMMER File System to Linux — Daniel Lorch 1/13 PORTING THE HAMMER FILE SYSTEM TO LINUX Daniel Lorch June 10, 2009

  2. Outline 2/13 Motivation 1. A Hammer File System Walkthrough 2. Tool Evaluation 3. Porting Work 4. Demo 5. Questions 6. Porting the HAMMER File System to Linux — Daniel Lorch June 10, 2009

  3. 1. Motivation 3/13 Number of DragonFly BSD Users Number of Linux Users „A few“ „Millions“ more users ⇨ more peer reviewers Porting the HAMMER File System to Linux — Daniel Lorch June 10, 2009

  4. 2. Hammer File System Walkthrough (1/3) 4/13  Fine Grained History Retention # echo Hello > test # echo World >> test # hammer history test test 000000010061aac0 clean { 00000001007a1520 23-Mar-2009 20:04:11 00000001007a1580 23-Mar-2009 20:04:43 } # cat test@@0x00000001007a1520 Hello # cat test@@0x00000001007a1580 Hello World Porting the HAMMER File System to Linux — Daniel Lorch June 10, 2009

  5. 2. Hammer File System Walkthrough (2/3) 5/13  File System Snapshots  Same mechanism as for files: Append transaction id to directory name  „hammer snapshot“ command conveniently creates these softlinks # hammer snapshot /mnt /mnt/snap /mnt/snap # ls -l snap lrwxr-xr-x 1 root wheel 25 Mar 23 20:07 snap -> /mnt/ @@0x00000001007a15c0 # ls snap/ test Porting the HAMMER File System to Linux — Daniel Lorch June 10, 2009

  6. 2. Hammer File System Walkthrough (3/3) 6/13  Master-Slave Replication  Single Master, Multiple Slaves  Pairing via unique „uuid“  Replication initiated manually with „hammer mirror- copy“ command; peers can be remote (via SSH)  Incremental mirroring: since transaction ids are strictly incremental, only need to negotiate on range to transmit Porting the HAMMER File System to Linux — Daniel Lorch June 10, 2009

  7. 3. Tool Evaluation (1/2) 7/13  „So, you want to write a kernel module. You know C, you've written a few normal programs to run as processes, and now you want to get to where the real action is, to where a single wild pointer can wipe out your file system and a core dump means a reboot.” – Peter Jay Salzman, The Linux Kernel Module Programming Guide ⇨ decided to use a virtualization software Porting the HAMMER File System to Linux — Daniel Lorch June 10, 2009

  8. 3. Tool Evaluation (2/2) 8/13  Tried VMWare with „guest debug monitor feature“, but couldn‘t load debug symbols on my Mac  Tried User-Mode-Linux ⇨ Good!  It’s even part of the standard Linux kernel ./vmlinux ubda=../Slackware-12.2-root_fs ubdb=../hammerdisk.raw  Tried DragonFly‘s vKernels ⇨ Good!  It’s even part of standard DragonFly BSD ./kernel -m 64m -r ../rootimg.01 -r /home/ hammerdisk.raw –n1 Porting the HAMMER File System to Linux — Daniel Lorch June 10, 2009

  9. 4. Porting Work (1/3) 9/13  „Cowboy-style“ programming: Add a source file 1. Fix errors 2. Goto 1 3.  Looked at this screen for weeks: $ make ARCH=um 2>&1 | grep 'error: ' | sed -e 's/.*error: //g' | sort | uniq 'EFTYPE' undeclared (first use in this function) 'FREAD' undeclared (first use in this function) 'FSCRED' undeclared (first use in this function) 'FWRITE' undeclared (first use in this function) 'LK_EXCLUSIVE' undeclared (first use in this function) ... Porting the HAMMER File System to Linux — Daniel Lorch June 10, 2009

  10. 4. Porting Work (2/3) 10/13  Idea: Wrapper Files  For compiler errors, add missing definition to dfly_wrap.h, then used it like this: #include "dfly_wrap.h" #include "dfly/vfs/hammer/hammer_prune.c"  For linker errors, add stub function to dfly_wrap.c causing kernel panic: int nlookup(struct nlookupdata *nd) { panic("nlookup"); }  Result:  14 out of 18 source files re-used without modification Porting the HAMMER File System to Linux — Daniel Lorch June 10, 2009

  11. 4. Porting Work (3/3) 11/13  Finally, executed kernel and fixed kernel panics, one after the other  Some stubs are still there..  ..don‘t run file system on a live system (yet) Porting the HAMMER File System to Linux — Daniel Lorch June 10, 2009

  12. 12/13 Demo Porting the HAMMER File System to Linux — Daniel Lorch June 10, 2009

  13. 13/13 Questions? Porting the HAMMER File System to Linux — Daniel Lorch June 10, 2009

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend