Harte Verbindung

Im Computer, a harte Verbindung ist ein Verzeichniseintrag (in einem Verzeichnis-basierend Dateisystem) das assoziiert einen Namen mit a Datei. Somit muss jede Datei mindestens einen harten Link haben. Durch das Erstellen zusätzlicher harter Links für eine Datei wird der Inhalt dieser Datei über zusätzliche zugegriffen Wege (d. H. über verschiedene Namen oder in verschiedenen Verzeichnissen).[1] Dies verursacht eine Alias ​​-Effekt: Ein Prozess kann die Datei durch einen seiner Pfade öffnen und ihren Inhalt ändern. Dagegen a weicher Link oder "Abkürzung" Zu einer Datei ist kein direkter Link zu den Daten selbst, sondern ein Hinweis auf einen harten Link oder einen anderen Soft Link.

Jedes Verzeichnis ist selbst eine spezielle Datei, nur eine Liste von Dateinamen. Daher sind mehrere harte Verbindungen zu Verzeichnissen möglich, was eine kreisförmige Verzeichnisstruktur erzeugen könnte, anstatt eine Verzweigungsstruktur wie a Baum. Aus diesem Grund verbieten einige Dateisysteme die Erstellung von harten Links zu Verzeichnissen.

Posix-konform Betriebssysteme, wie zum Beispiel Linux, Android, Mac OS, und die Windows NT -Familie,[2] Unterstützen Sie mehrere harte Links zu derselben Datei, abhängig vom Dateisystem. Zum Beispiel, NTFS unterstützt zwar harte Links FETT und Refs unterlassen Sie.

Betrieb

Eine Illustration des Konzepts der harten Verknüpfung

Lassen Sie zwei harte Links mit dem Namen "Link A.TXT" und "Link B.Txt" auf dieselben physischen Daten verweisen. EIN Texteditor Öffnet "Link a.txt", modifiziert es und spart es. Wenn der Editor (oder eine andere App) "Link b.txt" öffnet, können die Änderungen an "Link A.TXT" vorgenommen werden, da beide Dateinamen auf dieselben Daten hinweisen. Aus Sicht eines Benutzers handelt es sich also um eine Datei mit mehreren Dateinamen. Bearbeiten eines Dateinamens modifiziert "alle" Dateien, aber löschen "einen" Dateinamen außer dem letzten hält die Datei in der Nähe.

Einige Redakteure, wie z. GNU EMACSBrechen Sie das Konzept des harten Links. Beim Öffnen einer Datei zum Bearbeiten, z. B. "Link b.txt", wird "link b.txt" in "link b.txt ~" umgebracht, lädt "link b.txt ~" in den Editor und speichert den modifizierten Inhalt zu einem neu erstellten "link b.txt". "Link A.Txt" und "Link B.Txt" teilt nun nicht mehr die gleichen Daten. (Dieses Verhalten kann unter Verwendung der EMACS -Variablen geändert werden Backup-by-Copying.))

Eine beliebige Anzahl von harten Links zu den physischen Daten kann erstellt werden. Um auf die Daten zuzugreifen, muss ein Benutzer nur den Namen eines vorhandenen Links angeben. Das Betriebssystem wird den Standort der tatsächlichen Daten beheben. Auch wenn der Benutzer eine der harten Links löscht, sind die Daten über einen anderen verbleibenden Link zugegriffen. Sobald der Benutzer alle Links gelöscht hat, befreit das Betriebssystem, wenn kein Prozess die Datei geöffnet hat, den Speicherplatz, den die Datei einmal besetzt hat.

Referenzzählung

Vereinfachtes Abbild von harten Links auf typischem UNIX -Dateisystem. Beachten Sie, dass Dateien "A" und "D" beide auf denselben Indexeintrag in Dateisystems deuten Inode Tabelle, die Referenz zählen 2.

Die meisten Dateisysteme diese Unterstützung harte Links verwenden Referenzzählung. Das System speichert an ganze Zahl Wert mit jeder logischen Daten Abschnitt, der die Gesamtzahl der harten Links darstellt, die erstellt wurden, um auf die Daten zu verweisen. Wenn ein neuer Link erstellt wird, wird dieser Wert um eins erhöht. Wenn eine Verbindung entfernt wird, wird der Wert um eins verringert. Wenn der Zähler Null wird, befreien das Betriebssystem den logischen Datenabschnitt. (Das Betriebssystem kann dies möglicherweise nicht sofort tun, z. B. wenn ausstehende Dateihandles aus Leistungsgründen geöffnet sind, oder um die zu aktivieren wahnsinnig Befehl.)

