Gibt es eine Beschränkung der Anzahl von Hardlinks für eine Datei? Ist es irgendwo angegeben? Was sind sichere Grenzen für Linux? Und was für andere POSIX-Systeme?
quelle
Gibt es eine Beschränkung der Anzahl von Hardlinks für eine Datei? Ist es irgendwo angegeben? Was sind sichere Grenzen für Linux? Und was für andere POSIX-Systeme?
Posix setzt voraus, dass das Betriebssystem das Konzept von Hardlinks versteht, jedoch nicht, dass Hardlinks unter bestimmten Umständen tatsächlich verwendet werden können. Sie können durch Aufrufen herausfinden, wie viele feste Links an einem bestimmten Speicherort zulässig sind (dies kann je nach Dateisystemtyp variieren) . Die minimale Grenze ( ) ist 8, aber dies ist ziemlich bedeutungslos, da trotzdem viele andere Fehler gemeldet werden können (Berechtigung verweigert, Datenträger voll, ...).pathconf(filename, _PC_LINK_MAX)
_POSIX_LINK_MAX
link()
Die stat
Struktur speichert die Anzahl der Verknüpfungen in einem Feld vom Typ nlink_t
, sodass der Typ dieses Felds eine Obergrenze für Ihr System darstellt. Aber es ist gut möglich, dass Sie nie so weit kommen werden: nlink_t
In vielen Dateisystemen ist es üblich, dass 32-Bit-Dateien, aber nur 16-Bit-Dateien verwendet werden (ein kurzer Blick in der Linux-Quelle zeigt, dass ext [234], NTFS, UFS und XFS verwendet 16-Bit-Verbindungszählungen in den Kerneldatenstrukturen.
Dies ist abhängig vom Dateisystem.
Das ext2 / 3/4-Limit liegt bei 65k-Links
ext4 Sourceleitung 643,
struct ext4_inode
->__le16 i_links_count
quelle
Betrachtet man das Plattenformat der ext3-Inode-Struktur in den Linux-Kernel-Quellen (* include / linux / ext3_fs.h *), so werden die Links als 16-Bit-Zahl gezählt
Ich denke, das bedeutet, dass ein ext3-Dateisystem bis zu 65535 Links haben kann.
Ich habe die Werte für andere Dateisysteme nicht überprüft.
quelle