Hello,
I'm working on a poc to install proxmox on an HPE BL660c blade connected to an iSCSI san using be2iscsi based controller/nics.
I have it mostly installed and working, though I've run into a problem with iscsi. I've been reading through the forums and googling for both proxmox and debian related topics, but so far the solution, or even the root issue, remains unsolved.
Everything works with Ubuntu 22.04 and AlmaLinux 9, so it's isolated to something to do with proxmox.
The SAN network is isolated from the data network, with SAN configuration saved to firmware via BIOS settings and available to the OS via iBFT. As such, the only way to talk to the san is by specifying the be2iscsi controller's interface to iscsiadm.
I'm installing via ipxe boot and using the remote console on the blade to run the text version of the installer.
The debug installer is needed to install the iscsi and multipath packages and then configure things at post install in order for the system to boot and bring everything up. At that point it seems things are working as expected : iscsi sees 2 sessions, and multipath has the two connections in /dev/mapper.
The problem is with iscsi when attempting to add additional iscsi sessions. Any attempt to tell iscsiadm to do anything that requires communication to the san fails with timeout errors. It's acting as though the iscsiadm commands are trying to use the network interface to connect to the san, and not the controller's interface (be2iscsi), even when specifying the interfaces on the command.
My installation method is below in case someone sees something I missed, or did wrong.
I should add I attempted to use the debian netinstall to install debian, without success, as even though I can drop to shell and see /dev/sda, sdb, sdc, and sdd (2 luns, both with 2 connections) the debian installer refuses to recognize these as drives. In this regard, the proxmox debian base works better than debian itself. This has prevented me from installing debian first and then adding the proxmox packages on top of debian as mentioned is needed for certain custom installation scenarios.
Any one have any ideas?
Thanks in advance,
Greg
Installation Method:
1. ipxe is setup to look for custom ipxe file based on mac address
2. ipxe file for proxmox host:
#!ipxe
# Figure out if client is 64-bit capable
cpuid --ext 29 && set arch x86_64 || set arch x86
echo "Booting ProxMox 8.1 (${arch})
# base-url set earlier in boot process -- http://{server}/path/ipxe/ <- trailing slash required
set boot-url ${base-url}proxmox/
set kernel-url ${boot-url}linux26
set initrd-url ${boot-url}initrd
set iso-url ${boot-url}proxmox-ve_8.1-1.iso
imgfree
kernel ${kernel-url} vga=normal video=vesafb:ywrap,mtrr ramdisk_size=16777216 rw initrd=initrd.magic splash=verbose proxtui iscsi_auto debug proxdebug install disk-detect/multipath/enable=true
initrd ${initrd-url}
initrd ${iso-url} /proxmox.iso
boot
3. boot via pxe
4. start install
5. at first pause with prompt, press Ctrl-D to resume
6. do the following steps at the second prompt:
cd /cdrom/debian/proxmox/packages/
dpkg -i libisns0_0.101-0.2+b1_amd64.deb libopeniscsiusr_2.1.8-1_amd64.deb open-iscsi_2.1.8-1_amd64.deb
iscsistart -f
iscsistart -b
# the above uses iBFT to pick up the iSCSI parameters configured via bios in the controller
press Ctrl-D to resume install
7. install proxmox normally, selecting to use desired boot drive ONLY (/dev/sda in my case)
8. when install finishes, at final prompt, do the following steps:
# choose either /target or /mnt to work in
mount /dev/pve/root /mnt
mount -o bind /dev /mnt/dev
mount -o bind /proc /mnt/proc
mount -o bind /sys /mnt/sys
chroot /mnt/ /bin/bash
cd /etc/apt/sources.list.d/
sed -i -e 's/^/#/' ceph.list
sed -i -e 's/^/#/' pve-enterprise.list
cd ..
echo 'deb https://download.proxmox.com/debian/pve bookworm pve-no-subscription' >> sources.list
apt update
# iscsi.initramfs
echo 'ISCSI_AUTO=true' > /etc/iscsi/iscsi.initramfs
# multipath.conf (kludgy, but echo always works)
echo "defaults {" >> /etc/multipath.com
echo " find_multipaths yes" >> /etc/multipath.com
echo "}" >> /etc/multipath.com
echo "" >> /etc/multipath.com
echo "blacklist {" >> /etc/multipath.com
echo "}" >> /etc/multipath.com
apt install multipath-tools multipath-tools-boot
multipath -a /dev/sda
multipath -a /dev/sdb
update-initramfs -u
Press Ctrl-D to exit
9. Reboot
10. When system is up, log in to shell
11. Do the following:
# verify multipath is working as expected
multipath -ll
# verify controller interfaces are listed
iscsiadm -m iface
# verify iscsi sessions are in place on expected interfaces
iscsiadm -m session
# check mounting
mount
# the root file system should be on a /dev/mapper/* device,
# and the /dev/mapper/* should point towards multipath device
# not a single disk (i.e. /dev/sda)
Up to this point it appears everything is working. It is possible to use the system.
The problem is iscsiadm commands to show targets, discover targets, connect sessions, etc all result in timeouts.
iscsiadm --mode discoverydb --type sendtargets --portal {ip of san} -I {see -m iface output for interface} --discover
No new connections can be made, no changes made, which means no adding luns for VMs, and more critically, being unable to add the additional sessions for redundancy (each iscsi interface connects to 4 ports, for a total of 8 connections under multipath).
I'm working on a poc to install proxmox on an HPE BL660c blade connected to an iSCSI san using be2iscsi based controller/nics.
I have it mostly installed and working, though I've run into a problem with iscsi. I've been reading through the forums and googling for both proxmox and debian related topics, but so far the solution, or even the root issue, remains unsolved.
Everything works with Ubuntu 22.04 and AlmaLinux 9, so it's isolated to something to do with proxmox.
The SAN network is isolated from the data network, with SAN configuration saved to firmware via BIOS settings and available to the OS via iBFT. As such, the only way to talk to the san is by specifying the be2iscsi controller's interface to iscsiadm.
I'm installing via ipxe boot and using the remote console on the blade to run the text version of the installer.
The debug installer is needed to install the iscsi and multipath packages and then configure things at post install in order for the system to boot and bring everything up. At that point it seems things are working as expected : iscsi sees 2 sessions, and multipath has the two connections in /dev/mapper.
The problem is with iscsi when attempting to add additional iscsi sessions. Any attempt to tell iscsiadm to do anything that requires communication to the san fails with timeout errors. It's acting as though the iscsiadm commands are trying to use the network interface to connect to the san, and not the controller's interface (be2iscsi), even when specifying the interfaces on the command.
My installation method is below in case someone sees something I missed, or did wrong.
I should add I attempted to use the debian netinstall to install debian, without success, as even though I can drop to shell and see /dev/sda, sdb, sdc, and sdd (2 luns, both with 2 connections) the debian installer refuses to recognize these as drives. In this regard, the proxmox debian base works better than debian itself. This has prevented me from installing debian first and then adding the proxmox packages on top of debian as mentioned is needed for certain custom installation scenarios.
Any one have any ideas?
Thanks in advance,
Greg
Installation Method:
1. ipxe is setup to look for custom ipxe file based on mac address
2. ipxe file for proxmox host:
#!ipxe
# Figure out if client is 64-bit capable
cpuid --ext 29 && set arch x86_64 || set arch x86
echo "Booting ProxMox 8.1 (${arch})
# base-url set earlier in boot process -- http://{server}/path/ipxe/ <- trailing slash required
set boot-url ${base-url}proxmox/
set kernel-url ${boot-url}linux26
set initrd-url ${boot-url}initrd
set iso-url ${boot-url}proxmox-ve_8.1-1.iso
imgfree
kernel ${kernel-url} vga=normal video=vesafb:ywrap,mtrr ramdisk_size=16777216 rw initrd=initrd.magic splash=verbose proxtui iscsi_auto debug proxdebug install disk-detect/multipath/enable=true
initrd ${initrd-url}
initrd ${iso-url} /proxmox.iso
boot
3. boot via pxe
4. start install
5. at first pause with prompt, press Ctrl-D to resume
6. do the following steps at the second prompt:
cd /cdrom/debian/proxmox/packages/
dpkg -i libisns0_0.101-0.2+b1_amd64.deb libopeniscsiusr_2.1.8-1_amd64.deb open-iscsi_2.1.8-1_amd64.deb
iscsistart -f
iscsistart -b
# the above uses iBFT to pick up the iSCSI parameters configured via bios in the controller
press Ctrl-D to resume install
7. install proxmox normally, selecting to use desired boot drive ONLY (/dev/sda in my case)
8. when install finishes, at final prompt, do the following steps:
# choose either /target or /mnt to work in
mount /dev/pve/root /mnt
mount -o bind /dev /mnt/dev
mount -o bind /proc /mnt/proc
mount -o bind /sys /mnt/sys
chroot /mnt/ /bin/bash
cd /etc/apt/sources.list.d/
sed -i -e 's/^/#/' ceph.list
sed -i -e 's/^/#/' pve-enterprise.list
cd ..
echo 'deb https://download.proxmox.com/debian/pve bookworm pve-no-subscription' >> sources.list
apt update
# iscsi.initramfs
echo 'ISCSI_AUTO=true' > /etc/iscsi/iscsi.initramfs
# multipath.conf (kludgy, but echo always works)
echo "defaults {" >> /etc/multipath.com
echo " find_multipaths yes" >> /etc/multipath.com
echo "}" >> /etc/multipath.com
echo "" >> /etc/multipath.com
echo "blacklist {" >> /etc/multipath.com
echo "}" >> /etc/multipath.com
apt install multipath-tools multipath-tools-boot
multipath -a /dev/sda
multipath -a /dev/sdb
update-initramfs -u
Press Ctrl-D to exit
9. Reboot
10. When system is up, log in to shell
11. Do the following:
# verify multipath is working as expected
multipath -ll
# verify controller interfaces are listed
iscsiadm -m iface
# verify iscsi sessions are in place on expected interfaces
iscsiadm -m session
# check mounting
mount
# the root file system should be on a /dev/mapper/* device,
# and the /dev/mapper/* should point towards multipath device
# not a single disk (i.e. /dev/sda)
Up to this point it appears everything is working. It is possible to use the system.
The problem is iscsiadm commands to show targets, discover targets, connect sessions, etc all result in timeouts.
iscsiadm --mode discoverydb --type sendtargets --portal {ip of san} -I {see -m iface output for interface} --discover
No new connections can be made, no changes made, which means no adding luns for VMs, and more critically, being unable to add the additional sessions for redundancy (each iscsi interface connects to 4 ports, for a total of 8 connections under multipath).
Last edited: