System creates a device in /dev when we create a VM using ZFS

antpervar

New Member
May 31, 2021
9
0
1
31
Hi all,

First of all, I would like to remark that we are totally new at Proxmox, so sorry if we post really basic questions.

We have been provided with a physical server with Proxmox VE 6.36. We have configured ZFS, as we have been working with it during years without any issue.

We have configured a pool with 2 SSD disks (mirror) that will store VM and another pool with 6 disks (RAIDZ2) that will store customer data through PVE web interface. First thing that has surprised us is that creating pools in this way, pools are under / instead /mnt/ which is strange for us. Really this shouldn't mark any difference and pool is totally accesible and can be managed, monitorized with ZED as you recommend... but we couln't choose mountpoint. Anyway, we can deal with this behaviour as far as it is stable and robust.

But the thing that has totally astonished us is that, when you create a VM through web interface and you select the mirror pool to store VM, Proxmox does not store VM disk inside this pool, but it creates a new device in /dev with the same name as pool. By navigating into /dev/pool_name, we can see the disks. We have worked with freebsd, nas4free and some other similar software and we didn't never see that a /dev is created with the pool name. Even more strange for us, if you remove the VM that you have created, /dev/pool_name dissapears, so looks like it's only used while there are VM inside. Rebooting the server does not affect the VM. While there are VM , /dev works and stores the VM files.

Is this a normal behavior in PVE and we can go ahead configuring our VM, backups, syncs, etc?

Thanks!
 
VMs on ZFS are stored in volume datasets (zvol) and not in the widely used filesystem datasets. Volume datasets provide a block device which is then used for the VM disk. Those show up under /dev in a few locations. /dev/zdX, /dev/<pool>/..., /dev/zvol/<pool>/.... The latter which expose the names of the datasets are all symlinks to the block devices that these datasets provide: /dev/zdX.

Everything is as it should be.
That a pool get mounted at /<pool> is the default behavior of ZFS under Linux and as far as I can remember from my FreeBSD days, there as well unless you specify different mount points or a different relative mount path (zpool import -R /rel_mnt_path <pool>).

I hope that explains it :)
 
Hi Aaron,

Yes, it has been perfectly explained.

Thank you very much for your help and your quick answer.
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!