
How does btrfs do it internally?
BTRFS does all writes as copy-on-write. So every time you write the data goes to a different location. Keeping multiple versions just involves having pointers to different blocks on disk.
What measures are taken to avoid fragmentation?
I'm getting more and more excited about btrfs. I was looking around at zfs but it didn't end up meeting my needs. I'm still testing ceph and xfs is currently recommended for the backend store, btrfs is faster but has known issues with ceph, or at least did last time I read the docs and so is not currently recommended.
What issues would BTRFS have? XFS just provides a regular VFS interface which BTRFS does well. I can imagine software supporting ZFS but not BTRFS if it uses special ZFS features. But I'm not aware of XFS having useful features for a file store that BTRFS lacks.
http://ceph.com/docs/master/rados/configuration/filesystem-recommendations/ It's not a feature thing it's a maturity/stability thing. I think ceph encounters a few more corner cases than regular usage might. Or maybe that page is a bit out of date and nobody wants the liability of updating it ;) James