On 2013–12–21 John Ferlan wrote:
On 12/17/2013 07:13 PM, Marco wrote:
> Hi!
>
> I'm new to libvirt and face problems connecting to an iSCSI target.
> What I intend to do is to connect libvirt (I tried virt-manager and
> virsh) to an iSCSI target and then boot from the LUNs which contain
> the VMs.
>
> I followed the documentation¹ but got stuck at section 12.1.5.4.3.
>
> 1)
> virsh pool-define-as \
> --name foo \
> --type iscsi \
> --source-host vmhost \
> --source-dev iqn.2013-11.vmhost:vmpool \
> --target /dev/disk/by-path
>
> 2)
> virsh pool-start foo
> error: Failed to start pool foo
> error: internal error: cannot find session
>
> virsh -c qemu:///system pool-start foo
> error: Failed to start pool foo
> error: internal error: cannot find session
>
I'm assuming 'vmhost' is actually some valid IP Address/Name that you're
just using here to hide from the world your actual iSCSI tgt server.
Don't forget that the 'source-host' may be listed as
'host1.example.com'; however, the iqn has 'com.example.host1'. IOW -
reversed...
It's a test setup and I don't use a FQDN.
I did, indeed.
There's an example there of output that works for me.
For me it does not.
Use virsh pool-dumpxml <pool>
to view the XML...
Here's my XML which is directly taken from the manual. I only
changed the host name to “freenas” and the device path.
<pool type='iscsi'>
<name>virtimages</name>
<uuid>347feb68-7e11-4f2b-ba82-ada027296fb0</uuid>
<capacity unit='bytes'>0</capacity>
<allocation unit='bytes'>0</allocation>
<available unit='bytes'>0</available>
<source>
<host name='freenas'/>
<device path='iqn.2013-11.freenas:vmpool'/>
</source>
<target>
<path>/dev/disk/by-path</path>
<permissions>
<mode>0755</mode>
<owner>-1</owner>
<group>-1</group>
</permissions>
</target>
</pool>
Also, do you need to authenticate to the iSCSI target?
Not yet. To rule out authentication issues for testing I turned off
authentication.
The iscsiadm will use '/etc/iscsi/iscsid.conf'. See the
node.session.auth.{authmethod | username | password} fields, so
while iscsiadm may work, when libvirt goes to connect it fails.
Thanks for pointing that out, but I don't think it's the case here.
Looking at the output in the system messages
log may help (for my f19 /var/log/messages).
The log of a failed virsh pool-start virtimages can be found here
http://dpaste.com/1518444/
Most notable is I assume:
libvirtd[8028]: internal error: Child process (/usr/bin/iscsiadm --mode session)
unexpected exit status 21
From “man iscsiadm”:
21 ISCSI_ERR_NO_OBJS_FOUND - no records/targets/sessions/portals
found to execute operation on.
If I run “iscsiadm --mode session” in the console, I indeed get and
error:
iscsiadm: No active sessions.
Do I need to create a session or setup libvert to do that before
iSCSI is supposed to work?
The log shows that libvirt is able to connect to the target:
iscsid: Connection85:0 to [target: iqn.2013-11.freenas:vmpool, portal: 10.0.10.23,3260]
through [iface: libvirt-iface-04d9ea67] is operational now
You may also find if you have selinux enabled as Enforcing there
could
be more configuration that you need (if the iSCSI tgtd is local).
Setting up a label on the file - something I'm not an expert at...
selinux is not used.
Another tool to try is 'iscsi-ls' from package
'libiscsi-utils'
iscsi-ls -s -i iqn.2013-11.vmhost:vmpool \
iscsi://<username>%<password>@<ipAddr>:3260
This succeeds:
iscsi-ls -s -i iqn.2013-11.freenas:vmpool iscsi://freenas
Target:iqn.2013-11.freenas:vmpool Portal:10.0.10.23:3260,1
Lun:0 Type:DIRECT_ACCESS (Size:9G)
[…]
If you need to authenticate, then set up a secret to the iSCSI
server,
see
http://libvirt.org/formatsecret.html for an example.
If the simple setup is working I'll add authentication but for the
moment I try to keep is as simple as possible.
To rule out issues with the iSCSI target I manually tested using
“iscsiadm” and VirtualBox which both succeeded without any session
errors.
Thanks for your quick response.
Best regards
Marco