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 UnterschiedKurzum:
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 + DiskImages | Bei 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. |
DIE EINFACHE FRAGE
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.
Apples Framework für Dateisysteme. Es arbeitet mit Dateien und Byte-Offsets.
Ein Protokoll für Speichergeräte. Es transportiert SCSI-Befehle und Statusmeldungen zum Target.
Eine FSKit-Erweiterung stellt die LUN als Datei bereit. DiskImages erzeugt daraus ein Blockgerät, aber keinen SCSI-Controller.
SELBST PRÜFEN
Der 30-Sekunden-Test.
Du nutzt bereits eine iSCSI-Lösung auf deinem Mac? So siehst du, was macOS tatsächlich eingebunden hat.
- Terminal öffnen und eingeben:
hdiutil info
Der Befehl listet jedes Disk-Image, das macOS gerade eingebunden hat, jeweils mitimage-pathund dem zugehörigen Gerät/dev/diskN. - Systemeinstellungen öffnen: Allgemein › Anmeldeobjekte & Erweiterungen › Dateisystemerweiterungen. Dort stehen alle FSKit-Module, die auf deinem Mac aktiv sind.
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.
hdiutil als Disk-Image angehängt.ZWEI WEGE, EIN ENTSCHEIDENDER UNTERSCHIED
Der Weg durch macOS.
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.
VERSPROCHEN UND GELIEFERT
Was der Name verspricht und was ankommt.
| Versprochen | FSKit + DiskImages | iSCSI4NAS |
|---|---|---|
| Laufwerk | Disk-Image aus einer Datei | SCSI-Gerät über DriverKit |
| SCSI | Byte-Offsets, SCSI bleibt im Hintergrunddienst | SCSI-Befehle und SCSI-Status bis in den Speicherstack von macOS |
| Schreibbarrieren | In 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ätemodell | DiskImages stellt ein Blockgerät über einer Datei bereit. | SCSIControllerDriverKit stellt ein SCSI-Gerät bereit. |
WO DER UNTERSCHIED SICHTBAR WIRD
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.
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.
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.
UserProcessParallelTask. Befehle und Status laufen auf dem Weg, den macOS für eingebaute SCSI-Laufwerke vorsieht.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.
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.
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.
WAS UNSER CODE TATSÄCHLICH NUTZT
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.
SCSI-Tasks
Der Controller arbeitet auf der SCSI-Schicht und bietet mehr als Dateioperationen als Schnittstelle.
Speicherstack
Die LUN kommt über den SCSI-Pfad als Gerät in macOS an. Partitionierung und Dateisysteme liegen darüber.
Intel + Apple Silicon
Der SCSI-Controller-Pfad ist nativ für Intel und Apple Silicon gebaut.
FÜNF FRAGEN VOR DEM KAUF
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.
- Erscheint das Laufwerk in macOS als SCSI-Gerät oder als Disk-Image?
iSCSI4NAS: Als SCSI-Gerät, bereitgestellt von einem DriverKit-Treiber.
- 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.
- 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.
- 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.
- 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.
FÜR TECHNIKER
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.
QUELLEN & UMFANG
Lies die APIs selbst.
- Apple Developer Forums, Thread 837879: Apple-DTS-Vorschlag für FSKit zusammen mit DiskImages.
- Apple: FSKit: Dateisystem-Erweiterungen und Volumes.
- Apple: SCSIControllerDriverKit: Treiber für SCSI-Controller.
- Apple: IOUserSCSIParallelInterfaceController: Controller-Schnittstelle und SCSI-Tasks.
- Apple: SCSI-Controller-Entitlement.
man hdiutil: Befehleattachundinfo.
Dieser Vergleich beschreibt Apples Schnittstellen und die Architektur von iSCSI4NAS. Er ist kein Benchmark und keine Bewertung eines bestimmten Konkurrenzprodukts.
ECHTES iSCSI FÜR macOS
Eine LUN soll eine LUN bleiben.
Sieh dir die App an und lass dich über die Beta informieren.