iSCSI4NAS

ARCHITEKTUR STATT ETIKETT

FSKit ist kein
SCSI-Controller.

Wird eine iSCSI-LUN nur über ein Dateisystem bereitgestellt, fehlt der entscheidende Schritt: ein echtes SCSI-Gerät in macOS.

Sieh den Unterschied

Kurzum:
Eine FSKit-Lösung nutzt iSCSI nur als Transport und liefert deinem Mac eine Datei.
iSCSI4NAS liefert die LUN selbst als SCSI-Blockgerät.

Was das für deine Daten auf dem NAS bedeutet

Risiko mit FSKit + DiskImagesBei iSCSI4NAS
Datenverlust kann passieren. Das Barrieresignal von APFS kommt bei der FSKit-Erweiterung nicht an. APFS kann damit nicht steuern, wann Daten auf dem Target dauerhaft liegen. Die dokumentierte Umsetzung setzt deshalb FUA auf jeden Schreibvorgang und meldet den Erfolg erst nach der Antwort des Targets, mit etwa 4,5-fach weniger Durchsatz. Ist diese Einstellung aus, kann ein Schreibvorgang, den APFS schon als abgeschlossen sieht, bei Stromausfall, Absturz oder Netzabbruch im Cache des Targets verloren gehen. Trifft das die Metadaten von APFS, kann das ganze Volume unbrauchbar werden.SYNCHRONIZE CACHE und FUA gehen als SCSI-Befehle zum Target, genau dann, wenn APFS sie anfordert.
Fehler ohne Ursache. Medium Error, Reservation Conflict und Unit Attention nach einem Reset enden im Hintergrunddienst. macOS bekommt nur einen Dateifehler, nicht den SCSI-Status des Targets.Status und Sense Data laufen über den SCSI-Speicherstack, wie bei einer eingebauten Platte.
Datei statt Gerät. macOS sieht ein Disk-Image über einer Datei. hdiutil info zeigt es mit image-path.macOS sieht ein SCSI-Gerät, bereitgestellt vom DriverKit-Treiber.

Sieht macOS eine LUN oder nur Dateien?

FSKit ist Apples Framework für Dateisystem-Erweiterungen. Es ist nützlich, wenn man ein Dateisystem implementiert. iSCSI transportiert SCSI-Befehle zu Targets und logischen Einheiten. Das sind verschiedene Schichten.

FSKit allein macht aus einer Netzwerkressource kein SCSI-Gerät. Ein Produkt kann im Hintergrund trotzdem iSCSI sprechen. Der Name des Transports sagt nicht, ob macOS die LUN als echtes SCSI-Blockgerät bekommt. Genau dort setzt iSCSI4NAS an.

FSKit

Apples Framework für Dateisysteme. Es arbeitet mit Dateien und Byte-Offsets.

iSCSI

Ein Protokoll für Speichergeräte. Es transportiert SCSI-Befehle und Statusmeldungen zum Target.

FSKit + DiskImages

Eine FSKit-Erweiterung stellt die LUN als Datei bereit. DiskImages erzeugt daraus ein Blockgerät, aber keinen SCSI-Controller.

Der 30-Sekunden-Test.

Du nutzt bereits eine iSCSI-Lösung auf deinem Mac? So siehst du, was macOS tatsächlich eingebunden hat.

  1. Terminal öffnen und eingeben:
    hdiutil info
    Der Befehl listet jedes Disk-Image, das macOS gerade eingebunden hat, jeweils mit image-path und dem zugehörigen Gerät /dev/diskN.
  2. Systemeinstellungen öffnen: Allgemein › Anmeldeobjekte & Erweiterungen › Dateisystemerweiterungen. Dort stehen alle FSKit-Module, die auf deinem Mac aktiv sind.
