Captain Jack

pageicon 星期五 十一月 21, 2008

iSCSI boot x86

iSCSI Boot for x86 Systems


The iSCSI boot feature initializes an operating system from a remote
location, such as a storage disk array, over the network. iSCSI boot is
typically loaded onto an initiator, or diskless client, while the hard
disk resides on a target attached to the network. Because iSCSI boot
uses standard Ethernet-based infastructure, data, storage, and
networking traffic can be consolidated on a standard server's
networking system.


Remote booting over a storage area network provides the following advantages:



  • Server consolidation and virtualization reduces equipment costs.
    For example, diskless servers that can boot from an OS image over the
    network are important for rack-mounted servers, or blade servers in
    high-density clusters.

  • Simplified and centralized management reduces management costs.
    For example, provisioning new servers and managing and maintaining
    existing servers is simplified when installations, upgrades, and fixes
    are performed from a central location.

  • Diversified datacenter locations reduces the risk of data loss in the case of a disaster.
    For example, you can strategically separate mirrored databases, because
    iSCSI boot utilizes a standard Ethernet-based infastructure. This
    provides protection from regional disasters, such as earthquakes,
    hurricanes, and tornados.

  • Improved availability. For example, recovery from a server failure is simplified when the spare server is booted and provisioned over the network.


Using iSCSI boot from an x86 system is different from booting an x86 system over the network using GRUB:



  • A GRUB based network boot requires a DHCP server that is
    configured for PXE clients. This is not necessary for iSCSI boot,
    however using a DHCP server with iSCSI boot is an option.

  • PXE requires a boot server to provide the miniroot/ramdisk. This is not necessary for iSCSI boot.



PSARC Cases


PSARC 2008/427 iSCSI Boot



This project is to enable Solaris to boot off iSCSI luns via regular network adapters. Different approaches, iBFT/OBP, are adopted to implement this feature on x86/sparc platforms. This case supersedes PSARC/2007/450, iSCSI Software boot.

On x86 platform, iSCSI boot depends on NIC's firmware to implement its own iSCSI initiator and to support iBFT to pass boot info to OS. That means the sulution on x86 needs dedicated hardware/firmware. Currently Intel 1G/10G Pro. series NICs support this feature along with Broadcom in their high-end NICs.

On sparc platform, iSCSI boot depends on OBP to implement its own iSCSI stack to connect to the iSCSI target, load boot archive, and pass the boot info to Solaris OS via standard OBP properties. A suite of standard properties need to be defined in OBP.

iSCSI disk will still be incapable of being a dump device with this project.


Boot process on x86 (to support iBFT)



  1. Host is powered up/reset and the iBF (iSCSI Boot Firmware) is loaded

  2. iBF initializes and connects to the iSCSI target, presents iSCSI disk to BIOS

  3. BIOS uses INT 13 to load MBR and OS boot sectors from the iSCSI disk

  4. OS boot loader (grub) takes over the control from BIOS

  5. Grub loads Solaris kernel/ramdisk

  6. Grub transfers control to Solaris kernel

  7. Kernel scans iBFT, configures the boot NIC, TCP/IP and iSCSI initiator to enumerate the boot disk, and then mount the rootfs

  8. Kernel loads the rest of drivers/conf files as booting from a local disk


Boot process on sparc



  1. Kernel knows iSCSI boot information from OBP, others are the very same with x86 case


PSARC 2008/640 iSCSI With DHCP


Hacking dhcp agent to make it aware of the activity in iSCSI


IBFT


iSCSI Boot Firmware Table
IBFt is a method of communicating boot parameters.
A system's BIOS based iSCSI boot implementation fills in parameters.
This may also be done by a network loaded iSCSI boot loader, such as etherboot.
The operating system consumes the parameters.


So far, Intel and Broadcom implement iBFT, from publicly available information, and only on selected NICs.
Nvidia was working on support, but stopped, partly due to lack of request.
Linux and Windows support boot from iBFT NICs.


Supported Broadcom NICS: BCM5721, BCM5755, BCM5755M, BCM5754,
BCM5754M, BCM5714, BCM5714S, BCM5715, BCM5715S, BCM5780, BCM5780S,
BCM5756, BCM5722


Supported Intel NICS


Implementation in Solaris would be relatively simple. Changes
would be to read iBFT table at boot in the iSCSI driver.
There are probably issues with ensuring that networking is up
sufficiently for Solaris to mount the root device, that we'd have to
solve.


评论:

iSCSI boot does not require a NIC to have dedicated firmware with an initiator. Any PXE capable NIC can iSCSI boot by using bootstraps to pass the required info into iBFT. Both gPXE and solutions like Double-Take's netBoot/i can accomplish this.

发表于 Steve Marfisi 在 2008年11月21日, 06:10 上午 GMT-08:00 #

Is the following statement still valid?

the only problem is that currently there is no way to boot after installation.

发表于 142.46.205.19 在 2009年04月27日, 08:23 上午 GMT-08:00 #

发表一条评论:
  • HTML语法: 禁用