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ó 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:
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_MAX
link()
Các stat
cử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_t
như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).
Đâ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
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.