536 lines
32 KiB
HTML
536 lines
32 KiB
HTML
|
|
||
|
|
||
|
<!DOCTYPE html>
|
||
|
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||
|
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||
|
<head>
|
||
|
<meta charset="utf-8">
|
||
|
|
||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
|
|
||
|
<title>iSCSI and Anaconda — Anaconda 23.15 documentation</title>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<link rel="top" title="Anaconda 23.15 documentation" href="index.html"/>
|
||
|
<link rel="next" title="Multipath and Anaconda" href="multipath.html"/>
|
||
|
<link rel="prev" title="Brief description of DriverDisc version 3" href="driverdisc.html"/>
|
||
|
|
||
|
|
||
|
<script src="_static/js/modernizr.min.js"></script>
|
||
|
|
||
|
</head>
|
||
|
|
||
|
<body class="wy-body-for-nav" role="document">
|
||
|
|
||
|
<div class="wy-grid-for-nav">
|
||
|
|
||
|
|
||
|
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||
|
<div class="wy-side-nav-search">
|
||
|
|
||
|
|
||
|
|
||
|
<a href="index.html" class="icon icon-home"> Anaconda
|
||
|
|
||
|
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
<div role="search">
|
||
|
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
||
|
<input type="text" name="q" placeholder="Search docs" />
|
||
|
<input type="hidden" name="check_keywords" value="yes" />
|
||
|
<input type="hidden" name="area" value="default" />
|
||
|
</form>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
</div>
|
||
|
|
||
|
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||
|
|
||
|
|
||
|
|
||
|
<ul class="current">
|
||
|
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction to Anaconda</a></li>
|
||
|
<li class="toctree-l1"><a class="reference internal" href="boot-options.html">Anaconda Boot Options</a><ul>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="boot-options.html#installation-source">Installation Source</a><ul>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-repo">inst.repo</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-stage2">inst.stage2</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-dd">inst.dd</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-multilib">inst.multilib</a></li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="boot-options.html#kickstart">Kickstart</a><ul>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-ks">inst.ks</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-ks-sendmac">inst.ks.sendmac</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-ks-sendsn">inst.ks.sendsn</a></li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="boot-options.html#network-options">Network Options</a><ul>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#ip">ip</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#nameserver">nameserver</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#bootdev">bootdev</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#ifname">ifname</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-dhcpclass">inst.dhcpclass</a></li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="boot-options.html#console-display-options">Console / Display Options</a><ul>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#console">console</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-lang">inst.lang</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-geoloc">inst.geoloc</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-keymap">inst.keymap</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-cmdline">inst.cmdline</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-graphical">inst.graphical</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-text">inst.text</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-resolution">inst.resolution</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-vnc">inst.vnc</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-vncpassword">inst.vncpassword</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-vncconnect">inst.vncconnect</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-headless">inst.headless</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-xdriver">inst.xdriver</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-usefbx">inst.usefbx</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-sshd">inst.sshd</a></li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="boot-options.html#debugging-and-troubleshooting">Debugging and Troubleshooting</a><ul>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-rescue">inst.rescue</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-updates">inst.updates</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-loglevel">inst.loglevel</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-syslog">inst.syslog</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-virtiolog">inst.virtiolog</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-zram">inst.zram</a></li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="boot-options.html#deprecated-options">Deprecated Options</a><ul>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#method">method</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#repo-nfsiso">repo=nfsiso:...</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#dns">dns</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#netmask-gateway-hostname">netmask, gateway, hostname</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#ip-bootif">ip=bootif</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#ksdevice">ksdevice</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#blacklist-nofirewire">blacklist, nofirewire</a></li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="boot-options.html#removed-options">Removed Options</a><ul>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#askmethod-asknetwork">askmethod, asknetwork</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#id5">serial</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#updates">updates</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#essid-wepkey-wpakey">essid, wepkey, wpakey</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#ethtool">ethtool</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#gdb">gdb</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#inst-mediacheck">inst.mediacheck</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#ks-floppy">ks=floppy</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#display">display</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#utf8">utf8</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#noipv6">noipv6</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="boot-options.html#upgradeany">upgradeany</a></li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
<li class="toctree-l1"><a class="reference internal" href="kickstart.html">Anaconda Kickstart Documentation</a><ul>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="kickstart.html#pwpolicy">pwpolicy</a></li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
<li class="toctree-l1"><a class="reference internal" href="commit-log.html">Rules for commit messages</a></li>
|
||
|
<li class="toctree-l1"><a class="reference internal" href="driverdisc.html">Brief description of DriverDisc version 3</a><ul>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="driverdisc.html#devices-which-can-contain-dds">Devices which can contain DDs</a></li>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="driverdisc.html#what-can-be-updated-using-dds">What can be updated using DDs?</a></li>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="driverdisc.html#selecting-dd-manually">Selecting DD manually</a></li>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="driverdisc.html#automatic-driverdisc-detection">Automatic DriverDisc detection</a></li>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="driverdisc.html#ddv3-structure">DDv3 structure</a></li>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="driverdisc.html#initrd-overlay-driverdisc-image">Initrd overlay driverdisc image</a></li>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="driverdisc.html#firmware-and-module-update">Firmware and module update</a></li>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="driverdisc.html#package-installation">Package installation</a></li>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="driverdisc.html#summary">Summary</a></li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
<li class="toctree-l1 current"><a class="current reference internal" href="">iSCSI and Anaconda</a><ul>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="#introduction">Introduction</a></li>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="#what-is-expected-from-anaconda">What is expected from Anaconda</a></li>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="#how-anaconda-handles-iscsi">How Anaconda handles iscsi</a></li>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="#libiscsi">Libiscsi</a></li>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="#debugging-iscsi-bugs">Debugging iSCSI bugs</a></li>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="#future-of-iscsi-in-anaconda">Future of iSCSI in Anaconda</a></li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
<li class="toctree-l1"><a class="reference internal" href="multipath.html">Multipath and Anaconda</a><ul>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="multipath.html#introduction">Introduction</a></li>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="multipath.html#what-is-expected-from-anaconda">What is expected from Anaconda</a></li>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="multipath.html#how-anaconda-handles-multipath">How Anaconda handles multipath</a></li>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="multipath.html#debugging-multipath-bugs">Debugging multipath bugs</a></li>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="multipath.html#future-of-multipath-in-anaconda">Future of multipath in Anaconda</a></li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
<li class="toctree-l1"><a class="reference internal" href="modules.html">pyanaconda</a><ul>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="pyanaconda.html">pyanaconda package</a><ul>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#subpackages">Subpackages</a><ul>
|
||
|
<li class="toctree-l4"><a class="reference internal" href="pyanaconda.installclasses.html">pyanaconda.installclasses package</a></li>
|
||
|
<li class="toctree-l4"><a class="reference internal" href="pyanaconda.isys.html">pyanaconda.isys package</a></li>
|
||
|
<li class="toctree-l4"><a class="reference internal" href="pyanaconda.packaging.html">pyanaconda.packaging package</a></li>
|
||
|
<li class="toctree-l4"><a class="reference internal" href="pyanaconda.ui.html">pyanaconda.ui package</a></li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#submodules">Submodules</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.addons">pyanaconda.addons module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.anaconda">pyanaconda.anaconda module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.anaconda_argparse">pyanaconda.anaconda_argparse module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.anaconda_log">pyanaconda.anaconda_log module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.bootloader">pyanaconda.bootloader module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.constants">pyanaconda.constants module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.constants_text">pyanaconda.constants_text module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.desktop">pyanaconda.desktop module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.errors">pyanaconda.errors module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.exception">pyanaconda.exception module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.flags">pyanaconda.flags module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.geoloc">pyanaconda.geoloc module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.i18n">pyanaconda.i18n module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.ihelp">pyanaconda.ihelp module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.image">pyanaconda.image module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.install">pyanaconda.install module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.installclass">pyanaconda.installclass module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.installinterfacebase">pyanaconda.installinterfacebase module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.iutil">pyanaconda.iutil module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.kexec">pyanaconda.kexec module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.keyboard">pyanaconda.keyboard module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.kickstart">pyanaconda.kickstart module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.localization">pyanaconda.localization module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.network">pyanaconda.network module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.nm">pyanaconda.nm module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.ntp">pyanaconda.ntp module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.orderedset">pyanaconda.orderedset module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.product">pyanaconda.product module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.progress">pyanaconda.progress module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.pwpolicy">pyanaconda.pwpolicy module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.queuefactory">pyanaconda.queuefactory module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.regexes">pyanaconda.regexes module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.rescue">pyanaconda.rescue module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.safe_dbus">pyanaconda.safe_dbus module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.screensaver">pyanaconda.screensaver module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.simpleconfig">pyanaconda.simpleconfig module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.startup_utils">pyanaconda.startup_utils module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.storage_utils">pyanaconda.storage_utils module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.text">pyanaconda.text module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.threads">pyanaconda.threads module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.timezone">pyanaconda.timezone module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.users">pyanaconda.users module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.version">pyanaconda.version module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda.vnc">pyanaconda.vnc module</a></li>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="pyanaconda.html#module-pyanaconda">Module contents</a></li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
</ul>
|
||
|
|
||
|
|
||
|
|
||
|
</div>
|
||
|
|
||
|
</nav>
|
||
|
|
||
|
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||
|
|
||
|
|
||
|
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
||
|
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||
|
<a href="index.html">Anaconda</a>
|
||
|
</nav>
|
||
|
|
||
|
|
||
|
|
||
|
<div class="wy-nav-content">
|
||
|
<div class="rst-content">
|
||
|
<div role="navigation" aria-label="breadcrumbs navigation">
|
||
|
<ul class="wy-breadcrumbs">
|
||
|
<li><a href="index.html">Docs</a> »</li>
|
||
|
|
||
|
<li>iSCSI and Anaconda</li>
|
||
|
<li class="wy-breadcrumbs-aside">
|
||
|
|
||
|
|
||
|
<a href="_sources/iscsi.txt" rel="nofollow"> View page source</a>
|
||
|
|
||
|
|
||
|
</li>
|
||
|
</ul>
|
||
|
<hr/>
|
||
|
</div>
|
||
|
<div role="main" class="document">
|
||
|
|
||
|
<div class="section" id="iscsi-and-anaconda">
|
||
|
<h1>iSCSI and Anaconda<a class="headerlink" href="#iscsi-and-anaconda" title="Permalink to this headline">¶</a></h1>
|
||
|
<table class="docutils field-list" frame="void" rules="none">
|
||
|
<col class="field-name" />
|
||
|
<col class="field-body" />
|
||
|
<tbody valign="top">
|
||
|
<tr class="field-odd field"><th class="field-name">Authors:</th><td class="field-body">Ales Kozumplik <<a class="reference external" href="mailto:akozumpl%40redhat.com">akozumpl<span>@</span>redhat<span>.</span>com</a>></td>
|
||
|
</tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
<div class="section" id="introduction">
|
||
|
<h2>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline">¶</a></h2>
|
||
|
<p>iSCSI device is a SCSI device connected to your computer via a TCP/IP
|
||
|
network. The communication can be handled either in hardware or in software, or
|
||
|
as a hybrid — part software, part hardware.</p>
|
||
|
<p>The terminology:</p>
|
||
|
<ul class="simple">
|
||
|
<li>‘initiator’, the client in the iscsi connection. The computer we are running
|
||
|
Anaconda on is typically an initiator.</li>
|
||
|
<li>‘target’, the storage device behind the Network. This is where the data is
|
||
|
physically stored and read from. You can turn any Fedora/RHEL machine to a
|
||
|
target (or several) via scsi-target-utils.</li>
|
||
|
<li>‘HBA’ or Host Bus Adapter. A device (PCI card typically) you connect to a
|
||
|
computer. It acts as a NIC and if you configure it properly it transparently
|
||
|
connects to the target when started and all you can see is a block device on
|
||
|
your system.</li>
|
||
|
<li>‘software initiator’ is what you end up with if you emulate most of what HBA is
|
||
|
doing and just use a regular NIC for the iscsi communication. The modern Linux
|
||
|
kernel has a software initiator. To use it, you need the Open-ISCSI software
|
||
|
stack [1, 2] installed. It is known as iscsi-initiator-utils in Fedora/RHEL.</li>
|
||
|
<li>‘partial offload card’. Similar to HBA but needs some support from kernel and
|
||
|
iscsi-initiator-utils. The least pleasant to work with, particularly because
|
||
|
there is no standardized amount of the manual setting that needs to be done
|
||
|
(some connect to the target just like HBAs, some need you to bring their NIC
|
||
|
part up manually etc.). Partial offload cards exist to get better performing
|
||
|
I/O with less processor load than with software initiator.</li>
|
||
|
<li>‘iBFT’ as in ‘Iscsi Boot Firmware Table’. A table in the card’s bios that
|
||
|
contains its network and target settings. This allows the card to configure
|
||
|
itself, connect to a target and boot from it before any operating system or a
|
||
|
bootloader has the chance. We can also read this information from
|
||
|
/sys/firmware/ibft after the system starts and then use it to bring the card
|
||
|
up (again) in Linux.</li>
|
||
|
<li>‘CHAP’ is the authentication used for iSCSI connections. The authentication
|
||
|
can happen during target discovery or target login or both. It can happen in
|
||
|
both directions too: the initiator authenticates itself to the target and the
|
||
|
target is sometimes required to authenticate itself to the initiator.</li>
|
||
|
</ul>
|
||
|
</div>
|
||
|
<div class="section" id="what-is-expected-from-anaconda">
|
||
|
<h2>What is expected from Anaconda<a class="headerlink" href="#what-is-expected-from-anaconda" title="Permalink to this headline">¶</a></h2>
|
||
|
<p>We are expected to:</p>
|
||
|
<ul class="simple">
|
||
|
<li>use an HBA like an ordinary disk. It is usually smart enough to bring itself
|
||
|
up during boot, connect to the target and just act as an ordinary disk.</li>
|
||
|
<li>allow creating new software initiator connections in the UI, both IPv4 and IPv6.</li>
|
||
|
<li>facilitate bringing up iBFT connections for partial offload cards.</li>
|
||
|
<li>install the root and/or /boot filesystems on any iSCSI initiator known to us</li>
|
||
|
<li>remember to install dracut-network if we are booting from an iSCSI initiator that
|
||
|
requires iscsi-initiator-utils in the ramdisk (most of them do)</li>
|
||
|
<li>boot from an iSCSI initiator using dracut, this requires generating an
|
||
|
appropriate set of kernel boot arguments for it [3].</li>
|
||
|
</ul>
|
||
|
</div>
|
||
|
<div class="section" id="how-anaconda-handles-iscsi">
|
||
|
<h2>How Anaconda handles iscsi<a class="headerlink" href="#how-anaconda-handles-iscsi" title="Permalink to this headline">¶</a></h2>
|
||
|
<p>iSCSI comes into play several times while Anaconda does its thing:</p>
|
||
|
<p>In loader, when deciding what NIC we should setup, we check if we have iBFT
|
||
|
information from one of the cards. If we do we set that card up with what we
|
||
|
found in the table, it usually boils down to an IPv4 static or IPv4
|
||
|
DHCP-obtained address. [4][5]</p>
|
||
|
<p>Next, after the main UI startup during filtering (or storage scan, whatever
|
||
|
comes first) we startup the iscsi support code in Anaconda [6]. This currently
|
||
|
involves:
|
||
|
- manually modprobing related kernel modules
|
||
|
- starting the iscsiuio daemon (required by some partial offload cards)
|
||
|
- most importantly, starting the iscsid daemon</p>
|
||
|
<p>All iBFT connections are brought up next by looking at the cards’ iBFT data, if
|
||
|
any. The filtering screen has a feature to add advanced storage devices,
|
||
|
including iSCSI. Both connection types are handled by libiscsi (see below). The
|
||
|
brought up iSCSI devices appear as /dev/sdX and are treated as ordinary block
|
||
|
devices.</p>
|
||
|
<p>When DeviceTree scans all the block devices it uses the udev data (particularly
|
||
|
the ID_BUS and ID_PATH keys) to decide if the device is an iscsi disk. If it is,
|
||
|
it is represented with an iScsiDiskDevice class instance. This helps Anaconda
|
||
|
remember that:</p>
|
||
|
<ul class="simple">
|
||
|
<li>we need to install dracut-network so the generated dracut image is able to
|
||
|
bring up the underlying NIC and establish the iscsi connection.</li>
|
||
|
<li>if we are booting from the device we need to pass dracut a proper set of
|
||
|
arguments that will allow it to do so.</li>
|
||
|
</ul>
|
||
|
</div>
|
||
|
<div class="section" id="libiscsi">
|
||
|
<h2>Libiscsi<a class="headerlink" href="#libiscsi" title="Permalink to this headline">¶</a></h2>
|
||
|
<p>How are iSCSI targets found and logged into? Originally Anaconda was just
|
||
|
running iscsiadm as an external program through execWithRedirect(). This
|
||
|
ultimately proved awkward especially due to the difficulties of handling the
|
||
|
CHAP passphrases this way. That is why Hans de Goede <<a class="reference external" href="mailto:hdegoede%40redhat.com">hdegoede<span>@</span>redhat<span>.</span>com</a>>, the
|
||
|
previous maintainer of the Anaconda iscsi subsystem decided to write a better
|
||
|
interface and created libiscsi (do not confuse this with the libiscsi.c in
|
||
|
kernel). Currently libiscsi lives as a couple of patches in the RHEL6
|
||
|
iscsi-initiator-utils CVS (and in Fedora package git, in somewhat outdated
|
||
|
version). Since Anaconda is libiscsi’s only client at the moment it is
|
||
|
maintained by the Anaconda team.</p>
|
||
|
<p>The promise of libiscsi is to provide a simple C/Python API to handle iSCSI
|
||
|
connections while being somewhat stable and independent of the changes in the
|
||
|
underlying initiator-utils (while otherwise being tied to it on the
|
||
|
implementation level).</p>
|
||
|
<p>And at the moment libiscsi does just that. It has a set of functions to discover
|
||
|
and login to targets software targets. It supports making connections through
|
||
|
partial offload interfaces, but the only discovery method supported at this
|
||
|
moment is through firmware (iBFT). Its public data structures are independent of
|
||
|
iscsi-initiator-utils. And there is some python boilerplate that wraps the core
|
||
|
functions so we can easily call those from Anaconda.</p>
|
||
|
<p>To start nontrivial hacking on libiscsi prepare to spend some time familiarizing
|
||
|
yourself with the iscsi-initiator-utils internals (it is complex but quite
|
||
|
nice).</p>
|
||
|
</div>
|
||
|
<div class="section" id="debugging-iscsi-bugs">
|
||
|
<h2>Debugging iSCSI bugs<a class="headerlink" href="#debugging-iscsi-bugs" title="Permalink to this headline">¶</a></h2>
|
||
|
<p>There is some information in anaconda.log and storage.log but libiscsi itself is
|
||
|
quite bad at logging. Most times useful information can be found by sshing onto
|
||
|
the machine and inspecting the output of different iscsiadm commands [2][7],
|
||
|
especially querying the existing sessions and known interfaces.</p>
|
||
|
<p>If for some reason the DeviceTree fails at recognizing iscsi devices as such,
|
||
|
‘udevadm info –exportdb’ is of interest.</p>
|
||
|
<p>The booting problems are either due to incorrectly generated dracut boot
|
||
|
arguments or they are simply dracut bugs.</p>
|
||
|
<p>Note that many of the iscsi adapters are installed in different Red Hat machines
|
||
|
and so the issues can often be reproduced and debugged.</p>
|
||
|
</div>
|
||
|
<div class="section" id="future-of-iscsi-in-anaconda">
|
||
|
<h2>Future of iSCSI in Anaconda<a class="headerlink" href="#future-of-iscsi-in-anaconda" title="Permalink to this headline">¶</a></h2>
|
||
|
<ul class="simple">
|
||
|
<li>extend libiscsi to allow initializing arbitrary connections from a partial
|
||
|
offload card. Implement the Anaconda UI to utilize this. Difficulty hard.</li>
|
||
|
<li>extend libiscsi with device binding support. Difficulty hard.</li>
|
||
|
<li>work with iscsi-initiator-utils maintainer to get libiscsi.c upstream and then
|
||
|
to rawhide Fedora. Then the partial offload patches in the RHEL6 Anaconda can
|
||
|
be migrated there too and partial offload can be tested. This is something
|
||
|
that needs to be done before RHEL7. Difficulty medium.</li>
|
||
|
<li>improve libiscsi’s logging capabilities. Difficulty easy.</li>
|
||
|
</ul>
|
||
|
<table class="docutils footnote" frame="void" id="id1" rules="none">
|
||
|
<colgroup><col class="label" /><col /></colgroup>
|
||
|
<tbody valign="top">
|
||
|
<tr><td class="label">[1]</td><td><a class="reference external" href="http://www.open-iscsi.org/">http://www.open-iscsi.org/</a></td></tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
<table class="docutils footnote" frame="void" id="id2" rules="none">
|
||
|
<colgroup><col class="label" /><col /></colgroup>
|
||
|
<tbody valign="top">
|
||
|
<tr><td class="label">[2]</td><td>/usr/share/doc/iscsi-initiator-utils-6.*/README</td></tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
<table class="docutils footnote" frame="void" id="id3" rules="none">
|
||
|
<colgroup><col class="label" /><col /></colgroup>
|
||
|
<tbody valign="top">
|
||
|
<tr><td class="label">[3]</td><td>man 7 dracut.kernel</td></tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
<table class="docutils footnote" frame="void" id="id4" rules="none">
|
||
|
<colgroup><col class="label" /><col /></colgroup>
|
||
|
<tbody valign="top">
|
||
|
<tr><td class="label">[4]</td><td>Anaconda git repository, anaconda/loader/ibft.c</td></tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
<table class="docutils footnote" frame="void" id="id5" rules="none">
|
||
|
<colgroup><col class="label" /><col /></colgroup>
|
||
|
<tbody valign="top">
|
||
|
<tr><td class="label">[5]</td><td>Anaconda git repository, anaconda/loader/net.c, chooseNetworkInterface()</td></tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
<table class="docutils footnote" frame="void" id="id6" rules="none">
|
||
|
<colgroup><col class="label" /><col /></colgroup>
|
||
|
<tbody valign="top">
|
||
|
<tr><td class="label">[6]</td><td>Anaconda git repository, anaconda/storage/iscsi.py</td></tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
<table class="docutils footnote" frame="void" id="id7" rules="none">
|
||
|
<colgroup><col class="label" /><col /></colgroup>
|
||
|
<tbody valign="top">
|
||
|
<tr><td class="label">[7]</td><td>‘man 8 iscsiadm’</td></tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
</div>
|
||
|
<footer>
|
||
|
|
||
|
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||
|
|
||
|
<a href="multipath.html" class="btn btn-neutral float-right" title="Multipath and Anaconda" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
|
||
|
|
||
|
|
||
|
<a href="driverdisc.html" class="btn btn-neutral" title="Brief description of DriverDisc version 3" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
|
||
|
|
||
|
</div>
|
||
|
|
||
|
|
||
|
<hr/>
|
||
|
|
||
|
<div role="contentinfo">
|
||
|
<p>
|
||
|
© Copyright 2015, Red Hat, Inc..
|
||
|
</p>
|
||
|
</div>
|
||
|
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||
|
|
||
|
</footer>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
</section>
|
||
|
|
||
|
</div>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<script type="text/javascript">
|
||
|
var DOCUMENTATION_OPTIONS = {
|
||
|
URL_ROOT:'./',
|
||
|
VERSION:'23.15',
|
||
|
COLLAPSE_INDEX:false,
|
||
|
FILE_SUFFIX:'.html',
|
||
|
HAS_SOURCE: true
|
||
|
};
|
||
|
</script>
|
||
|
<script type="text/javascript" src="_static/jquery.js"></script>
|
||
|
<script type="text/javascript" src="_static/underscore.js"></script>
|
||
|
<script type="text/javascript" src="_static/doctools.js"></script>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<script type="text/javascript" src="_static/js/theme.js"></script>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<script type="text/javascript">
|
||
|
jQuery(function () {
|
||
|
SphinxRtdTheme.StickyNav.enable();
|
||
|
});
|
||
|
</script>
|
||
|
|
||
|
|
||
|
</body>
|
||
|
</html>
|