Backups with qcow2 enabled
-
@acebmxer so, NBD it was...
holy molly, you have some good network performance !
what kind of SR at source ? and remote at destination ?
what about the PIFs ? -
Just a little old truenas running on AMD 5900x with 10 Gic nics bound, Unifi Agg switch with 10gb links to hosts.
Storage 5 8tb tohisba drives and two 1tb nvme drives 1 for cache 1 for log vdev.
Backup device is a DS1819+ with 4 12 tb seagate exo drives with 10gb link.

-
@acebmxer NFS remotes on the DS1819+ ?
we have iSCSI SR (25Gb mellanox 6 PIFs on hosts to 25Gb MSA2062 SAN dual controller)
our remotes are iSCSI os mounted volumes on MSA SANs, presented as S3 (minio VMs)
using XO PROXIES to offload backups from XOAwe max out a 150/200Mb/s during backups

but we are on VHD VDIs, asking myself if the added backup performance you present could be due to QCOW2 format on source SR ?
will have to try VDIs on such SR to see the diff -
@Pilow Yes NFS on vm storage and on backup storage.
All vms are now on qcow2 except for the windows vm what was vhd. However i just mirgrated it over to qcow2. the Nics in all systems are the intel 10gb either x520 or x540
Edit - Sorry missed your question about performance vhd vers qcow2. I would say its on equal to. I didnt run any benchmarks for comparison. (probably should have) But havent seen any major slowness other then GC issues. (See latest post)
-
So progress bar seems to be working now on exporting. But i am also noticing Garbage collection seems to be running quite often that i feel its slowing down the import for the health check.


-
Next thing I am noticing that garbage collection is not able to coalesce vdi to vms that are running. garbage will keep trying to run every 30 - 45 seconds for 30 seconds run time. VDIs to coalesce will keep increasing unless a vm is powered off and given enough time for garbage collection to actually run.
Because garbage collection is spamming so often importing a vdi for health check will take logger.
-
I disabled CBT on the vms and re-ran a delta backup. I noticed the following.
While watching the backup task when it shows [XO] Exporting it will not show the percentage and completion. Watching backup task a vm will show not using NBD at first but using XO and then fail. The backup log will then show vm fell back to full backup and the task will then show that it is using NBD.




Also with out CBT GC is not constantly spamming once a vm has finished exporting and started health check. It appears to actually be running and able to coalesce as they are no longer showing in the dashboard / health...
delta job with CBT enabled - 2026-04-20T00_43_48.487Z - backup NG.txt
CBT disabled delta job. two vms fell back to full - 2026-04-20T03_19_02.894Z - backup NG.txt
Next delta job with CBT disabled 1 vm fell back to full - 2026-04-20T04_19_10.531Z - backup NG.txt


-
Ok something is happening. I made no additional changes from last night. Now schedule backup job 1 pm is still going on 2 hours later.

