Rootfilesystem Alternativen¶
iSCSI auf Client-Seite¶
iSCSI ist die Möglichkeit ein SCSI-System über TCP/IP abzuwickeln. Auf der Client-Seite ist als Initiator der "Open-iSCSI"-Daemon zuständig, der üblicherweise mittels Runlevel-Skript gestartet wird. Durch dieses Skript werden zudem die benötigten Kernel-Module geladen. Innerhalb des Initialramfs ist daher folgendes notwendig:
- Bestücken von /etc/initiatorname.iscsi aus Kernel Commandline als Teil der "rootfs" URI (evtl. auch via "discovery")
- Einrichten von /etc/iscsid.conf
- Starten von iscsid
- Einrichtung mittels iscsiadm
#/etc/iscsid.conf
node.startup = automatic # dann müssen u.U. noch die Passwörter gesetzt sein und
# ein sinnvoller Eintrag in initiatorname.iscsi existieren
...
Eine klassische Festplatte bietet sich nicht an, da diese sich nicht schreibschützen lässt. Hingegen ist es inzwischen überhaupt kein Problem ein CD-ROM als Target anzubieten, was damit automatisch nur read-only ist. Das geht beispielsweise mit dem "tgt" iSCSI-Target, welches bei den meisten Distros dabei ist (--device-type=cd). Das Dateisystem spielt dabei keine Rolle, sowohl iso9660 als auch squashfs liessen sich ohne Probleme auf diese Weise importieren.
c1:~ # modprobe iscsi_tcp c1:~ # iscsiadm -m discovery -t st -p 10.8.4.241 # unabhängig von initiatorname.iscsi [591ef3] 10.8.4.241:3260,1 iqn.2001-04.com.example:storage.disk2.sys1.xyz c1:~ # iscsiadm -m node -r 591ef3 # zeigt Einstellungen an (die man via /etc/iscsid.conf definiert) c1:~ # iscsiadm -m node -r 591ef3 -l # entscheidender Schritt - hier wird verbunden c1:~ # dmesg iscsi: registered transport (tcp) scsi0 : iSCSI Initiator over TCP/IP, v1.0-595 Vendor: IET Model: VIRTUAL-DISK Rev: 0 Type: Direct-Access ANSI SCSI revision: 04 SCSI device sda: 4522992 512-byte hdwr sectors (2316 MB) sda: Write Protect is off sda: Mode Sense: 77 00 00 08 SCSI device sda: drive cache: write through SCSI device sda: 4522992 512-byte hdwr sectors (2316 MB) sda: Write Protect is off sda: Mode Sense: 77 00 00 08 SCSI device sda: drive cache: write through sda: unknown partition table sd 0:0:0:0: Attached scsi disk sda sd 0:0:0:0: Attached scsi generic sg0 type 0 c1:~ # mount -t squashfs /dev/sr0 /mnt
iSCSI auf Linux / OpenSLX Server¶
Verwendung des "iSCSI Enterprise Targets", Konfiguration in der /etc/ietd.conf
#/etc/ietd.conf
Target iqn.2001-04.com.example:storage.disk2.sys1.xyz
Lun 0 Path=/export/10.1-squashfs,Type=fileio
Alias Test
# various iSCSI parameters
# (not all are used right now, see also iSCSI spec for details)
#MaxConnections 1
#InitialR2T Yes
#ImmediateData No
#MaxRecvDataSegmentLength 8192
#MaxXmitDataSegmentLength 8192
#MaxBurstLength 262144
#FirstBurstLength 65536
#DefaultTime2Wait 2
#DefaultTime2Retain 20
#MaxOutstandingR2T 8
#DataPDUInOrder Yes
#DataSequenceInOrder Yes
#ErrorRecoveryLevel 0
#HeaderDigest CRC32C,None
#DataDigest CRC32C,None
# various target parameters
#Wthreads 8
Im Beispiel wird einfach eine SquashFS-Datei herausgereicht. Damit hat man dann zwar keine Partitionierung, was aber auch kein Problem zu sein scheint. Start des Dienstes mit /etc/init.d/iscsitarget, welches auch die notwendigen Kernel-Module (iscsi_trgt, crc32c) lädt und den ietd startet. Im Normalfall wird ein Target immer im schreibbaren Modus angeboten, was aber für den Zugriff von vielen Clients auf genau ein gemeinsames Target keinen Sinn macht.