Hi everybody!
Kind of new in the Incus-world, and to be honest I have kind of an impression that my approach is over-complicated, although I could not yet find a better option. Please be calm with me if the question is too weird ![]()
What i try to do:
- Have a IncusOS in my home lab
- Have a Linstor Controller on a VPS
- Have a S3 compatible storage on very cheap device (Raspberry PI at a friendโs house) as backup of one of the storage pools of the IncusOS
The idea: Use the โSnapshot Shippingโ feature of Linstor to backup the IncusOS data to the S3 compatible storage (see Controlling Data Replication with Snapshot Shipping - LINBIT). I am aware that this is kind of a corner-case usage of Linstor, but I could not come up with a better backup/restore solution (scheduled, incremental, deduplicated, encrypted - my limiting resource is primarily the bandwidth of the Raspberry PI).
# Setting configure the Linstor backend in Incus
incus config set incusos: storage.linstor.controller_connection=http://192.168.122.116:3370
incus config set incusos: storage.linstor.satellite.name=18e79163-b792-4521-a7cf-d2956550223d
# Create "MyLinstorPool" as zfs volume - it is supposed to be the actual incus storage pool that takes part in the Linstor storage pool
incus storage create MyLinstorPool zfs size=20GB
linstor storage-pool create zfs 18e79163-b792-4521-a7cf-d2956550223d MyLinstorPool MyLinstorPool
# Create a "remote" Incus storage pool - a pool that uses the Linstor driver now
incus storage create remote linstor linstor.resource_group.storage_pool=MyLinstorPool linstor.resource_group.place_count=1
Now my problem: If I create an instance in the โremoteโ pool, I get a ApiCallError:
incus launch images:debian/12 c1 --storage remote
Launching c1
Error: Failed instance creation: Failed creating instance from image: Unable to start cloning resource definition: json: cannot unmarshal object into Go value of type client.ApiCallError
The Linstor error log shows this:
user@vps:~$ sudo journalctl -u linstor-controller -n 100 | grep -i "clone\|error\|remote"
Dec 30 11:35:58 vps Controller[699]: 2025-12-30 11:35:58.191 [grizzly-http-server-0] INFO LINSTOR/Controller/717627 SYSTEM - REST/API RestClient(192.168.122.236; 'Go-http-client/1.1')/CloneRscDfn
Dec 30 11:35:58 vps Controller[699]: 2025-12-30 11:35:58.226 [grizzly-http-server-0] ERROR LINSTOR/Controller/ SYSTEM - No suitable storage pools found for cloning. [Report number 69537AF1-00000-000013]
user@vps:~$ linstor err show 69537AF1-00000-000013
ERROR REPORT 69537AF1-00000-000013
============================================================
Application: LINBITยฎ LINSTOR
Module: Controller
Version: 1.33.1
Build ID: 95da7940d6efb6a39ea303c5f37b03478a6fab0b
Build time: 2025-12-22T16:04:57+00:00
Error time: 2025-12-30 11:35:58
Node: vps
Thread: grizzly-http-server-0
Access context information
Identity: PUBLIC
Role: PUBLIC
Domain: PUBLIC
Peer: RestClient(192.168.122.236; 'Go-http-client/1.1')
============================================================
Reported error:
===============
Category: RuntimeException
Class name: ApiRcException
Class canonical name: com.linbit.linstor.core.apicallhandler.response.ApiRcException
Generated at: Method 'findCloneStoragePools', Source file 'CtrlRscDfnApiCallHandler.java', Line #1231
Error message: No suitable storage pools found for cloning.
Error context:
No suitable storage pools found for cloning.
ApiRcException entries:
Message: No suitable storage pools found for cloning.
NumericCode: -4611686018427386908
Asynchronous stage backtrace:
Error has been observed at the following site(s):
*__checkpoint โข Clone resource-definition
Original Stack Trace:
Call backtrace:
Method Native Class:Line number
findCloneStoragePools N com.linbit.linstor.core.apicallhandler.controller.CtrlRscDfnApiCallHandler:1231
Suppressed exception 1 of 1:
===============
Category: RuntimeException
Class name: OnAssemblyException
Class canonical name: reactor.core.publisher.FluxOnAssembly.OnAssemblyException
Generated at: Method 'findCloneStoragePools', Source file 'CtrlRscDfnApiCallHandler.java', Line #1231
Error message:
Error has been observed at the following site(s):
*__checkpoint โข Clone resource-definition
Original Stack Trace:
Error context:
No suitable storage pools found for cloning.
Call backtrace:
Method Native Class:Line number
findCloneStoragePools N com.linbit.linstor.core.apicallhandler.controller.CtrlRscDfnApiCallHandler:1231
cloneRscDfnInTransaction N com.linbit.linstor.core.apicallhandler.controller.CtrlRscDfnApiCallHandler:1411
lambda$cloneRscDfn$7 N com.linbit.linstor.core.apicallhandler.controller.CtrlRscDfnApiCallHandler:851
doInScope N com.linbit.linstor.core.apicallhandler.ScopeRunner:178
lambda$fluxInScope$0 N com.linbit.linstor.core.apicallhandler.ScopeRunner:101
call N reactor.core.publisher.MonoCallable:72
trySubscribeScalarMap N reactor.core.publisher.FluxFlatMap:128
subscribeOrReturn N reactor.core.publisher.MonoFlatMapMany:49
subscribe N reactor.core.publisher.Flux:8833
onNext N reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain:196
request N reactor.core.publisher.Operators$ScalarSubscription:2570
onSubscribe N reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain:141
subscribe N reactor.core.publisher.MonoJust:55
subscribe N reactor.core.publisher.MonoDeferContextual:55
subscribe N reactor.core.publisher.Flux:8848
onNext N reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain:196
request N reactor.core.publisher.Operators$ScalarSubscription:2570
onSubscribe N reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain:141
subscribe N reactor.core.publisher.MonoJust:55
subscribe N reactor.core.publisher.MonoDeferContextual:55
subscribe N reactor.core.publisher.Flux:8848
onNext N reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain:196
onNext N reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber:129
completePossiblyEmpty N reactor.core.publisher.Operators$BaseFluxToMonoOperator:2096
onComplete N reactor.core.publisher.MonoCollect$CollectSubscriber:145
onComplete N reactor.core.publisher.MonoFlatMapMany$FlatMapManyInner:261
checkTerminated N reactor.core.publisher.FluxFlatMap$FlatMapMain:850
drainLoop N reactor.core.publisher.FluxFlatMap$FlatMapMain:612
drain N reactor.core.publisher.FluxFlatMap$FlatMapMain:592
onComplete N reactor.core.publisher.FluxFlatMap$FlatMapMain:469
checkTerminated N reactor.core.publisher.FluxFlatMap$FlatMapMain:850
drainLoop N reactor.core.publisher.FluxFlatMap$FlatMapMain:612
drain N reactor.core.publisher.FluxFlatMap$FlatMapMain:592
onComplete N reactor.core.publisher.FluxFlatMap$FlatMapMain:469
complete N reactor.core.publisher.Operators:137
subscribe N reactor.core.publisher.FluxIterable:144
subscribe N reactor.core.publisher.FluxIterable:83
subscribe N reactor.core.publisher.Flux:8848
trySubscribeScalarMap N reactor.core.publisher.FluxFlatMap:202
subscribeOrReturn N reactor.core.publisher.MonoFlatMapMany:49
subscribe N reactor.core.publisher.Flux:8833
onNext N reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain:196
request N reactor.core.publisher.Operators$ScalarSubscription:2570
onSubscribe N reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain:141
subscribe N reactor.core.publisher.MonoJust:55
subscribe N reactor.core.publisher.MonoDeferContextual:55
subscribe N reactor.core.publisher.Flux:8848
onNext N reactor.core.publisher.FluxFlatMap$FlatMapMain:430
onNext N reactor.core.publisher.MonoFlatMapMany$FlatMapManyInner:251
request N reactor.core.publisher.Operators$ScalarSubscription:2570
onSubscribeInner N reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain:150
onSubscribe N reactor.core.publisher.MonoFlatMapMany$FlatMapManyInner:246
trySubscribeScalarMap N reactor.core.publisher.FluxFlatMap:193
subscribeOrReturn N reactor.core.publisher.MonoFlatMapMany:49
subscribe N reactor.core.publisher.Flux:8833
onNext N reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain:196
request N reactor.core.publisher.Operators$ScalarSubscription:2570
onSubscribe N reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain:141
subscribe N reactor.core.publisher.MonoJust:55
subscribe N reactor.core.publisher.MonoDeferContextual:55
subscribe N reactor.core.publisher.InternalMonoOperator:76
subscribe N reactor.core.publisher.MonoUsing:102
subscribe N reactor.core.publisher.Mono:4576
subscribeWith N reactor.core.publisher.Mono:4642
subscribe N reactor.core.publisher.Mono:4542
subscribe N reactor.core.publisher.Mono:4478
subscribe N reactor.core.publisher.Mono:4450
doFlux N com.linbit.linstor.api.rest.v1.RequestHelper:345
clone N com.linbit.linstor.api.rest.v1.ResourceDefinitions:394
invoke N jdk.internal.reflect.DirectMethodHandleAccessor:103
invoke N java.lang.reflect.Method:580
lambda$static$0 N org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory:52
run N org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1:146
invoke N org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher:189
doDispatch N org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$VoidOutInvoker:159
dispatch N org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher:93
invoke N org.glassfish.jersey.server.model.ResourceMethodInvoker:478
apply N org.glassfish.jersey.server.model.ResourceMethodInvoker:400
apply N org.glassfish.jersey.server.model.ResourceMethodInvoker:81
run N org.glassfish.jersey.server.ServerRuntime$1:256
call N org.glassfish.jersey.internal.Errors$1:248
call N org.glassfish.jersey.internal.Errors$1:244
process N org.glassfish.jersey.internal.Errors:292
process N org.glassfish.jersey.internal.Errors:274
process N org.glassfish.jersey.internal.Errors:244
runInScope N org.glassfish.jersey.process.internal.RequestScope:265
process N org.glassfish.jersey.server.ServerRuntime:235
handle N org.glassfish.jersey.server.ApplicationHandler:684
service N org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer:356
run N org.glassfish.grizzly.http.server.HttpHandler$1:190
doWork N org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker:535
run N org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker:515
run N java.lang.Thread:1583
END OF ERROR REPORT.
Unclear: I found several notes that enrypted ZFS is unsuable in combination with Linstor, and a bug that is very similar (In the case of using a zfs encrypted pool as the linstor storage backend and linstor as the incus storage backend, incus launch and incus init do not work properly. ยท Issue #2075 ยท lxc/incus ยท GitHub) - although both the incus error and the Linstor error are a little bit different.
Could you please help me?