มีข้อ จำกัด ของฮาร์ดลิงก์หนึ่งไฟล์หรือไม่


24

มีการ จำกัด จำนวนฮาร์ดลิงก์สำหรับหนึ่งไฟล์หรือไม่ มีการระบุไว้ที่ไหนหรือไม่? ขีด จำกัด ที่ปลอดภัยสำหรับ Linux คืออะไร แล้วระบบ POSIX อื่น ๆ ล่ะ?

คำตอบ:


16

Posix ต้องการให้ระบบปฏิบัติการเข้าใจแนวคิดของฮาร์ดลิงก์ แต่ไม่สามารถใช้ฮาร์ดลิงก์ได้ในทุกสถานการณ์ คุณสามารถหาวิธีการเชื่อมโยงหลายยากที่จะได้รับอนุญาตในสถานที่โดยเฉพาะอย่างยิ่ง (นี้สามารถแตกต่างกันไปตามประเภทของระบบแฟ้ม) โดยการเรียก ขีด จำกัด ต่ำสุด ( ) เป็น 8 แต่นี่คือความหมายที่ค่อนข้างเป็นสามารถรายงานข้อผิดพลาดอื่น ๆ อีกมากมายเลยล่ะค่ะ (อนุญาตปฏิเสธดิสก์เต็ม ... )pathconf(filename, _PC_LINK_MAX)_POSIX_LINK_MAXlink()

statร้านค้าโครงสร้างนับการเชื่อมโยงในด้านการพิมพ์nlink_tเพื่อให้ประเภทของข้อมูลนี้จะช่วยให้ขีด จำกัด บนในระบบของคุณ แต่มีโอกาสที่ดีที่คุณจะไม่สามารถเข้าถึงได้ไกล: เป็นเรื่องปกติที่จะมี 32- บิตnlink_tแต่มีเพียง 16 บิตในระบบไฟล์จำนวนมาก (grep ด่วนในแหล่ง Linux แสดงให้เห็นว่า [234], NTFS, UFS และ XFS ใช้ลิงค์ 16 บิตในโครงสร้างข้อมูลเคอร์เนล)


เป็นส่วนเสริม: BTRFS ดูเหมือนว่าจะใช้จำนวนลิงค์ 8 บิต
Maciej Piechotka

@ ค่อนข้างการเชื่อมโยง 8 บิตสำหรับการเชื่อมโยงอย่างหนักในไดเรกทอรีเดียวกัน แต่นับ 32 บิตรวมตามโพสต์บล็อกนี้ /
Gilles 'ดังนั้น - หยุดความชั่วร้าย'

11

นี่ขึ้นอยู่กับระบบไฟล์

ext2 / 3/4 ขีด จำกัด คือลิงก์ 65k

บรรทัดซอร์ส ext4 643, struct ext4_inode->__le16 i_links_count


1
ขีด จำกัด ที่แท้จริงคือ 65534 รายการตัวนับสุดท้ายถูกใช้สำหรับชั่วคราวในการเปลี่ยนชื่อ () การเรียกระบบ
Joshua

4
แม้แต่น้อย (พบใน ext4.h เดียวกัน): / * จำนวนสูงสุดของการเชื่อมโยงไปยังไฟล์ * / #define EXT4_LINK_MAX 65000
PoltoS

10

ดูที่รูปแบบดิสก์โครงสร้าง inode ของ ext3 ในแหล่งเคอร์เนล linux (* include / linux / ext3_fs.h *) ที่แสดงรายการลิงก์นับเป็นจำนวน 16 บิต

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

}

ฉันเดาว่านั่นหมายความว่าระบบไฟล์ ext3 สามารถมีลิงค์ได้ถึง 65535 ลิงก์

ฉันไม่ได้ตรวจสอบค่าสำหรับระบบไฟล์อื่น ๆ


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.