Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

BTRFS has much more flexible snapshots and clones than ZFS. You can create rewritable snapshots and create new snapshots based on those. In addition you can create COW copies of files with "cp --reflink" which ZFS doesn't support.

BTRFS feels much more like a native filesystem on Linux too. It doesn't have that big ARC cache.

We've been using BTRFS for 5+ yrs on a Linux MD RAID setup, with no problems at all.



> You can create rewritable snapshots and create new snapshots based on those.

You can do this with ZFS as well.

First, there is no such thing as a "rewritable snapshot"; the term is an oxymoron. Please do not use it and please do not promulgate it. The term "snapshot" should be reserved for read-only states of a (file) system at a particular point of time:

* https://en.wikipedia.org/wiki/Snapshot_(computer_storage)

Second, ZFS does have this feature: its called cloning. You create a (read-only) snapshot, and then run the "clone" command to make it read-write:

* https://www.freebsd.org/doc/handbook/zfs-zfs.html#zfs-zfs-cl... * http://docs.oracle.com/cd/E19253-01/819-5461/gbcxz/index.htm...

As long as the clone exists though, the snapshot cannot be deleted. However you can "promote" the clone, after which the snapshot can be removed. This feature has been around since at least 2010:

* https://www.freebsddiary.org/zfs-promote.php

Please use the word "clone" for a read-write copy of an original data set, as it is already fairly accepted nomenclature:

* https://en.wikipedia.org/wiki/Disk_cloning * https://en.wikipedia.org/wiki/Cloning_(programming)


I was aware of the promotion feature. I was creating new clones/snapshots in a chain hierarchy in zfs, copying old backup sets progressively onto the back of the chain, but keeping the head as the current copy. This was a breeze in btrfs, but basically impossible in zfs as it refused to promote the old clones/snapshots.

As to the nomenclature, it doesn't seem to make sense to differentiate snapshots and clones. With the flexibility of btrfs they're just the same thing with a R/O flag.


> As to the nomenclature, it doesn't seem to make sense to differentiate snapshots and clones. With the flexibility of btrfs they're just the same thing with a R/O flag.

It does make sense: one is writable and the other is not. When someone is talking about (e.g.) mitigation mechanisms against ransomware, saying you have "snapshots" is meaningless if they're R/W as the ransowmare can go in an overwrite files. But if you use the term "snapshot" correctly--meaning R/O--everyone involved knows you have mitigated the risk since the data is safe from being altered and reverting is possible.

It's not the "same thing" if there is a difference between the two--which there is, the R/O flag setting. If two thing are different then they are not the "same": this may seem tautological but it's not. Call different things differently.

The btrfs CLI is really retarded in this regard where using "snapshot" is not R/O by default, as it violates decades of expectations and POLA:

* https://en.wikipedia.org/wiki/Principle_of_least_astonishmen...


The term "clone" has been used in the storage industry for several decades now. It has a very specific meaning, as does the term "snapshot". I understand it might not make sense to you personally, but you're just going to confuse anyone you're talking to referring to it by another name. You might as well start calling containers "light virtual machines". You'll get an equal number of blank stares and confusion from whomever you're talking to.


> The term "clone" has been used in the storage industry for several decades now. It has a very specific meaning, as does the term "snapshot".

Yup, this is my point: words have meaning.

Semi-recent XKCD on "Communicating":

* https://xkcd.com/1860/


On the flip side, ZFS on linux now has native encryption.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: