Apakah ada batasan hardlink untuk satu file?

24

Apakah ada batasan jumlah hardlink untuk satu file? Apakah ini ditentukan di mana saja? Apa batasan aman untuk Linux? Dan untuk apa sistem POSIX lainnya?

Maciej Piechotka
sumber

Jawaban:

16

Posix mensyaratkan bahwa sistem operasi memahami konsep tautan keras tetapi bukan bahwa tautan keras dapat benar-benar digunakan dalam keadaan tertentu. Anda dapat mengetahui berapa banyak tautan keras yang diizinkan di lokasi tertentu (ini dapat bervariasi menurut jenis sistem file) dengan menelepon . Batas minimum ( ) adalah 8, tetapi ini agak tidak berarti karena dapat melaporkan banyak kesalahan lainnya (izin ditolak, disk penuh, ...).pathconf(filename, _PC_LINK_MAX)_POSIX_LINK_MAXlink()

The stattoko struktur link yang menghitung di bidang jenis nlink_t, sehingga jenis bidang ini memberikan batas atas pada sistem Anda. Tapi ada peluang bagus Anda tidak akan pernah bisa mencapai sejauh itu: itu umum untuk memiliki 32-bit nlink_ttetapi hanya 16 bit di banyak sistem file (grep cepat dalam sumber Linux menunjukkan bahwa ext [234], NTFS, UFS dan XFS menggunakan jumlah tautan 16-bit dalam struktur data kernel).

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Sebagai suplemen: BTRFS tampaknya menggunakan jumlah tautan 8 bit.
Maciej Piechotka
@Rather, jumlah tautan 8-bit untuk tautan keras di direktori yang sama, tetapi jumlah total 32-bit, menurut posting blog ini /
Gilles 'SO- stop being evil'
11

Ini tergantung sistem file.

batas ext2 / 3/4 adalah 65k tautan

baris sumber ext4 643, struct ext4_inode->__le16 i_links_count

shellholic
sumber
1
Batas aktual adalah 65534. Entri penghitung terakhir digunakan untuk transien dalam pemanggilan nama sistem ().
Joshua
4
Bahkan lebih sedikit (ditemukan dalam ext4.h yang sama): / * Jumlah maksimal tautan ke file * / #define EXT4_LINK_MAX 65000
PoltoS
10

Melihat format disk struktur inode ext3 di sumber kernel linux (* include / linux / ext3_fs.h *) yang mencantumkan jumlah tautan sebagai angka 16 bit

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

}

Saya kira itu berarti bahwa filesystem ext3 dapat memiliki hingga 65535 tautan.

Saya belum memeriksa nilai untuk sistem file lain.

Richm
sumber