Windows und seine Grenzen

Gerade gesehen – ein typisches Beispiel von Missverständnis und theoretischen bzw. praktischen Grenzen. Aussage: Windows unterstützt maximal 256 LUN’s. Stimmt das? Einer unserer “Program Manager” (Elden Christensen) hat das mal so beantwortet: Windows supports (255 LUN IDs per target) x (128 targets per bus) x (8 buses per adapter) = a total of 261,120 LUN’s per HBA… Nehmen wir jetzt noch an, dass wir diverse HBAs in einen Server stecken können, dann ist das Ergebnis immer noch jenseits jeder praktischen Relevanz. Andere formulieren das dann gerne als “Windows has no limitation”, was streng genommen aber nicht korrekt ist. Was bleibt, ist, dass die Grenzen eher von Seiten des SANs, der Hardware oder aber der Praxis erreicht werden.

Bei anderen Grenzen ist das etwas schwieriger bzw. trickreicher. Die Diskussion um die Länge von Pfaden oder vollständigen Dateinamen ist etwas diffiziler. Aus Sicht des Programmierers gibt es (seit ewigen Jahren) die Konstante MAX_PATH (oder _MAX_PATH), die mit 260 definiert ist. Seit wir Unicode Pfade unterstützen, reicht das aber nicht mehr aus (OK, wenn man (in C/C++) korrekt _TCHAR verwendet, gäbe es eigentlich kein prinzipielles Thema). Trotzdem: Die Unicode APIs erlauben Pfadlängen bis zu 32767 Zeichen, wenn auch nicht in der üblichen Schreibweise – für Details empfehle ich diesen MSDN Artikel. Hier ergibt sich dann immer das Problem, was einerseits das Betriebssystem (oder Dateisystem) unterstützt und was die typischen Anwendungen unterstützen. Die Shell (der Windows Explorer) ist in dieser Betrachtung ebenfalls eine “Anwendung”, da er auch in den typischen Datei Dialogen Verwendung findet. Wer also sicherstellen will, dass Dateien am Ende auch wieder geöffnet werden können, sollte einigermaßen “kurze” Pfade einhalten – wieder einmal ein Fall, wo uns die Kompatibilität zur Vergangenheit nicht los lässt…
Manch Administrator sollte hier aber gelegentlich wachsam sein – wenn Robocopy zum Kopieren von Dateistrukturen verwendet wird, kann das Ergebnis auch mal länger ausfallen, da Robocopy längere Pfade als 260 Zeichen erlaubt. Weitere typische Probleme sind Freigaben, wo der lokale Pfad viel länger als der remote Pfad ist oder DFS, wenn lokale (kurze) Bäume in einen existierenden (schon längeren) DFS Baum eingehängt werden.

Disclaimer ;) : Da ich seit Jahren nicht mehr wirklich etwas “richtiges” programmiere, mag obiges in Details nicht absolut präzise sein.