Dein iSCSI-Laufwerk steht in hdiutil info mit einem image-path?
Dann verwendet dieser Gerätepfad ein Disk-Image. Der angezeigte Pfad bezeichnet dessen Datei. Wenn die zugehörige Erweiterung unter Dateisystemerweiterungen steht, ist FSKit Teil dieser Architektur.
iSCSI4NAS: Das Laufwerk ist ein SCSI-Gerät, bereitgestellt von einem DriverKit-Treiber. Es wird nicht über hdiutil als Disk-Image angehängt.

Der Weg durch macOS.

01 / DATEI-SCHICHTFSKit + DiskImages
APFS
↑
DiskImages-Frameworkmacht aus der Datei ein Gerät
↑
FSKit-Erweiterungstellt eine einzelne Datei bereit
↑
Hintergrunddiensthier endet SCSI
↑ iSCSI
NAS
02 / SCSI-SCHICHTiSCSI4NAS
APFS
↑
SCSI-Speicherstack von macOSfestes Laufwerk
↑ SCSI
iSCSI4NAS DriverKit-TreiberSCSI-Controller
↑ SCSI
iSCSI4NAS
↑ iSCSI
NAS

Links erzeugt DiskImages das Blockgerät aus einer von FSKit bereitgestellten Datei. Rechts veröffentlicht DriverKit die LUN über den SCSI-Controller-Pfad.

Eine genaue Unterscheidung: Ein FSKit-basiertes Produkt kann zusätzliche Technik wie DiskImages nutzen, um ein Blockgerät bereitzustellen. Dieses Blockgerät stammt dann aus der zusätzlichen Technik und nicht aus FSKit selbst. „FSKit“ allein beschreibt keine vollständige iSCSI-Architektur.

Was der Name verspricht und was ankommt.

VersprochenFSKit + DiskImagesiSCSI4NAS
LaufwerkDisk-Image aus einer DateiSCSI-Gerät über DriverKit
SCSIByte-Offsets, SCSI bleibt im HintergrunddienstSCSI-Befehle und SCSI-Status bis in den Speicherstack von macOS
SchreibbarrierenIn einer öffentlich dokumentierten Umsetzung kommt kein Barrieresignal bei der FSKit-Erweiterung an und deshalb nutzt sie standardmäßig FUA pro Schreibvorgang.Der SCSI-Pfad kann Flush und FUA als SCSI-Kommandos an das Target weitergeben.
GerätemodellDiskImages stellt ein Blockgerät über einer Datei bereit.SCSIControllerDriverKit stellt ein SCSI-Gerät bereit.

Wo der Umweg spürbar wird.

Diese Unterschiede gelten für den hier beschriebenen Weg über FSKit und DiskImages. Die Angaben zur Schreibstrategie stammen aus einer öffentlich dokumentierten Umsetzung und gelten für diese.

01 / SCHREIBEN

Schreibreihenfolge

In einer öffentlich dokumentierten FSKit-und-DiskImages-Umsetzung erreicht das Barrieresignal die Erweiterung nicht. Sie setzt deshalb standardmäßig FUA auf jeden Schreibvorgang. Die Dokumentation nennt dafür etwa 4,5-fach geringeren Durchsatz, aber spätere Messungen variieren. Ohne diese Strategie hängt die Dauerhaftigkeit bestätigter Schreibvorgänge von weiteren Einstellungen und dem Cache des Targets ab.

Lösbar durchEine Ende-zu-Ende-Lösung braucht ein verlässlich durchgereichtes Barrieresignal oder eine passende Schreibstrategie.
Bei iSCSI4NASDer SCSI-Controller-Pfad kann SYNCHRONIZE CACHE und FUA an das Target weiterreichen, wenn macOS sie anfordert.
02 / GERÄTEMODELL

SCSI-Status und Gerätezustand

