I2O on Linux - FAQ

引用:
What is the I2O subsystem in Linux

Because only a few people know how to use the I2O subsystem on Linux, here is a short description of it.

The I2O subsystem is on the same level like SCSI. But unlike SCSI the interface to access the disks is specified. From the OS view, you only have to write one driver, and that would work with every I2O compliant controllers. So the "driver" for accessing the disks is in the firmware of the controller.

This is the reason, why you only have one menu option I2O support, and not many manufacturer specific drivers.
top

How do i configure the kernel to use the I2O subsystem on Linux

To configure I2O in the 2.6 kernel you have to enable the following modules:

Device Drivers  --->
  I2O device support  --->
     <M> I2O support
     <M>   I2O PCI support
     <M>   I2O Block OSM
     <M>   I2O SCSI OSM
     <M>   I2O /proc support

top

What are the various modules for?

I2O support (i2o_core):
This is always needed to access your I2O hardware. It is the main module, which provides low level access to the I2O hardware.

I2O Configuration support (i2o_config)
This is only needed, if you want to manage your I2O card. In case of an Adaptec RAID controller, you need the module to use the raidutils to get access to your controller.

I2O Block OSM (i2o_block):
This is the disk driver, which let you access your RAID array, or if you don't have a RAID array configured to the single disks. You only have access to the disks through this driver!

I2O SCSI OSM (i2o_scsi):
This driver let you direct access to the disks. NEVER use this driver to mount a filesystem or so. If you do so, you could destroy your data. Only use this driver, to monitor your disks for failure. You could use the smartmontools to do so.

I2O /proc support (i2o_proc):
This driver provides some information for debugging purposes.
top

The disks are found, but when i try to mount /dev/i2o/hda1 the system hung up?

There are some problems with the I2O SCSI OSM (i2o_scsi) which aren't resolved yet. Please try to recompile the kernel without the i2o_scsi module.

top

How could i access my RAID array?

After the i2o_block module is loaded, you could access the drive through /dev/i2o/hda for the first disk (/dev/i2o/hda/disk if using devfs), /dev/i2o/hdb for the second disk (/dev/i2o/hdb/disk if using devfs), and so on. The partitions are handled like with IDE or SCSI drives. /dev/i2o/hda1 is the first partition (/dev/i2o/hda/part1 if using devfs) on the first disk. If you don't already have the /dev/i2o/hdxx device nodes, you could create them with:

mknod /dev/i2o/hda b 80 0
mknod /dev/i2o/hda1 b 80 1
mknod /dev/i2o/hda2 b 80 2
...
mknod /dev/i2o/hdb b 80 16
mknod /dev/i2o/hdb1 b 80 17
mknod /dev/i2o/hdb2 b 80 18
...

top

My I2O controller is found, but i'm unable to access /dev/sda

The I2O subsystem has it's own block devices (see also How could i access my RAID array? and What are the various modules for?).

top

I've got kernel oopses under high load if using the I2O subsystem

This is probably caused if the dpt_i2o driver is already loaded. To solve it disable the dpt_i2o driver completly and retry again. If the problems still persists, please send me the following:

    * output of the panic (you could use netconsole to log it on a second machine).
    * output of "lspci -vn"
    * output of "dmesg"

top

How could i use dptutils/raidutils with the I2O subsystem? They don't work!

You couldn't use the dptutils provided from Adaptec directly, because they only work with the dpt_i2o driver. But under the download section you could get a slightly modified version of the dptutils (raidutils), which use the i2o_config module to connect to the controller. The software communicates with the controller over a char-device /dev/i2o/ctl. If the device node doesn't already exits, you could create one with:

mknod /dev/i2o/ctl c 10 166

Note: If you are using the dpt_i2o driver, the device nodes have different major/minor numbers!

Also be sure no raideng processes are running. The raideng process is started automatically by raidutil. See also Are the raidutils from this site compatible with the dpt_i2o module?

top

I've got a "Error: Engine connect failed: COMPATIBILITY number" error when using the raidutils, what should i do?

    * ensure that the device node /dev/i2o/ctl exists, if not create one with:

      mknod /dev/i2o/ctl c 10 166

    * ensure that the i2o_config kernel module is loaded, if not load it with:

      modprobe i2o_config

    * ensure that you enabled the i2octls option in the i2o_config kernel module:

      <M>   I2O Configuration support
      
  •      Enable ioctls (OBSOLETE)

        * be sure no "raideng" processes are running.

    top

    How do i compile the raidutils?

    To work with the I2O subsystem in 2.6.x kernel you first have to install the 2.6.x kernel-sources with the i2o-passthru.patch applied (already included in > 2.6.7). Also verify that /usr/include/linux/i2o-dev.h contains the following line:

      #define I2OPASSTHRU             _IOR(I2O_MAGIC_NUMBER,12,struct i2o_cmd_passthru)

    If this is not the case, you could copy the kernel over from /usr/src/linux/include/linux/i2o-dev.h. Now you could unpack the raidutils archive and start compiling. Normally this is:

      ./configure
      make
      make install

    top

    Are the raidutils from this site compatible with the dpt_i2o module?

    Yes. If you have loaded the dpt_i2o the raidutils will work too. You need appropriate device nodes /dev/dptiX. If these don't exist, you could create them by your own.

      mknod /dev/dpti0 c 151 0
      mknod /dev/dpti1 c 151 1
      ...

    You have the create a device node for each controller you have installed.

    top

    Don't i need SCSI_DPT_I2O (dpt_i2o) driver?

    The dpt_i2o driver is supported by Adaptec itself, and don't use the I2O subsystem in Linux. It uses the SCSI subsystem and "simulates" an SCSI host adapter. You can only use the I2O subsystem OR the dpt_i2o driver, not both at the same time.

    top

    Is it possible to move from 2.4.x / 2.6.x dpt_i2o driver to 2.6.x I2O subsystem and back?

    Yes. The only thing to notice is the different device node naming for dpt_i2o (/dev/sdxx) and the I2O subsystem (/dev/i2o/hdxx).

    Note: One user have reported that moving from dpt_i2o to i2o_block has caused lockups and kernel panics if he uses LVM and XFS on top of it. Other filesystems on top of LVM and XFS directly on the partition worked fine.

    top

    Is it possible to install Fedora Core 2 on a I2O RAID array?

    It's possible to install Fedora Core 2 directly on a I2O RAID array. You could use this HOWTO, until a working driver disk is available.

    top

    When installing Fedora Core 3 on a I2O disk it fails with an error message "Assertion (sectors <=63) at disk_dos.c"

    The problem is caused by parted, which has a problem with the partition table.

    top

    Does the Adaptec Zero-Channel-Controllers work with I2O subsystem in Linux

    Yes with the patch available in the download section all Zero-Channel-Controllers are working.

    top

    Promise SX6000 is not recognized by the I2O subsystem. What could i do?

    Some users have reported problems getting the Promise SX6000 to run with the I2O subsystem. It was caused by a wrong PCI class in firmware > 1.20.0.0. You have to use at I2O subsystem version >= 1.247 to get the Promise controller working. Also check that the BIOS setting of the controller stands on "Other".

    top

    Where can i find technical documentation for I2O?

    Please look into the download section to find the link to the technical I2O documents.

    top