Dies ist eine einfache Methode für das Dateisystem, um die Verwendung eines bestimmten Speicherbereichs zu verfolgen, da Nullwerte angeben, dass der freie Speicherplatz und die Werte ungleich Null den gebrauchten Speicherplatz angeben. Die Wartung dieses Wertes garantiert, dass keine harten Verbindungen nirgendwo hinweisen. Der Datenabschnitt und der zugehörige Inode werden erhalten, solange ein einzelner Hard Link (Verzeichnisreferenz) darauf verweist, oder ein Prozess hält die zugehörige Datei offen.

An Posix-Compliant -Betriebssysteme, die Referenzzahl für eine Datei oder ein Verzeichnis wird von der zurückgegeben stat () oder fstat () Systemaufrufe in der st_nlink Bereich strukturstat.

Einschränkungen

Um Schleifen im Dateisystem zu verhindern und die Interpretation der "zu behalten".."Datei (übergeordnetes Verzeichnis) konsistent, Betriebssysteme erlauben keine harten Links zu Verzeichnissen. UNIX -System v erlaubte ihnen, aber nur die Superuser hatte die Erlaubnis, solche Links herzustellen.[3] Mac OS X V10.5 (Leopard) und neuere Verwendung harte Links zu Verzeichnissen für die Zeitmaschine Nur Sicherungsmechanismus.[4]

Harte Links können nur auf demselben Volumen für Dateien erstellt werden, d. H. In demselben Dateisystem. (Unterschiedliche Volumina haben möglicherweise unterschiedliche Dateisysteme. Es besteht keine Garantie dafür, dass das Dateisystem des Zielvolumens mit der harten Verknüpfung kompatibel ist.)

Die maximale Anzahl harter Links zu einer einzelnen Datei ist durch die Größe des Referenzzählers begrenzt. Auf Unix-ähnlichen Systemen beträgt der Zähler 4.294.967.295 (auf 32-Bit-Maschinen) oder 18.446.744.073.709.551.615 (auf 64-Bit-Maschinen). In einigen Dateisystemen ist die Anzahl der harten Links durch das On-Disk-Format strenger begrenzt. Zum Beispiel ab Linux 3.11, die ext4 Das Dateisystem begrenzt die Anzahl der harten Links auf einer Datei auf 65.000.[5] Fenster Limits erzwingt eine Grenze von 1024 harten Links zu einer Datei auf NTFS Bände.[6]

An Linux Weekly NewsNeil Brown kritisierte harte Verbindungen als wartungsfreudig, da sie die Gestaltung von Programmen, die Verzeichnisbäume, einschließlich Erziver- und Disk-Nutzungswerkzeuge, umgehen, komplizieren. Diese Apps müssen darauf achten, dass Dateien de-dupliziert werden, die in a mehrmals verknüpft sind Hierarchie. Brown bemerkt das Plan 9 von Bell LabsDer beabsichtigte Nachfolger von UNIX enthält nicht das Konzept einer harten Verbindung.[7]

Plattformunterstützung

Windows NT 3.1 und später harte Links auf der NTFS Dateisystem.[8] Windows 2000 führt a ein CreateHardLink () Funktion zum Erstellen von harten Links, jedoch nur für Dateien, nicht für Verzeichnisse.[9] Das Datei löschen() Funktion kann sie entfernen.

Um einen harten Link unter Windows zu erstellen, können Endbenutzer verwenden:

Um eine Datei für ihre harten Links zu befragen, können Endbenutzer verwenden:

  • Das fsutil Dienstprogramm[10]
  • Das Get-item und Get-Childitem cmdlets von Powershell. Diese CMDlets stellen jede Datei mit einem Objekt dar. PowerShell fügt jedem von ihnen eine schreibgeschützte LinkType-Eigenschaft hinzu. Diese Eigenschaft enthält das "Hardlink"String, wenn die zugehörige Datei mehrere harte Links hat.[13]

Das Windows -Komponentenspeicher Verwendet harte Links, um verschiedene Versionen von Komponenten zu verfolgen, die auf dem Festplattenlaufwerk gespeichert sind.

