{"id":89,"date":"2003-04-23T20:43:20","date_gmt":"2003-04-24T01:43:20","guid":{"rendered":"http:\/\/www.flamingspork.com\/blog\/?p=89"},"modified":"2003-04-23T20:43:20","modified_gmt":"2003-04-24T01:43:20","slug":"xfs-and-other-cool-things","status":"publish","type":"post","link":"https:\/\/www.flamingspork.com\/blog\/2003\/04\/23\/xfs-and-other-cool-things\/","title":{"rendered":"XFS and other cool things"},"content":{"rendered":"<p>Been re-reading a lot of the XFS papers that are on the SGI website (<a href=\"http:\/\/oss.sgi.com\/projects\/xfs\/\">http:\/\/oss.sgi.com\/projects\/xfs\/<\/a>) and thinking more about what I want out of an object store. There are a lot of similar design goals (I think) yet some very different ways of implementing things.<\/p>\n<p>Having a large B+Tree full of every object could be quite nice, kinda like inodes on conventional UNIX filesystems. On the object-store layer, we&#8217;d be able to store small objects inside the inodes. Above this, the namespace layer could find out if we can pack something into an inode, and if so, optimize for that (e.g. linear list of files for directories under 1k).<\/p>\n<p>The idea of having a very layered system is increasingly appealing to me.<br \/>\nThis means we could have some very nice optimizations for some applications. Some systems would only ever care about the object-store itself (a squid like caching system for example) and others could care a lot about a namespace system (or even be one). An example of the latter could be a database.<\/p>\n<p>Expandability for the future is a given, it has to be. 64bits seems like a lot now, but no doubt somebody will be pushing it in 10 years or so.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Been re-reading a lot of the XFS papers that are on the SGI website (http:\/\/oss.sgi.com\/projects\/xfs\/) and thinking more about what I want out of an object store. There are a lot of similar design goals (I think) yet some very &hellip; <a href=\"https:\/\/www.flamingspork.com\/blog\/2003\/04\/23\/xfs-and-other-cool-things\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[4],"tags":[],"class_list":["post-89","post","type-post","status-publish","format-standard","hentry","category-hons-project"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5a6n8-1r","jetpack-related-posts":[{"id":785,"url":"https:\/\/www.flamingspork.com\/blog\/2007\/01\/29\/larger-inodes-make-for-some-happy-apps\/","url_meta":{"origin":89,"position":0},"title":"Larger inodes make for (some) happy apps","author":"Stewart Smith","date":"2007-01-29","format":false,"excerpt":"Mikal talks about Ted talking about Tridge talking about how larger inodes can improve samba4 performance. Well, not just Samba4. Beagle and SELinux are also common heaver users of extended attributes which can often be stored inside the inode (e.g. on XFS). There used to be the case where the\u2026","rel":"","context":"In &quot;linux-kernel&quot;","block_context":{"text":"linux-kernel","link":"https:\/\/www.flamingspork.com\/blog\/category\/linux-kernel\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":861,"url":"https:\/\/www.flamingspork.com\/blog\/2007\/07\/12\/reading-maildirs-fast\/","url_meta":{"origin":89,"position":1},"title":"reading maildirs&#8230;. fast&#8230;","author":"Stewart Smith","date":"2007-07-12","format":false,"excerpt":"So, for a side project i'm hacking on, i'm wanting to read in Maildirs really fast (and then pump them into something else... for current purposes I'm just putting everything in one file.. getting the read speed up is of current importance). I've done a bit of experimenting and my\u2026","rel":"","context":"In &quot;General&quot;","block_context":{"text":"General","link":"https:\/\/www.flamingspork.com\/blog\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":334,"url":"https:\/\/www.flamingspork.com\/blog\/2005\/01\/06\/effective-bk-usage\/","url_meta":{"origin":89,"position":2},"title":"effective bk usage","author":"Stewart Smith","date":"2005-01-06","format":false,"excerpt":"(inspired by jimw talking about it on Planet MySQL) I take a bit of a different approach... I've got directories for 4.0, 4.1 and 5.0, and within them, i have clones of the main ndb tree (called ndb, so there's a path like \"MySQL\/5.0\/ndb\"). I don't ever edit in this\u2026","rel":"","context":"In &quot;mysql&quot;","block_context":{"text":"mysql","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/mysql\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":705,"url":"https:\/\/www.flamingspork.com\/blog\/2006\/05\/31\/ha_file\/","url_meta":{"origin":89,"position":3},"title":"ha_file","author":"Stewart Smith","date":"2006-05-31","format":false,"excerpt":"In what I laughingly call \"spare time\" I started hacking on ha_file.cc, otherwise known as the FILE storage engine. My idea is relatively simple, I want to be able to store and access my photos from MySQL. I also want the storage to be relatively efficient and have the raw\u2026","rel":"","context":"In &quot;mysql&quot;","block_context":{"text":"mysql","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/mysql\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":151,"url":"https:\/\/www.flamingspork.com\/blog\/2003\/09\/04\/new-2421-ben2-xfs-patch\/","url_meta":{"origin":89,"position":4},"title":"new 2.4.21-ben2-xfs patch","author":"Stewart Smith","date":"2003-09-04","format":false,"excerpt":"patch-2.4.21-ben2-xfs.recent.bz2 Apply in the usual way, this one is against 2.4.21 stock, so it includes both BenH patches and the XFS patches. The XFS patches are: SGI XFS snapshot-2.4.21-2003-06-23_01:45_UTC as opposed to my last effort with XFS 1.1 (i think). This patch is pretty similar (if not identical) to what\u2026","rel":"","context":"In &quot;linux-kernel&quot;","block_context":{"text":"linux-kernel","link":"https:\/\/www.flamingspork.com\/blog\/category\/linux-kernel\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":925,"url":"https:\/\/www.flamingspork.com\/blog\/2007\/11\/14\/better-disk-allocation-with-mythtv-and-xfs\/","url_meta":{"origin":89,"position":5},"title":"Better disk allocation with MythTV and XFS","author":"Stewart Smith","date":"2007-11-14","format":false,"excerpt":"Running MythTV on XFS? Noticed that all your recordings end up rather fragmented? (use xfs_bmap to find out) Well, the culprit is MythTV not being too nice to the file system. Good news is, it's rather fixable. From the MythTV source code, edit libs\/libmythtv\/ThreadedFileWrite.cpp and look for the following: void\u2026","rel":"","context":"In &quot;mythtv&quot;","block_context":{"text":"mythtv","link":"https:\/\/www.flamingspork.com\/blog\/category\/mythtv\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/89","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/comments?post=89"}],"version-history":[{"count":1,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/89\/revisions"}],"predecessor-version":[{"id":2626,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/89\/revisions\/2626"}],"wp:attachment":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/media?parent=89"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/categories?post=89"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/tags?post=89"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}