@Kuristina Wenn die Anwendung vom Filesystem die Datei level3 anfordert, geht der Lesekopf dorthin, wo die Blöcke von Datei level3 liegen. Und wenn du Datei level8 anforderst, geht er dorthin, wo die Daten von Datei level8 liegen.
Er geht nicht bei einer Anforderung von Level3 zu der Level8 Datei, weil die "näher liegt" und eventuell den gleichen Inhalt haben könnte. Denn der Lesekopf weiss davon nichts. Und die Anwendung weiss wiederum nicht, wo genau ein Block liegt. Vereinfacht gesagt: die Anwendung greift auf Dateien zu. Die Dateien liegen im Filesystem an logischen Adressen. Die logischen Adressen liegen auf einem Datenträger an denjenigen Orten, die der Datenträgercontroller kennt. Anwendung und Filesystem wissen daher nicht, an welcher physischer Stelle genau die Bytes liegen. Denn das mappt der Controller des Datenträgers.
Wenn zwei Dateien den gleichen Inhalt haben und man optimieren will, dann dedupliziert man die und greift in beiden Fällen auf die gleiche Datei zu oder (wenn man es auf Storageebene macht wie bei Fileservern, mappt an unterschiedliche Dateien auf die gleichen physischen Storageblöcke.)
Wenn du wie in deinem Fall beschrieben, in der Datei level8 auch noch mal die Gegner von level3 platzierst, dann hast du nichts gewonnen in Bezug auf Zugriffszeit, denn auf welche der beiden Dateien zugegriffen wird, entscheidet sich nicht dadurch, wo sie in Bezug zu Lesekopf liegen (denn das wissen Anwendung und Filesystem nicht), sondern letztlich durch die Anwendung, die bestimmt, aus welcher der beiden Dateien gelesen wird, egal wo deren physischen Blöcke liegen.