Bei diesem FSKit-und-DiskImages-Aufbau endet SCSI im Hintergrunddienst. macOS sieht ein Disk-Image. Ein Disk-Image versteht Byte-Offsets. SCSI-Status, Sense Data, Unit Attention, Reservierungen und Task Management bleiben im Dienst zurück. Die Datei-Schnittstelle von FSKit meldet Fehler als Dateifehler. SCSI-Sense-Daten haben dort keinen Platz.

Lösbar durchNur durch einen anderen Gerätepfad. DiskImages macht aus der Datei keinen SCSI-Controller.
Bei iSCSI4NASDer Treiber ist ein SCSI-Controller und verarbeitet SCSI-Tasks über UserProcessParallelTask. Befehle und Status laufen auf dem Weg, den macOS für eingebaute SCSI-Laufwerke vorsieht.
03 / IDENTITÄT

Target und LUN

Ein SCSI-Controller meldet Targets und logische Einheiten an den Speicherstack von macOS. Ein FSKit-Volume ist ein anderes Objekt mit einer anderen Aufgabe.

Bei iSCSI4NASJede LUN erscheint als eigenes SCSI-Gerät mit Target und logischer Einheit.
04 / FREIHEIT

Dateisystem darüber

Mit einem SCSI-Gerät verwaltet macOS Partitionen und Dateisysteme direkt über dem Gerät. Bei FSKit + DiskImages liegt darunter noch eine Datei, die erst zum Gerät gemacht wird.

Bei iSCSI4NASPartitionierung und Dateisysteme liegen direkt über dem SCSI-Gerät, wie bei einer eingebauten Platte.
05 / GERÄTEKLASSEN

Bandlaufwerke und Medium Changer

SCSI kennt neben Festplatten weitere Geräteklassen, etwa Bandlaufwerke und Medium Changer für Tape Libraries und VTLs. Ein Disk-Image bildet nur eine Festplatte ab.

Lösbar durchNur durch einen SCSI-Gerätepfad.
Bei iSCSI4NASDer SCSI-Controller-Pfad von iSCSI4NAS ist die Basis, um auch diese Geräteklassen einzubinden, was für eine spätere Version geplant ist, zum Beispiel für VTL und weitere Backup-Optionen.

Kein Etikett. Ein Entitlement.

iSCSI4NAS nutzt IOUserSCSIParallelInterfaceController aus SCSIControllerDriverKit. Die Treiber-Erweiterung trägt com.apple.developer.driverkit.family.scsicontroller. Das ist Apples Schnittstelle für SCSI-Controller, nicht die FSKit-Berechtigung für ein Dateisystem-Modul.

01

SCSI-Tasks

Der Controller arbeitet auf der SCSI-Schicht und bietet mehr als Dateioperationen als Schnittstelle.

02

Speicherstack

Die LUN kommt über den SCSI-Pfad als Gerät in macOS an. Partitionierung und Dateisysteme liegen darüber.

03

Intel + Apple Silicon

Der SCSI-Controller-Pfad ist nativ für Intel und Apple Silicon gebaut.

Fünf Fragen an deinen Anbieter.

Stell diese Fragen jedem Anbieter einer iSCSI-Lösung für macOS. Die Antworten zeigen sofort, was du gekauft hast.

  1. Erscheint das Laufwerk in macOS als SCSI-Gerät oder als Disk-Image?

    iSCSI4NAS: Als SCSI-Gerät, bereitgestellt von einem DriverKit-Treiber.

  2. Wie werden Schreibbarrieren und bestätigte Schreibvorgänge bis zum Target behandelt?

    iSCSI4NAS: Der SCSI-Pfad gibt Flush und FUA weiter, wenn macOS sie anfordert. Ob Daten nach einem Stromausfall dauerhaft sind, hängt auch vom Target und dessen Cache-Konfiguration ab.

  3. Welche Schreibstrategie nutzt der Initiator?

    iSCSI4NAS: Die SCSI-Schicht kann FUA gezielt dort nutzen, wo der Storage-Stack es verlangt. Leistung und Dauerhaftigkeit müssen mit dem jeweiligen NAS getestet werden.

  4. Meldet sich das Laufwerk als festes Laufwerk oder als Wechselmedium?

    iSCSI4NAS: Als SCSI-Gerät über DriverKit. Der Gerätepfad und seine Flush-Behandlung lassen sich getrennt prüfen.

  5. Erfährt macOS, welchen SCSI-Status das NAS zu einem Befehl gemeldet hat?

    iSCSI4NAS: Ja. Der Status des NAS läuft über den SCSI-Speicherstack von macOS, wie bei einer eingebauten Platte.

