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