XCP-Ng Storage Repository creation and next steps . .

Best to start with the specs/config:

Motherboard: ASRock Rack EP2C602-4L/D16
Processors: (x2): Xeon E5-2670 - 8 cores (HT) @ 2600MHz (16 cores total, 32 threads)
Memory (256GB): Kingston 16GB 2RX4 PC3-12800R DDR3 Reg ECC Server Memory SL16D316R11D4 (x16)
Storage1: (150GB RAID mirror): Local Storage
Storage2: (1TB ZFS mirror): vmpool1
Storage3: (1TB ZFS mirror): vmpool2
NAS1: (24 TB RAIDZ1): FreeNAS connected over 1Gbe connection (will upgrade to 10 Gbe with cards, later)

My question is how the ZFS works in this setup. I am trying to learn the fundamentals of ZFS and I’m having a difficult time wrapping my brain around some of the concepts.

Here are the steps I took to create the pools:

[08:39 xcpng ~]# zpool create -f -O compression=lz4 vmpool1 mirror ata-WDC_WD10EZEX-08WN4A0_WD-WCC6Y2LPY15U ata-SAMSUNG_HD103SJ_S246J90Z145111

[08:30 xcpng ~]# zpool create -f -O compression=lz4 vmpool2 mirror ata-WDC_WD1001FALS-00J7B0_WD-WMATV0071026 ata-WDC_WD1001FALS-00J7B0_WD-WMATV0071909

I then attached the zpools to the xcp-ng server as SRs:

[08:39 xcpng ~]# xe sr-create host-uuid=838a159e-642b-43dd-84b3-e7f8d7ac7f9a name-label=vmpool1 type=file device-config:location=/vmpool1

[08:39 xcpng ~]# xe sr-create host-uuid=838a159e-642b-43dd-84b3-e7f8d7ac7f9a name-label=vmpool2 type=file device-config:location=/vmpool2

What would be the next step?

Just start building VMs on the drives and let xcp-ng worry about how the storage is handled?

Or, should I create a large ZVOL on each of the 1TB drives and then start creating VMs using XO?

Or, should I have designated a different “type=file” parameter when creating the SRs and I should remove the SRs and reconnect them using a different argument for that parameter?

Any help would be greatly appreciated.


ZFS is a newer feature of XCP-NG so there is not a lot of management option. You can just create the ZFS, add it as a repository and start storing VM’s. I don’t use ZFS so for more detailed tuning try their forums.

Sounds good. Thank you for the reply.

There’s been some discussions about performance and whether it’s better to setup pools like you did and then run the VMs as files on top of the pools or create ZVOLs and then create VMs as LVMs on top of the ZVOLs.

You can find more information here:

Thank you for the reply. I appreciate the link. I actually used that page as my initial guide for installation. That page discusses methods for XCP-Ng versions prior to 8.0. The instructions I ended up using are for XCP-Ng8.0 and are located here.

The discussion that results from oliverlambert’s post is what generated my interest in what advice might be found on this forum. Specifically, the discussion points presented by users savagepoint and swivvle.

I have two pools, so I think I am going to use my vmpool1 as a testing pool and wait until SMAPIv3 to use vmpool2 as the backup. I don’t want to set up my “production” environment until SMAPIv3 is introduced in the next release of xcp-ng. I’m not sure if there’s any practical benefit to waiting since I am unsure of what SMAPIv3 will actually bring to the ZFS pools and how they are seen by xcp-ng as SRs, but the conversation in the post I linked seems to lean towards waiting for it.