Ein schicker Mount zeigt noch keine Architektur. Wer iSCSI verkauft, zeigt den Gerätepfad.

Die Architektur im Detail.

Aufbau, Schreibbarrieren und SCSI-Semantik

Der Aufbau einer FSKit-basierten iSCSI-Lösung

Der in der Apple-Entwicklercommunity diskutierte Ansatz besteht aus drei Schritten. Eine FSKit-Erweiterung wird an einem privaten Ort gemountet und stellt eine einzige Datei bereit, die den gesamten LUN repräsentiert. Diese Datei wird anschließend über das DiskImages-Framework als Raw-Image eingebunden:

hdiutil attach -imagekey diskimage-class=CRawDiskImage -nomount <datei>

Das Ergebnis ist ein Gerät /dev/diskN, auf dem APFS liegt. Jeder Lese- und Schreibzugriff von APFS wandert damit über DiskImages als Dateizugriff in die FSKit-Erweiterung, von dort in den iSCSI-Hintergrunddienst und erst dann auf das Netzwerk. Seit August 2026 ist eine Umsetzung dieses Aufbaus öffentlich dokumentiert. Die folgenden Zahlen und Effekte stammen aus dieser Dokumentation.

Schreibbarrieren

APFS sichert seine Konsistenz über die Reihenfolge von Schreibvorgängen und über Flushes. Ein SCSI-Gerät setzt das mit SYNCHRONIZE CACHE und dem FUA-Bit in WRITE-Befehlen um. Laut dieser Dokumentation kommt bei der FSKit-Erweiterung kein Barrieresignal an. Die Umsetzung setzt deshalb standardmäßig FUA auf jeden Schreibvorgang. Genannt wird dafür rund 4,5-fach geringerer Durchsatz, aber andere Messungen dort zeigen andere Werte. Ohne FUA pro Schreibvorgang braucht es eine andere nachweislich sichere Strategie für den Cache des Targets.

SCSI-Semantik

Ein iSCSI-Target antwortet mit SCSI-Status und Sense Data, meldet Zustandsänderungen per Unit Attention und verwaltet Persistent Reservations für den Zugriff mehrerer Hosts. Ein Initiator kann all das korrekt implementieren. Über dem Hintergrunddienst liegen bei FSKit aber eine Datei und ein Disk-Image. Beide arbeiten mit Offsets und Dateifehlern. Die Datei-Schnittstelle bildet diese SCSI-Informationen nicht als SCSI-Gerätestatus für macOS ab.

Der Weg von iSCSI4NAS

iSCSI4NAS stellt das Laufwerk über einen DriverKit-Treiber auf Basis von SCSIControllerDriverKit bereit. macOS behandelt ihn als SCSI-Controller und das LUN als festes SCSI-Laufwerk. Befehle und Status laufen über den SCSI-Speicherstack. Flush und FUA können auf diesem Pfad an das Target weitergegeben werden.

Lies die APIs selbst.

Dieser Vergleich beschreibt Apples Schnittstellen und die Architektur von iSCSI4NAS. Er ist kein Benchmark und keine Bewertung eines bestimmten Konkurrenzprodukts.

Eine LUN soll eine LUN bleiben.

Sieh dir die App an und lass dich über die Beta informieren.

Zur Beta App-Vorschau ↗