An Unix-artig Systeme, die link() Systemanruf Kann zusätzliche harte Links zu vorhandenen Dateien erstellen. Um harte Links zu erstellen, können Endbenutzer verwenden:

  • Das ln Dienstprogramm
  • Das Verknüpfung Dienstprogramm
  • Das Neuer Gegenstand CMDLET von PowerShell[12]

Um eine Datei für ihre harten Links zu befragen, können Endbenutzer verwenden:

  • Das Stat Befehl
  • Das ls -l Befehl
  • Das Get-item und Get-Childitem cmdlets von PowerShell (siehe oben)[13]

Unix-ähnliche Emulations- oder Kompatibilitätssoftware, die auf Microsoft Windows ausgeführt wird, wie z. Cygwin und Subsystem für Unix-basierte AnwendungenErmöglichen Sie die Verwendung von POSIX -Schnittstellen.

OpenVMS unterstützt harte Links auf der ODS-5 Dateisystem.[14] Im Gegensatz zu UNIX können VMs harte Links zu Verzeichnissen erstellen.

Siehe auch

  • Symbolischer Link: Zeigt auf einen harten Link, nicht auf die Dateidaten selbst; Daher funktioniert es über Bände und Dateisysteme hinweg.
  • NTFS -Links: Details die vier Linkstypen, die der NTFS unterstützt - HARD -Links, symbolische Links, Junction -Punkte und Volumen -Mount -Punkte
  • Abkürzung: Eine kleine Datei, die an einen anderen an einem lokalen oder abgelegenen Ort hinweist
    • Alias: macOS -Implementierung einer Abkürzung
    • Schatten: OS/2 -Implementierung einer Verknüpfung
  • freigegeben - Das freigegeben Befehl frees-up-Speicherplatz, indem doppelte Datenspeicher durch automatisch generierte harte Links ersetzt werden

Verweise

  1. ^ Pitcher, Lew. "Q & A: Der Unterschied zwischen harten und weichen Verbindungen".
  2. ^ "Link Shell -Erweiterung".
  3. ^ Bach, Maurice J. (1986). Das Design des UNIX -Betriebssystems. Prentice Hall. p. 128. ISBN 9780132017992.
  4. ^ Pond, James (31. August 2013). "Wie die Zeitmaschine seine Magie funktioniert". Dateisystemereignisspeicher, harte Links. Abgerufen 19. Mai, 2019.
  5. ^ "Linux -Kernel -Quellbaum, FS/ext4/ext4.h, Zeile 229".
  6. ^ "CreateHardLinka -Funktion (WinBase.h)". Windows App -Entwicklung. 13. Oktober 2021 - via Microsoft Docs.
  7. ^ Brown, Neil (23. November 2010). "Geister der Unix-Vergangenheit, Teil 4: wartungsfristige Designs mit hoher Pflege". Linux Weekly News. Abgerufen 20. April 2014.
  8. ^ "Wie harte Links funktionieren". Microsoft Docs.
  9. ^ "CreateHardLink -Funktion". Windows -Entwicklung. Microsoft. 10. März 2011. Archiviert vom Original am 2. Juli 2011 - via Msdn. Stellt einen harten Zusammenhang zwischen einer vorhandenen Datei und einer neuen Datei fest. Diese Funktion wird nur im NTFS -Dateisystem und nur für Dateien und nicht für Verzeichnisse unterstützt.{{}}: CS1 Wartung: Ungeeignete URL (Link)
  10. ^ a b "Fsutil hardlink". Windows App -Entwicklung. Microsoft. 18. April 2012 - über Microsoft Docs.
  11. ^ "Mklink". Microsoft Docs. Microsoft. 18. April 2012.
  12. ^ a b "New-Item (Powershell 3.0)". Microsoft Docs. Microsoft. 22. Juni 2020. Wenn sich Ihr Standort in einem Dateisystem -Laufwerk befindet, sind die folgenden Werte zulässig: Wenn sich Ihr Standort in einem Dateisystem -Laufwerk befindet, sind die folgenden Werte zulässig: Datei [,] Verzeichnis [,] Junction [,] Hardlink
  13. ^ a b "Dateisystemprovider.cs". Powershell / Powershell Repo. Microsoft. 20. November 2021. Zeilen 8139–8234 - via GitHub.
  14. ^ "OpenVMS System Manager's Manual, Vol. I" (PDF). Vsi. August 2019. Abgerufen 2021-01-23.