I2O on Linux - FAQ
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.
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
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.
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.
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
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?).
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"
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!
Note: Recent versions of the Linux kernel will create the control device node automatically via "udev" when the i2o_config module is loaded. In this situation, the standard path for the device file is "/dev/i2octl". Some Linux distrubutions (e.g. Debian and Gentoo) come with a version of the raidutils package that has already been patched to use this path, but on other systems you may need to alter the udev configuration files so that the device node is created in the location that the raidutils binaries are expecting.
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?
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:
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.
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.
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.
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.
The problem is caused by parted, which has a problem with the partition table.
Yes with the patch available in the download section all Zero-Channel-Controllers are working.
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 > 22.214.171.124. 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".
Please look into the download section to find the link to the technical I2O documents.
THE SOFTWARE AND INFORMATION ON THIS SITE IS PROVIDED BY SHADOW CONNECT "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SHADOW CONNECT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE OR INFORMATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
last updated: 2008-02-17