Setting a pool as read only

I cannot emphasize how much I hate that and I will never accept any rationale from the ZFS devs for why it has to be like that.

There is no reason why a ZFS pool cannot exist without a root dataset that blurs the boundary between them. It reduces flexibility and limits what you can do and has been a source of confusion and frustration for new users. Because of this pointless design, I use what I call “pseudo-root” datasets, and dismiss the root dataset like it doesn’t exist.


ZFS devs force you to do this:

flowchart TD

nas1[("tank<br>(pool)")]
nas1root("tank<br>(root dataset)")
zroot1("zroot1<br>(pseudo-root)")
zroot2("zroot2<br>(pseudo-root)")
zroot3("zroot3<br>(pseudo-root)")
dsArchives("archives")
dsDownloads("downloads")
dsDocs("documents")
dsMedia("media")
dsPictures("pictures")
dsStaging("staging")
dsTemp("temporary")

style nas1 stroke-width:4px
style nas1root stroke-width:4px
style zroot1 stroke:green,stroke-width:4px
style zroot2 stroke:blue,stroke-width:4px
style zroot3 stroke:red,stroke-width:4px
style dsArchives stroke:green
style dsDocs stroke:green
style dsPictures stroke:green
style dsMedia stroke:blue
style dsDownloads stroke:blue
style dsStaging stroke:red
style dsTemp stroke:red

nas1 === nas1root
linkStyle 0 stroke-width:6px
nas1root --- zroot1
nas1root --- zroot2
nas1root --- zroot3
zroot1 --- dsArchives
zroot1 --- dsDocs
zroot1 --- dsPictures
zroot2 --- dsMedia
zroot2 --- dsDownloads
zroot3 --- dsStaging
zroot3 --- dsTemp



In my ideal world, everything would look the same as you see in the post I linked to, with the only difference being the dataset “tank” doesn’t exist. You would have 3 root datasets created on the “tank” pool with no arbitrary “tank” dataset in between.

@winnielinnie would have designed it like this:

flowchart TD

nas1[("tank<br>(pool)")]
zroot1("root1")
zroot2("root2")
zroot3("root3")
dsArchives("archives")
dsDownloads("downloads")
dsDocs("documents")
dsMedia("media")
dsPictures("pictures")
dsStaging("staging")
dsTemp("temporary")

style nas1 stroke-width:4px
style zroot1 stroke:green,stroke-width:4px
style zroot2 stroke:blue,stroke-width:4px
style zroot3 stroke:red,stroke-width:4px
style dsArchives stroke:green
style dsDocs stroke:green
style dsPictures stroke:green
style dsMedia stroke:blue
style dsDownloads stroke:blue
style dsStaging stroke:red
style dsTemp stroke:red

nas1 === zroot1
nas1 === zroot2
nas1 === zroot3
linkStyle 0 stroke-width:6px
zroot1 --- dsArchives
zroot1 --- dsDocs
zroot1 --- dsPictures
zroot2 --- dsMedia
zroot2 --- dsDownloads
zroot3 --- dsStaging
zroot3 --- dsTemp
1 Like