Proxmox: data storage via NAS/NFS or dedicated partition
Black friday is almost upon us and I'm itching to get some good deals on missing hardware for my setup.
My boot drive will also be VM storage and reside on two 1TB NVMe drives in a ZFS mirror. I plan on adding another SATA SSD for data storage. I can't add more storage right now, as my M90q can't be expanded easily.
Now, how would I best setup my storage? I have two ideas and could use some guidance. I want some NAS storage for documents, files, videos, backups etc. I also need storage for my VMs, namely Nextcloud and Jellyfin. I don't want to waste NVMe space, so this would go on the SATA SSD as well.
Pass the SSD to a VM running some NAS OS (OpenMediaVault, TrueNas, simple Samba). I'd then set up different NFS/samba shares for my needs. Jellyfin or Nextcloud would rely on the NFS share for their storage needs. Is that even possible and if so, a good idea?
I could easily access all files, if needed. I don't now if there would be a problem with permissions or diminished read/write speeds, especially since there are a lot of small files on my nextcloud.
I split the SSD, pass one partition to my NAS and the other will be used by Proxmox to store virtual disks for my VMs. This is probably the cleanest, but I can't easily resize the partitions later.
What do you think? I'd love to hear your thoughts on this!
How about option 3: let Proxmox manage the storage and don’t set up anything that requires drive pass through.
TrueNAS and OMV are great, and I went that same VM NAS route when I first started setting things up many years ago. It’s totally robust and doable, but it also is a pretty inefficient way to use storage.
Here’s how I’d do it in this situation: make your zpools in Proxmox, create a dataset for stuff that you’ll use for VMs and stuff you’ll use for file sharing and then make an LXC container that runs Cockpit with 45Drives’ file sharing plugin. Bind mount the filesharing dataset you made and then you have the best of both worlds—incredibly flexible storage and a great UI for managing samba shares.
That's also something I was considering briefly. While I'm waiting for hardware, I did basically that or at least I think I did. Although, I didn't use a bind mount, because I only have one drive for testing, so I created a virtual disk.
What exactly do you mean with bind mount? Mount the data set into the container? I didn't even know, that this was possible. And what is a data set? Sorry, I'm quite new to all this. Thanks!
If you create an LXC, then go to Resources --> Add --> Mount point, then you can basically just mount the proxmox drives / folder as a folder within the LXC environment.
A bind mount kind of shares a directory on the host with the container. To do it, unless something’s changed in the UI that I don’t remember, you have to edit the LXC config file and add something like:
mp0: /path/on/host,mp=/path/in/container
I usually make a sharing dataset and use that as the target.