Чи існує обмеження кількості жорстких посилань на один файл? Це десь вказано? Які безпечні обмеження для Linux? А що для інших систем POSIX?
Чи існує обмеження кількості жорстких посилань на один файл? Це десь вказано? Які безпечні обмеження для Linux? А що для інших систем POSIX?
Відповіді:
Posix вимагає, щоб операційна система розуміла поняття жорстких посилань, але не те, що жорсткі посилання можуть бути реально використані в будь-яких конкретних обставинах. Ви можете дізнатися, скільки жорстких посилань дозволено в певному місці (це може змінюватися залежно від типу файлової системи), зателефонувавши . Граничного мінімального ( ) є 8, але це досить безглуздо , як може повідомити багато інших помилок в будь-якому випадку (доступ заборонений, диск переповнений, ...).pathconf(filename, _PC_LINK_MAX)
_POSIX_LINK_MAX
link()
У stat
структурі зберігає посилання розраховувати в поле типу nlink_t
, так що тип цього поля дає верхню межу на вашій системі. Але є хороший шанс, що ви ніколи не зможете досягти такої далекості: звичайно мати 32-бітну, nlink_t
але лише 16 біт у багатьох файлових системах (швидкий греп у джерелі Linux показує, що ext [234], NTFS, UFS та XFS використовує 16-бітні підрахунки посилань у структурах даних ядра).
Це залежить від файлової системи.
Ліміт ext2 / 3/4 - 65k посилань
Рядок 643 джерела ext4 , struct ext4_inode
->__le16 i_links_count
Дивлячись на формат диска структури структури inode ext3 у джерелах ядра Linux (* include / linux / ext3_fs.h *), у якому перераховано посилання, що посилається як 16-бітове число
struct ext3_inode {
... snip ...
__le16 i_links_count; /* Links count */
}
Я думаю, це означає, що файлова система ext3 може мати до 65535 посилань.
Я не перевіряв значення для інших файлових систем.