Có giới hạn liên kết cứng cho một tệp không?


24

Có giới hạn số lượng liên kết cứng cho một tệp không? Nó được chỉ định ở bất cứ đâu? Giới hạn an toàn cho Linux là gì? Và những gì cho các hệ thống POSIX khác?

Câu trả lời:


16

Posix yêu cầu hệ điều hành phải hiểu khái niệm về liên kết cứng nhưng không phải là liên kết cứng thực sự có thể được sử dụng trong bất kỳ trường hợp cụ thể nào. Bạn có thể tìm hiểu có bao nhiêu liên kết cứng được cho phép tại một vị trí cụ thể (điều này có thể thay đổi theo loại hệ thống tệp) bằng cách gọi . Các giới hạn tối thiểu ( ) là 8, nhưng điều này là khá vô nghĩa như thể báo cáo nhiều lỗi khác anyway (cho phép từ chối, đĩa đầy đủ, ...).pathconf(filename, _PC_LINK_MAX)_POSIX_LINK_MAXlink()

Các statcửa hàng cấu trúc liên kết đếm trong một lĩnh vực loại nlink_t, vì vậy các loại lĩnh vực này đưa ra một giới hạn trên hệ thống của bạn. Nhưng có một cơ hội tốt mà bạn sẽ không bao giờ có thể đạt được đến mức đó: thông thường có 32 bit nlink_tnhưng chỉ có 16 bit trong nhiều hệ thống tệp (một grep nhanh trong nguồn Linux cho thấy ext [234], NTFS, UFS và XFS sử dụng số lượng liên kết 16 bit trong cấu trúc dữ liệu kernel).


Là một bổ sung: BTRFS dường như sử dụng số lượng liên kết 8 bit.
Maciej Piechotka

@Rather, số lượng liên kết 8 bit cho các liên kết cứng trong cùng thư mục, nhưng tổng số 32 bit, theo bài đăng trên blog này /
Gilles 'SO- ngừng trở nên xấu xa'

11

Đây là hệ thống tập tin phụ thuộc.

giới hạn ext2 / 3/4 là 65k liên kết

dòng nguồn ext4 643, struct ext4_inode->__le16 i_links_count


1
Giới hạn thực tế là 65534. Mục truy cập cuối cùng được sử dụng cho tạm thời trong lệnh gọi hệ thống đổi tên ().
Joshua

4
Thậm chí ít hơn (được tìm thấy trong cùng ext4.h): / * Số lượng liên kết tối đa đến một tệp * / #define EXT4 bit_MAX 65000
PoltoS

10

Nhìn vào định dạng đĩa cấu trúc inode ext3 trong các nguồn kernel linux (* include / linux / ext3_fs.h *) liệt kê các liên kết được tính là một số 16 bit

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

}

Tôi đoán điều đó có nghĩa là một hệ thống tập tin ext3 có thể có tới 65535 liên kết.

Tôi đã không kiểm tra các giá trị cho các hệ thống tập tin khác.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.