Think i might revert back to VHD as this has cause so many issues.
-
@acebmxer do you have something in the xo logs ( journalct probably ) ?
-
@acebmxer do you have something in the xo logs ( journalct probably ) ?
from host
sudo journalctl -u xo-server -n 50
-- No entries --From XO - Currently on fbba0 commit (4 behind)
Apr 20 15:21:51 xo-ce xo-server[849]: } Apr 20 15:21:51 xo-ce xo-server[849]: } Apr 20 15:22:35 xo-ce xo-server[849]: 2026-04-20T19:22:35.554Z xo:main INFO + Console proxy ( - 127.0.0.1) Apr 20 15:22:41 xo-ce xo-server[849]: 2026-04-20T19:22:41.365Z xo:main INFO - Console proxy ( - 127.0.0.1) Apr 20 15:22:55 xo-ce xo-server[849]: 2026-04-20T19:22:55.223Z xo:main INFO + Console proxy ( - 127.0.0.1) Apr 20 15:23:04 xo-ce xo-server[849]: 2026-04-20T19:23:04.562Z xo:main INFO - Console proxy ( - 127.0.0.1) Apr 20 16:11:49 xo-ce xo-server[849]: (node:849) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 update list> Apr 20 16:11:49 xo-ce xo-server[849]: 2026-04-20T20:11:49.190Z xo:xo-server WARN Node warning { Apr 20 16:11:49 xo-ce xo-server[849]: error: MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 update listen> Apr 20 16:11:49 xo-ce xo-server[849]: at genericNodeError (node:internal/errors:985:15) Apr 20 16:11:49 xo-ce xo-server[849]: at wrappedFn (node:internal/errors:539:14) Apr 20 16:11:49 xo-ce xo-server[849]: at _addListener (node:events:590:17) Apr 20 16:11:49 xo-ce xo-server[849]: at Tasks.addListener (node:events:608:10) Apr 20 16:11:49 xo-ce xo-server[849]: at TaskController.getTasks (file:///opt/xen-orchestra/@xen-orchestra/rest-api/dist/tasks/tas> Apr 20 16:11:49 xo-ce xo-server[849]: at ExpressTemplateService.buildPromise (/opt/xen-orchestra/node_modules/@tsoa/runtime/src/ro> Apr 20 16:11:49 xo-ce xo-server[849]: at ExpressTemplateService.apiHandler (/opt/xen-orchestra/node_modules/@tsoa/runtime/src/rout> Apr 20 16:11:49 xo-ce xo-server[849]: at TaskController_getTasks (file:///opt/xen-orchestra/@xen-orchestra/rest-api/dist/open-api/> Apr 20 16:11:49 xo-ce xo-server[849]: emitter: Tasks { Apr 20 16:11:49 xo-ce xo-server[849]: _events: [Object: null prototype], Apr 20 16:11:49 xo-ce xo-server[849]: _eventsCount: 2, Apr 20 16:11:49 xo-ce xo-server[849]: _maxListeners: undefined, Apr 20 16:11:49 xo-ce xo-server[849]: Symbol(shapeMode): false, Apr 20 16:11:49 xo-ce xo-server[849]: Symbol(kCapture): false Apr 20 16:11:49 xo-ce xo-server[849]: }, Apr 20 16:11:49 xo-ce xo-server[849]: type: 'update', Apr 20 16:11:49 xo-ce xo-server[849]: count: 11 Apr 20 16:11:49 xo-ce xo-server[849]: } Apr 20 16:11:49 xo-ce xo-server[849]: } Apr 20 16:11:49 xo-ce xo-server[849]: (node:849) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 remove list> Apr 20 16:11:49 xo-ce xo-server[849]: 2026-04-20T20:11:49.190Z xo:xo-server WARN Node warning { Apr 20 16:11:49 xo-ce xo-server[849]: error: MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 remove listen> Apr 20 16:11:49 xo-ce xo-server[849]: at genericNodeError (node:internal/errors:985:15) Apr 20 16:11:49 xo-ce xo-server[849]: at wrappedFn (node:internal/errors:539:14) Apr 20 16:11:49 xo-ce xo-server[849]: at _addListener (node:events:590:17) Apr 20 16:11:49 xo-ce xo-server[849]: at Tasks.addListener (node:events:608:10) Apr 20 16:11:49 xo-ce xo-server[849]: at TaskController.getTasks (file:///opt/xen-orchestra/@xen-orchestra/rest-api/dist/tasks/tas> Apr 20 16:11:49 xo-ce xo-server[849]: at ExpressTemplateService.buildPromise (/opt/xen-orchestra/node_modules/@tsoa/runtime/src/ro> Apr 20 16:11:49 xo-ce xo-server[849]: at ExpressTemplateService.apiHandler (/opt/xen-orchestra/node_modules/@tsoa/runtime/src/rout> Apr 20 16:11:49 xo-ce xo-server[849]: at TaskController_getTasks (file:///opt/xen-orchestra/@xen-orchestra/rest-api/dist/open-api/> Apr 20 16:11:49 xo-ce xo-server[849]: emitter: Tasks { Apr 20 16:11:49 xo-ce xo-server[849]: _events: [Object: null prototype], Apr 20 16:11:49 xo-ce xo-server[849]: _eventsCount: 2, Apr 20 16:11:49 xo-ce xo-server[849]: _maxListeners: undefined, Apr 20 16:11:49 xo-ce xo-server[849]: Symbol(shapeMode): false, Apr 20 16:11:49 xo-ce xo-server[849]: Symbol(kCapture): false Apr 20 16:11:49 xo-ce xo-server[849]: }, Apr 20 16:11:49 xo-ce xo-server[849]: type: 'remove', Apr 20 16:11:49 xo-ce xo-server[849]: count: 11 Apr 20 16:11:49 xo-ce xo-server[849]: } Apr 20 16:11:49 xo-ce xo-server[849]: } -
Killed the current tasks. Updated xo to latest commit and start backups again... here are current errors from xo...
sudo journalctl -u xo-server -n 50 Apr 20 17:29:54 xo-ce xo-server[3147]: Symbol(undici.error.UND_ERR): true, Apr 20 17:29:54 xo-ce xo-server[3147]: Symbol(undici.error.UND_ERR_SOCKET): true Apr 20 17:29:54 xo-ce xo-server[3147]: } Apr 20 17:30:29 xo-ce xo-server[3262]: 2026-04-20T21:30:29.390Z xo:xapi:vdi INFO OpaqueRef:4efd6d02-6c4d-26f8-7ed5-1b9b34daa89d has been disconnected from dom0> Apr 20 17:30:29 xo-ce xo-server[3262]: vdiRef: 'OpaqueRef:ce354818-4cf0-2ac3-8156-3d7118548ecd', Apr 20 17:30:29 xo-ce xo-server[3262]: vbdRef: 'OpaqueRef:4efd6d02-6c4d-26f8-7ed5-1b9b34daa89d' Apr 20 17:30:29 xo-ce xo-server[3262]: } Apr 20 17:30:29 xo-ce xo-server[3262]: 2026-04-20T21:30:29.392Z xo:xapi:xapi-disks WARN Either transmit the source to the constructor or implement openSource an> Apr 20 17:30:29 xo-ce xo-server[3262]: error: Error: Either transmit the source to the constructor or implement openSource and call init Apr 20 17:30:29 xo-ce xo-server[3262]: at get source (file:///opt/xen-orchestra/@xen-orchestra/disk-transform/dist/DiskPassthrough.mjs:53:19) Apr 20 17:30:29 xo-ce xo-server[3262]: at XapiQcow2StreamSource.close (file:///opt/xen-orchestra/@xen-orchestra/disk-transform/dist/DiskPassthrough.mjs:86> Apr 20 17:30:29 xo-ce xo-server[3262]: at XapiQcow2StreamSource.close (file:///opt/xen-orchestra/@xen-orchestra/xapi/disks/XapiQcow2StreamSource.mjs:61:18) Apr 20 17:30:29 xo-ce xo-server[3262]: at #openExportStream (file:///opt/xen-orchestra/@xen-orchestra/xapi/disks/Xapi.mjs:189:21) Apr 20 17:30:29 xo-ce xo-server[3262]: at process.processTicksAndRejections (node:internal/process/task_queues:104:5) Apr 20 17:30:29 xo-ce xo-server[3262]: at async #openNbdStream (file:///opt/xen-orchestra/@xen-orchestra/xapi/disks/Xapi.mjs:97:22) Apr 20 17:30:29 xo-ce xo-server[3262]: at async XapiDiskSource.openSource (file:///opt/xen-orchestra/@xen-orchestra/xapi/disks/Xapi.mjs:258:18) Apr 20 17:30:29 xo-ce xo-server[3262]: at async XapiDiskSource.init (file:///opt/xen-orchestra/@xen-orchestra/disk-transform/dist/DiskPassthrough.mjs:28:4> Apr 20 17:30:29 xo-ce xo-server[3262]: at async file:///opt/xen-orchestra/@xen-orchestra/backups/_incrementalVm.mjs:66:5 Apr 20 17:30:29 xo-ce xo-server[3262]: at async Promise.all (index 0) Apr 20 17:30:29 xo-ce xo-server[3262]: } Apr 20 17:30:29 xo-ce xo-server[3262]: 2026-04-20T21:30:29.392Z xo:xapi:xapi-disks WARN can't compute delta OpaqueRef:ce354818-4cf0-2ac3-8156-3d7118548ecd from > Apr 20 17:30:29 xo-ce xo-server[3262]: error: BodyTimeoutError: Body Timeout Error Apr 20 17:30:29 xo-ce xo-server[3262]: at FastTimer.onParserTimeout [as _onTimeout] (/opt/xen-orchestra/node_modules/undici/lib/dispatcher/client-h1.js:64> Apr 20 17:30:29 xo-ce xo-server[3262]: at Timeout.onTick [as _onTimeout] (/opt/xen-orchestra/node_modules/undici/lib/util/timers.js:162:13) Apr 20 17:30:29 xo-ce xo-server[3262]: at listOnTimeout (node:internal/timers:605:17) Apr 20 17:30:29 xo-ce xo-server[3262]: at process.processTimers (node:internal/timers:541:7) { Apr 20 17:30:29 xo-ce xo-server[3262]: code: 'UND_ERR_BODY_TIMEOUT', Apr 20 17:30:29 xo-ce xo-server[3262]: Symbol(undici.error.UND_ERR): true, Apr 20 17:30:29 xo-ce xo-server[3262]: Symbol(undici.error.UND_ERR_BODY_TIMEOUT): true Apr 20 17:30:29 xo-ce xo-server[3262]: } Apr 20 17:30:29 xo-ce xo-server[3262]: } Apr 20 17:30:29 xo-ce xo-server[3262]: 2026-04-20T21:30:29.395Z xo:xapi:xapi-disks INFO export through qcow2 Apr 20 17:30:36 xo-ce xo-server[3262]: 2026-04-20T21:30:36.324Z xo:backups:worker ERROR unhandled error event { Apr 20 17:30:36 xo-ce xo-server[3262]: error: RequestAbortedError [AbortError]: Request aborted Apr 20 17:30:36 xo-ce xo-server[3262]: at BodyReadable.destroy (/opt/xen-orchestra/node_modules/undici/lib/api/readable.js:51:13) Apr 20 17:30:36 xo-ce xo-server[3262]: at QcowStream.close (file:///opt/xen-orchestra/@xen-orchestra/qcow2/dist/disk/QcowStream.mjs:40:22) Apr 20 17:30:36 xo-ce xo-server[3262]: at XapiQcow2StreamSource.close (file:///opt/xen-orchestra/@xen-orchestra/disk-transform/dist/DiskPassthrough.mjs:86> Apr 20 17:30:36 xo-ce xo-server[3262]: at XapiQcow2StreamSource.close (file:///opt/xen-orchestra/@xen-orchestra/xapi/disks/XapiQcow2StreamSource.mjs:61:18) Apr 20 17:30:36 xo-ce xo-server[3262]: at DiskLargerBlock.close (file:///opt/xen-orchestra/@xen-orchestra/disk-transform/dist/DiskLargerBlock.mjs:87:28) Apr 20 17:30:36 xo-ce xo-server[3262]: at TimeoutDisk.close (file:///opt/xen-orchestra/@xen-orchestra/disk-transform/dist/DiskPassthrough.mjs:34:29) Apr 20 17:30:36 xo-ce xo-server[3262]: at XapiStreamNbdSource.close (file:///opt/xen-orchestra/@xen-orchestra/disk-transform/dist/DiskPassthrough.mjs:34:2> Apr 20 17:30:36 xo-ce xo-server[3262]: at XapiStreamNbdSource.init (file:///opt/xen-orchestra/@xen-orchestra/xapi/disks/XapiStreamNbd.mjs:66:17) Apr 20 17:30:36 xo-ce xo-server[3262]: at process.processTicksAndRejections (node:internal/process/task_queues:104:5) Apr 20 17:30:36 xo-ce xo-server[3262]: at async #openNbdStream (file:///opt/xen-orchestra/@xen-orchestra/xapi/disks/Xapi.mjs:108:7) { Apr 20 17:30:36 xo-ce xo-server[3262]: code: 'UND_ERR_ABORTED', Apr 20 17:30:36 xo-ce xo-server[3262]: Symbol(undici.error.UND_ERR): true, Apr 20 17:30:36 xo-ce xo-server[3262]: Symbol(undici.error.UND_ERR_ABORT): true, Apr 20 17:30:36 xo-ce xo-server[3262]: Symbol(undici.error.UND_ERR_ABORTED): true Apr 20 17:30:36 xo-ce xo-server[3262]: } Apr 20 17:30:36 xo-ce xo-server[3262]: }
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login