อีกสองสิ่ง: การย้ายของ Linux ไปยังองค์กรและเซิร์ฟเวอร์ขนาดใหญ่อื่น ๆ ก็คือการเปิดเผยแบบคง/dev
ที่จะเสีย เทคโนโลยีที่ก้าวหน้าทั้งในผู้บริโภคและองค์กรต่างเปิดเผยเรื่องตลก / dev เป็นเรื่องตลก [คำตอบนี้เต็มไปด้วย backstory มากกว่าโดยเฉพาะอย่างยิ่งทำไม devfs จึงถูกแทนที่ด้วย udev]
อ่อนเพลียจาก Major & Minor Number Space
/dev
ไฟล์จะถูกระบุภายในเคอร์เนลด้วยหมายเลขหลักและรองของพวกเขา เคอร์เนลไม่เคยสนใจชื่อจริง ๆ (และคุณสามารถทำได้mv /dev/sda /dev/disk-1
และมันจะทำงานต่อไปได้แม้ว่าโปรแกรมแน่นอนจะไม่รู้ว่าจะหาได้จากที่ไหน)
ด้วยสแตติก/dev
คุณต้องจัดสรรหมายเลขหลัก / รองสำหรับอุปกรณ์ที่อาจเกิดขึ้นได้ ตัวเลขเหล่านี้ต้องไม่ซ้ำกันทั่วโลกเนื่องจากส่งเป็นส่วนหนึ่งของ distros ไม่ได้สร้างขึ้นตามความต้องการ ปัญหาคือว่าพวกเขาแต่ละหมายเลข 8 บิต - ช่วงคือ 0–255
ตัวอย่างเช่นในตอนแรก Linux เริ่มต้นด้วย 8,0 เป็น sda, 8,1 เป็น sda1, 8,16 เป็น sdb เป็นต้น แต่ผู้คนก็เพิ่มดิสก์เข้ากับเครื่องมากขึ้นเรื่อย ๆ ดังนั้นในบางจุดมีการเพิ่มหมายเลขหลัก 65-71 สำหรับดิสก์เพิ่มเติม ต่อมาหมายเลขหลัก 128–135 แต่ถึงกระนั้นผู้คนก็ยังต้องการดิสก์เพิ่มมากขึ้น ...
และรูปแบบตารางพาร์ติชั่นเช่น GPT มารองรับพาร์ติชันเพิ่มเติมต่อดิสก์ และแน่นอนว่าอุปกรณ์อื่น ๆ กำลังกินพื้นที่จำนวน: ตัวควบคุม RAID ต่างๆการจัดการปริมาณตรรกะ ฯลฯ
ผลลัพธ์ที่สามารถมองเห็นได้ในรายการอุปกรณ์ LANANA ลินุกซ์ หากคุณดูที่รายการ 2.6 (มีเพียงรายการเดียวเท่านั้น) จำนวนบล็อกหลักที่สำคัญจนถึง 200 (สูงสุด: 255) - ใช้แล้ว เห็นได้ชัดว่าตัวเลขจะหมด
การเปลี่ยนเป็นตัวเลขขนาดใหญ่นั้นไม่ใช่เรื่องง่าย มันเปลี่ยนเคอร์เนล ABI มันเปลี่ยนเค้าโครงบนดิสก์ขึ้นอยู่กับระบบไฟล์ แต่แน่นอนว่าอุปกรณ์เหล่านั้นส่วนใหญ่ไม่ได้มีอยู่ในระบบใดระบบหนึ่งแม้แต่อุปกรณ์ที่มี (เช่น) ดิสก์ SCSI ที่หมดอาจมีของฟรีมากมาย - มันอาจไม่ต้องการฮาร์ดดิสก์ IBM XT ตัวอย่างเช่น.
ด้วยไดนามิกได/dev
รฟ์ไม่จำเป็นต้องจัดส่งหมายเลขอุปกรณ์ พวกเขาไม่จำเป็นต้องเป็นเอกลักษณ์ระดับโลกอีกต่อไป พวกเขาไม่จำเป็นต้องมีเอกลักษณ์ในรองเท้าบูท
ชื่ออุปกรณ์ไม่แน่นอน
มันเคยเป็นเรื่องง่ายที่จะกำหนดหมายเลขให้กับทุกสิ่ง กระดานมีสองช่อง IDE; แต่ละช่องสัญญาณ IDE รองรับหนึ่งต้นแบบและสลาฟหนึ่งช่อง คุณสามารถกำหนดตามลำดับช่องทางและคำสั่ง master-then-slave ดังนั้นhda
จะกลายเป็นช่องทางแรกต้นแบบ; hdb
ช่องแรกทาส; hdc
ช่องทางที่สองต้นแบบ; เป็นต้นซึ่งสามารถคาดเดาได้และมีเสถียรภาพ อาจเปลี่ยนแปลงได้หากคุณเพิ่มไดรฟ์ใหม่หรือลบออกหนึ่งรายการ แต่หากไม่มีการเปลี่ยนแปลงฮาร์ดแวร์
คุณสามารถใส่/dev/hda1
ในของคุณ/etc/fstab
และจะมีความมั่นใจว่ามันจะอยู่ในการทำงานอย่างน้อยการเปลี่ยนแปลงฮาร์ดแวร์ขาด
IDE ทำงานเช่นนั้น ไม่มีอะไรหลังจากนั้น
SATA ดูเหมือนง่าย: หนึ่งพอร์ตหนึ่งดิสก์ แต่ไม่เป็นเช่นนั้น มันช่วยให้ตัวคูณพอร์ต และช่วยให้การสลับร้อน ยังคงไม่มีการเปลี่ยนแปลงฮาร์ดแวร์คุณยังสามารถใช้งานการทำแผนที่ได้
USB แย่ลงมาก มันไม่เพียง แต่อนุญาตให้สลับร้อนเท่านั้นมันเป็นเรื่องปกติ ผู้คนเสียบ USB แฟลชไดรฟ์ตลอดเวลา เพิ่มเติมอุปกรณ์อาจใช้เวลาสักครู่ในการสอบสวนและสามารถเปลี่ยนแปลงได้ทุกเมื่อที่พวกเขารู้สึกว่ามันชอบ (เช่นเมื่อเปิดหรือปิดโหมดที่เก็บข้อมูล USB บนโทรศัพท์ของคุณ) Firewire คล้ายกัน คุณไม่สามารถสร้างแผนที่ที่มั่นคงขึ้นได้
ดิสก์ที่เชื่อมต่อเครือข่ายไม่มีคำสั่งพอร์ตโดยธรรมชาติ คำสั่งเดียวที่เคอร์เนลใช้คือเรียงตามลำดับที่ปรากฏพร้อมกับโลจิคัลวอลุ่ม
การแสวงหาความเร็วในการบู๊ตทำให้สิ่งต่าง ๆ แย่ลงด้วย ในขั้นต้นเคอร์เนลจะนั่งรออย่างมีความสุขและรอเวลาค่อนข้างนานเช่นอุปกรณ์ USB ทั้งหมดเพื่อเริ่มต้น ในการตรวจสอบบัส SCSI ทั้งหมดอย่างเต็มที่ ฯลฯ โพรบเหล่านั้นถูกสร้างเป็นงานพื้นหลัง การบูตจะไม่รออีกต่อไป อุปกรณ์ถูกเพิ่มเมื่อโพรบเสร็จสมบูรณ์
ดังนั้นเคอร์เนลจึงเหลืออยู่ไม่มากก็น้อย "ไม่ว่าจะเรียงลำดับอะไรก็ตาม" นั่นหมายความว่าหลายประเภทของอุปกรณ์ที่สามารถและไม่เปลี่ยนแปลงการสั่งซื้อทุกบูตสิ่งที่อยู่ในการบู๊ตเป็นในการบูตอีก/dev/sdb
/dev/sdc
เรื่องนี้ทำให้ความคิดของ/dev
เรื่องตลกคงที่
สรุป
เมื่อคุณใช้การรวมกันของคง/dev
กลายเป็นเนื่องจากความหมายมากขึ้นที่จะคาดเดาไม่ได้คำสั่งสอบสวนอุปกรณ์และต่อเนื่องในการจัดสรรหมายเลข / เล็ก ๆ น้อย ๆ /dev
ที่สำคัญคงนำไปสู่การทำงานอย่างมีนัยสำคัญที่จะไม่หมดมันจะกลายเป็นที่ชัดเจนว่าทำไมนักพัฒนาลินุกซ์เลือกที่จะเปลี่ยนไปแบบไดนามิก
/dev
ไม่ได้ (ง่ายหรือสะดวก) ที่อยู่สิ่งต่าง ๆ เช่นผู้ที่เสียบอะแดปเตอร์เครือข่าย USB หรืออะแดปเตอร์เครือข่ายเสมือนที่ถูกเพิ่มหรือถอดออกในขณะที่ระบบกำลังทำงาน ไม่มีอะไรหยุดคุณจากการถอนการติดตั้งudev
และกลับไปที่/dev
เส้นทางไดเรกทอรีแบบคงที่แบบเดิม