Bir dosya için bir sabit bağlantı sınırı var mı?


24

Bir dosya için bir dizi sabit bağlantı sınırı var mı? Herhangi bir yerde belirtilmiş mi? Linux için güvenli sınırlar nelerdir? Peki ya diğer POSIX sistemleri için?

Yanıtlar:


16

Posix, işletim sisteminin sabit linkler kavramını anlamasını gerektirir, ancak sabit linklerin aslında herhangi bir özel durumda kullanılamayacağını gerektirir. Belirli bir yerde kaç tane sabit bağlantıya izin verildiğini (bu dosya sistemi türüne göre değişebilir) arayarak öğrenebilirsiniz . Minimum sınır ( ) 8, ama bu kadar oldukça anlamsız zaten birçok hataları bildirebilirsiniz (izin disk dolu, inkar, ...).pathconf(filename, _PC_LINK_MAX)_POSIX_LINK_MAXlink()

statYapı mağazaları bağlantı türünde bir alanda saymak nlink_tBu alanın tipi sisteminizde bir üst limit verir, böylece. Fakat o ana kadar asla ulaşamayacağınız için iyi bir şans var: 32-bit'in sık olması nlink_tbirçok dosya sisteminde yalnızca 16 bit olması (Linux kaynağındaki hızlı bir grep, [234], NTFS, UFS ve XFS, çekirdek veri yapılarında 16 bitlik bağlantı sayıları kullanır).


Ek olarak: BTRFS 8 bitlik bağlantı sayısını kullanıyor gibi görünüyor.
Maciej Piechotka

@Rather, toplamda sert aynı dizinde bağlantıları, ancak 32-bit sayım için 8 bitlik bağlantı sayısı, uygun bu blog yayınında /
Gilles 'SO dur olma kötülük'

11

Bu dosya sistemine bağlıdır.

ext2 / 3/4 sınırı 65k bağlantıdır

ext4 kaynak satırı 643, struct ext4_inode->__le16 i_links_count


1
Gerçek sınır 65534'tür. Son sayaç girişi rename () sistem çağrısında bir geçici süre için kullanılır.
Joshua

4
Daha az bile (aynı ext4.h içinde bulunur): / * Bir dosyaya maksimum bağlantı sayısı * / #define EXT4_LINK_MAX 65000
PoltoS

10

Bağlantı sayısının 16 bitlik bir sayı olduğunu listeleyen linux çekirdek kaynaklarındaki (* include / linux / ext3_fs.h *) ext3 inode yapısı disk biçimine bakıldığında

struct ext3_inode {
    ... snip ...
    __le16  i_links_count;  /* Links count */

}

Bunun bir ext3 dosya sisteminin 65535 bağlantıya sahip olabileceği anlamına geliyor.

Diğer dosya sistemlerinin değerlerini kontrol etmedim.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.