Storing zVOLs for iSCSI: Direct on Pool or in Dataset?

I’m about try to get my first iSCSI … thing … up and running.

Is there any benefit/downside to putting the created zVols into Datasets (Generic preset: Unix permissions, no ACL) vs. the root level of the pool?

It seems like you could use datasets to, say, group together zVols that need to have the same snapshot schedule, encryption, etc., but maybe there’s a reason not to do that.

Thanks!

I think you already answered most of the benefits of keeping in a separate dataset, that I could think of. May be someone more knowledgeable could add more points.

I understand we want to get things perfect at the first time, and I too used to try my best do the same before. What experience has taught me over time is we could always improve things in future, and if we get 80% right the first time that is good enough. Now a days I think it as, let’s start with the reasonably good state at first and see what I can improve from here. So go ahead start with a dataset and experience your use case. You can always move things around, replicate etc. if you wish to retry from the beginning.

PS : I really like the way your questions are formed. They are always thought provoking/brainstorming that makes it to be read twice to see if I missed anything :slight_smile:

I’d vote datasets for the reasons you have mentioned (grouping them together logically, and for snapshots).

Thank you both. I feel comfortable getting on with this now.

I understand we want to get things perfect at the first time, and I too used to try my best do the same before. What experience has taught me over time is we could always improve things in future, and if we get 80% right the first time that is good enough. Now a days I think it as, let’s start with the reasonably good state at first and see what I can improve from here. So go ahead start with a dataset and experience your use case. You can always move things around, replicate etc. if you wish to retry from the beginning.

This is absolutely the way to go. Usually, I’d be less cautious and experiment more, but I find myself needing to use at least part of my storage for work production with iSCSI–sooner rather than later.

I’m okay with not getting it exactly right now and making it better later, but I did want to make sure I wouldn’t be making some catastrophic mistake by using datasets to sort my iSCSI disks–the kind of mistake I don’t notice for a while until it’s 2AM and I’m trying to get something done for an 8 AM deadline and my storage goes boom. :wink: Can I fix it? Probably. Before deadline? Um.

In fact, I’m mainly motivated to start using iSCSI because I have a Windows 11 VM I use for work, and it mounts a work OneDrive that’s shared by about 15 people. Proxmox Backup Server is great, but it is … struggling … with using a reasonable amount of disk space to back up that VM every 24 hours. My PBS storage isn’t huge, so that’s become a problem (that I made for myself).

Like you said, though, it was reasonably good for several months. It took awhile before I really started noticing how much of my 150 GiB cloud PBS instance was getting eaten up.

PS : I really like the way your questions are formed. They are always thought provoking/brainstorming that makes it to be read twice to see if I missed anything

Thank you. I do try to research things well before I ask–often I find the solution while I’m trying to figure out how to ask the question–but it can be tricky when I’m new to something and don’t yet speak the secret language.

Mostly, I try to write questions like I’m preparing to post on the Arch forum. :wink:

1 Like

A couple of ZFS devs (like OG people working for SUN in the early days) have mentioned (like on conference talks) regretting the option to make the root dataset capable of holding user data at all.

It can indeed get a bit messy trying to do send recv and some other things if the root dataset holds any data for which the path isn’t supposed to change and stuff like that.

So keeping the root empty and doing everything in at least one layer of sub datasets is generally a good idea.

2 Likes

That’s not just a ZFS thing either. If you use windows wizards to try to share a whole drive, it will valiantly try to prevent you from doing that by creating a “shares” directory. This is because you can really work yourself into a corner as an admin if you are sharing out an entire volume and then a storage design change comes along where you can’t do that anymore (for example accounting needs their own separate share).

1 Like

Shows how tired I am today/this week/this year … I actually forgot about not storing things on the root dataset, and the very good reasons for not doing that. -_-

Thanks for the reminder. :slight_smile: