มีการ จำกัด จำนวนฮาร์ดลิงก์สำหรับหนึ่งไฟล์หรือไม่ มีการระบุไว้ที่ไหนหรือไม่? ขีด จำกัด ที่ปลอดภัยสำหรับ Linux คืออะไร แล้วระบบ POSIX อื่น ๆ ล่ะ?
มีการ จำกัด จำนวนฮาร์ดลิงก์สำหรับหนึ่งไฟล์หรือไม่ มีการระบุไว้ที่ไหนหรือไม่? ขีด จำกัด ที่ปลอดภัยสำหรับ Linux คืออะไร แล้วระบบ POSIX อื่น ๆ ล่ะ?
คำตอบ:
Posix ต้องการให้ระบบปฏิบัติการเข้าใจแนวคิดของฮาร์ดลิงก์ แต่ไม่สามารถใช้ฮาร์ดลิงก์ได้ในทุกสถานการณ์ คุณสามารถหาวิธีการเชื่อมโยงหลายยากที่จะได้รับอนุญาตในสถานที่โดยเฉพาะอย่างยิ่ง (นี้สามารถแตกต่างกันไปตามประเภทของระบบแฟ้ม) โดยการเรียก ขีด จำกัด ต่ำสุด ( ) เป็น 8 แต่นี่คือความหมายที่ค่อนข้างเป็นสามารถรายงานข้อผิดพลาดอื่น ๆ อีกมากมายเลยล่ะค่ะ (อนุญาตปฏิเสธดิสก์เต็ม ... )pathconf(filename, _PC_LINK_MAX)
_POSIX_LINK_MAX
link()
stat
ร้านค้าโครงสร้างนับการเชื่อมโยงในด้านการพิมพ์nlink_t
เพื่อให้ประเภทของข้อมูลนี้จะช่วยให้ขีด จำกัด บนในระบบของคุณ แต่มีโอกาสที่ดีที่คุณจะไม่สามารถเข้าถึงได้ไกล: เป็นเรื่องปกติที่จะมี 32- บิตnlink_t
แต่มีเพียง 16 บิตในระบบไฟล์จำนวนมาก (grep ด่วนในแหล่ง Linux แสดงให้เห็นว่า [234], NTFS, UFS และ XFS ใช้ลิงค์ 16 บิตในโครงสร้างข้อมูลเคอร์เนล)
นี่ขึ้นอยู่กับระบบไฟล์
ext2 / 3/4 ขีด จำกัด คือลิงก์ 65k
บรรทัดซอร์ส ext4 643, struct ext4_inode
->__le16 i_links_count
ดูที่รูปแบบดิสก์โครงสร้าง inode ของ ext3 ในแหล่งเคอร์เนล linux (* include / linux / ext3_fs.h *) ที่แสดงรายการลิงก์นับเป็นจำนวน 16 บิต
struct ext3_inode {
... snip ...
__le16 i_links_count; /* Links count */
}
ฉันเดาว่านั่นหมายความว่าระบบไฟล์ ext3 สามารถมีลิงค์ได้ถึง 65535 ลิงก์
ฉันไม่ได้ตรวจสอบค่าสำหรับระบบไฟล์อื่น ๆ