Proxmox ISCSI installation
iSCSI is a protocol that can communicate SCSI's commands over the network. The main advantage is that you don't need any hard drives for getting a fully functional server. This can be also realized by using a real Fiber Channel SAN, but it's a lot more expensive. A diskless server will boot over the network, acquiring its disk image from the SAN. Today, a lot of systems support iSCSI but they don't really support iSCSI install and boot (only VMWare supports that). However, you can making this work on some Linux systems using a few tricks explained here.
What do you need?
- A functional iSCSI target (OpenFiler can be a good solution)
- Your diskless server must support iSCSI boot (if not, you can use iPXE for that)
- A DHCP server for network booting
You can find some tutorials about iPXE (formerly gPXE) on the gPXE wiki.
Here we go!
- Install a clean Debian on a physical machine or into a VM. Using a VM is not a problem because we only need this for formating and installing another Debian on the iSCSI target.
- Install open-iscsi
aptitude install open-iscsi
This utility manages to attach an iSCSI target to the session.
- Attach the iSCSI target
iscsiadm --mode node --targetname <IQN> -p <IP> --login
You should now see your iSCSI target into /dev/sdX.
iscsiadm --mode node --targetname iqn.2006-01.openfiler.com:tsn.dcb5e30d5a -p 22.214.171.124 --login
- Create all partitions you need for your future Debian installation (you can use gpart for example).
- The first partition must begin at the 2048 sector !!! If don't, you will not be able to install Grub on the iSCSI target!
- Create a dir under /mnt (for example /mnt/debian) for mounting
- Mount the iSCSI target's main partition on this dir
mount /dev/sdX1 /mnt/debian
- Install debootstrap
aptitude install debootstrap
This utility manages to install a light debian install by using deb packages in the target.
- Install debian squeeze on /mnt/debian by using debootstrap
debootstrap squeeze /mnt/debian http://ftp.us.debian.org/debian
You can also install another debian like lenny, but squeeze supports iSCSI better (you need to do more tricks on Lenny for having a functional iSCSI boot). This can take some time (depending on your connection).
You should now have a right lightweight Squeeze install on the main partition
- Mount this system's dirs - this is necessary for preparing the new squeeze installation for iSCSI booting.
mount -o bind /dev /mnt/debian/dev mount -o bind /sys /mnt/debian/sys mount -o bind /proc /mnt/debian/proc
- Use now this Debian by using chroot (by a sn user who can change the root dir by another dir).
You are now logged on to your new system
- Install Grub
aptitude install grub
It should install Grub into the MBR of your iSCSI target. If not, you can use grub-install /dev/sdX
- Add the Proxmox repository and update
echo "deb http://download.proxmox.com/debian lenny pve" >> /etc/apt/sources.list wget -O- "http://download.proxmox.com/debian/key.asc" | apt-key add - aptitude update
- Add the loopback interface (if not, you will not be able to use nfs-common which is needed by the pve-manager). For this, edit:
and append this to it:
auto lo iface lo inet loopback
- Install the proxmox 2.6.32-4 kernel and headers (the 2.6.35 seems to not work with iSCSI booting)
aptitude install pve-kernel-2.6.32-4-pve pve-headers-2.6.32-4-pve
This action should update grub automatically.
- Install open-iscsi for making this installation fully supports iSCSI
aptitude install open-iscsi
- Use open-iscsi to manage iBFT information (iBFT are information made by iSCSI boot firmware like iPXE for the system)
echo "ISCSI_AUTO=true" > /etc/iscsi/iscsi.initramfs
By using this, you don't have to use the iSCSI IQN and the iSCSI Target's IP to access the system; only iSCSI boot firmware needs this.
- Install initramfs-tools and update initramfs
aptitude install initramfs-tools update-initramfs -u
- Create a root password
Your new Debian system should now boot over iSCSI! Once booted you can install Proxmox by simply using:
aptitude install proxmox-ve-2.6.32 ntp ssh lvm2