SATA“ พูดคุย” SCSI ในแง่ใด SCSI และ ATA ใช้ร่วมกันเท่าใด


27

อย่างน้อยก็ไม่มีอะไรใหม่สำหรับฉันที่ SATA "พูดถึง" SCSI จริง ๆ แล้วเหตุใดอุปกรณ์ SATA เหล่านี้จึงปรากฏเป็นอุปกรณ์ SCSI ใน Linux

มีการถามคำถามที่เกี่ยวข้องมาก่อนเช่นทำไมอุปกรณ์ SATA ของฉันถึงแสดงภายใต้ / proc / scsi / scsi

อย่างไรก็ตามสิ่งที่ล้มเหลวที่จะกล่าวถึงที่ฉันได้เห็นสิ่งที่กล่าวถึงก่อนหน้านี้เป็นสิ่งที่ SATA เกี่ยวข้องกับ SCSI และสิ่งที่แตกต่างกัน

ฉันคิดว่ามันใช้เพื่อยอมรับว่าพวกเขาแตกต่างกันในชั้นกายภาพเนื่องจากพวกเขาไม่ได้ใช้สายเคเบิลที่ใช้ร่วมกันได้

อย่างไรก็ตามสิ่งที่สูงขึ้นเกี่ยวกับสแต็ค? ฉันรู้ว่า Linux แสดงถึง SATA และแม้แต่ IDE ดิสก์บนเมล็ดที่ทันสมัยได้อย่างไรเช่นเดียวกับ SCSI กับระบบย่อย SCSI แต่แล้วโปรโตคอลจริงที่ใช้กับรถบัสล่ะ?

ฉันยังรู้ว่า ATAPI เป็น encapsulation สำหรับ SCSI แต่ ATA ปกติเป็นอย่างไร ฉันสังเกตเห็นว่าฟีเจอร์จาก SCSI เช่น NCQ, FUA, DPO และอื่น ๆ (ถ้าฉันจำไม่ผิด) ได้ถูกนำมาใช้จาก SCSI แต่มันไม่ชัดเจนว่าชุดคำสั่ง "มาก" ของ SCSI นั้นถูกแชร์หรือคล้ายกัน

อุปกรณ์ SATA ที่ทันสมัยที่มีข้อกำหนด ATA ของพวกเขาใช้ชุดย่อยของชุดคำสั่ง SCSI แต่มีแค็ปซูล (ดังใน ATAPI) หรือไม่ ชุดที่เหมือนกันหรือไม่ superset หรือไม่? หรือบางทีอาจจะใช้เฉพาะคุณสมบัติที่เลือกไว้ในรูปแบบที่ไม่เหมือนกันโดยตรง?

ฉันจะหาข้อมูลที่ชัดเจนเกี่ยวกับเรื่องนี้ได้อย่างไรและโดยเฉพาะอย่างยิ่งเกี่ยวข้องกับเคอร์เนล Linux อย่างไร บทเรียนบางอย่างสำหรับการพัฒนาโปรแกรมควบคุมจะดี แต่แม้เพียงแค่ภาพรวมที่ไม่ได้ข้ามรายละเอียดทั้งหมดก็เพียงพอแล้ว ฉันรู้ว่าฉันสามารถอ่านสเปคที่แท้จริงได้ แต่รายละเอียดนั้นมากเกินไปยากที่จะค้นหาสิ่งที่คุณกำลังมองหาและไม่จริงสำหรับฉันและอาจเป็นผู้ใช้รายอื่นในแง่ของเวลา

คำตอบ:


42

SCSI และ ATA นั้นมีมาตรฐานที่แตกต่างกันอย่างสิ้นเชิง พวกเขากำลังพัฒนาภายใต้การอุปถัมภ์ขององค์กรมาตรฐานINCITSแต่โดยกลุ่มต่าง ๆ SCSI อยู่ภายใต้คณะกรรมการด้านเทคนิคT10ขณะ ATA อยู่ภายใต้T13 1

ATA ได้รับการออกแบบโดยคำนึงถึงฮาร์ดดิสก์เป็นหลักเท่านั้น SCSI เป็นทั้งกว้างและรุ่นเก่าเป็นวิธีมาตรฐานในการควบคุมอุปกรณ์เก็บข้อมูลขนาดใหญ่, เทปไดรฟ์แบบถอดได้ไดรฟ์สื่อแสง (CD, DVD, Blu-Ray ... ), สแกนเนอร์และหลายประเภทอุปกรณ์อื่น

มันไม่ชัดเจนในช่วงกลางทศวรรษ 1980 - เมื่อ IDE ถูกนำเข้าสู่โลก PC - SCSI จะถูกผลักไปสู่ระยะขอบของโลกคอมพิวเตอร์ SCSI มีชื่อเสียงและมีความสามารถมากขึ้น เวิร์กสเตชัน Unixและคอมพิวเตอร์Macintosh ที่จัดส่งมาพร้อมกับฮาร์ดดิสก์ไดรฟ์ SCSI มานานหลายทศวรรษ พีซีระดับสูงมักจะมีการ์ด SCSI สำหรับอุปกรณ์ต่อพ่วงเป็นอย่างน้อยและสำหรับ HDD ระบบเช่นกัน ซีดีรอมและเทปไดร์ฟต้นสำหรับคอมพิวเตอร์ส่วนบุคคลออกมาในรูปแบบ SCSI ก่อน

อย่างไรก็ตามอุตสาหกรรมพีซีเป็นสิ่งที่เป็นอยู่แม้ว่าจะมีการผลักดันให้ใช้มาตรฐาน ATA ที่ราคาถูกกว่าแทน SCSI การประนีประนอมเบื้องต้นนั้นเรียกว่าATAPIซึ่งเป็นส่วนขยายของ ATA ที่อนุญาตให้อุปกรณ์ที่เข้าใจ SCSI ภายในเพื่อรับคำสั่ง SCSI ภายในผ่านอินเตอร์เฟส ATA เพิ่มเติมเกี่ยวกับเรื่องนี้ด้านล่าง

หลายปีต่อมา SCSI ได้รับคุณสมบัติการส่งผ่านคำสั่ง ATAโดยพื้นฐานแล้วสิ่งที่ตรงกันข้ามกับ ATAPI ทำให้สามารถสั่งคำสั่ง ATA ผ่านบัส SCSI ได้ สิ่งหนึ่งที่ใช้สำหรับสิ่งอำนวยความสะดวกนี้คือการใช้คำสั่งทันเนล ATA SMARTผ่าน SCSI smartmontoolsทำสิ่งนี้เช่น

ต่อมาคณะกรรมการ INCITS T10 ได้พัฒนามาตรฐานที่เรียกว่าการแปล SCSI / ATA (SAT) ซึ่งแปลคำสั่ง SCSI ไปเป็นคำสั่ง ATA และในทางกลับกัน 2ลินุกซ์เคอร์เนลของlibataห้องสมุดให้การดำเนินงานของ SAT สำหรับลินุกซ์ในหมู่สิ่งอื่น

มีการเหลื่อมกันแบบลอจิคัลในโพรโทคอล SCSI และ ATA เนื่องจากทั้งคู่ควบคุมฮาร์ดดิสก์ไดรฟ์ เห็นได้ชัดว่าทั้งสองต้องการวิธีในการค้นหาเซ็กเตอร์ฮาร์ดไดรฟ์เรียกเนื้อหาของเซกเตอร์ ฯลฯ อย่างไรก็ตามรูปแบบคำสั่งนั้นแตกต่างกันโดยสิ้นเชิง ไม่เช่นนั้นเราไม่จำเป็นต้องใช้กลไกการแปลและการส่งต่อเหล่านี้

SATA จริง "พูดถึง" SCSI

นั่นเป็นเรื่องจริงตามที่ยืนยันว่า "รถยนต์เป็นสีชมพู" รถยนต์บางคันเป็นสีชมพู

ATAPI, ATA pass-through และ SAT เป็นเพียงส่วนหนึ่งของเรื่องราว อ่านต่อ.

ฉันคิดว่ามันใช้เพื่อยอมรับว่าพวกเขาแตกต่างกันในชั้นกายภาพเนื่องจากพวกเขาไม่ได้ใช้สายเคเบิลที่ใช้ร่วมกันได้

นั่นเป็นความจริงในโลกSCSI แบบขนานเก่าแต่เช่นเดียวกับ SATA แทนที่ PATA, SASแทนที่ SCSI แบบขนาน

SAS และ SATA ใช้ตัวเชื่อมต่อไดรฟ์เดียวกันและเข้ากันได้กับระบบไฟฟ้า คอนโทรลเลอร์ SAS สามารถพูดคุยกับอุปกรณ์ SAS และ SATA ได้ แต่ไดรฟ์ SAS ไม่สามารถทำงานกับคอนโทรลเลอร์ SATA เท่านั้น ความแตกต่างคือในการเจรจาและในคำสั่งที่คุณสามารถใช้หลังจากอุปกรณ์ที่ปลายแต่ละด้านของสายเคเบิลระบุว่าพวกเขากำลังพูดถึงอะไร

ในความเป็นจริงคอนโทรลเลอร์ "SATA RAID" จำนวนมากเป็นคอนโทรลเลอร์ SAS RAID จริงๆ คอนโทรลเลอร์ดังกล่าวมักจะมีตัวเชื่อมต่อการผสมพันธุ์SFF-8087 SAS หนึ่งตัวหรือมากกว่านั้น แต่คุณสามารถเชื่อมต่อไดรฟ์ SATA เข้ากับพวกเขาได้ด้วยสายเคเบิลฝ่าวงล้อม SFF-8087 ถึง 4 × SATA ดังนั้นการ์ด SAS / SATA RAID ที่มีตัวเชื่อมต่อการผสมพันธุ์ SFF-8087 สองตัวควบคุมได้สูงสุด 8 ไดรฟ์ 3

อีกสถานการณ์ทั่วไปเป็นสิ่งที่แนบมาไดรฟ์ hot-swap หรือกรณีที่เครื่องคอมพิวเตอร์กับ SAS backplane แบ็คเพลนมักจะมีตัวเชื่อมต่อ SFF-8087 ที่สามารถใช้สายเคเบิล 8087-to-8087 อย่างง่ายจากแบ็คเพลนไปยังคอนโทรลเลอร์ของดิสก์ หากไดรฟ์ในถาด hot-swap เป็น SATA นั่นไม่ใช่เรื่องสำคัญ คอนโทรลเลอร์ SAS สามารถพูดคุยกับพวกเขาผ่านสายเคเบิล SAS ขณะที่พวกเขานั่งอยู่บนแคร่เลื่อนของไดรฟ์ที่เสียบไดรฟ์เข้ากับแบ็คเพลน SAS ไดรฟ์นั้นยังคงเป็นไดรฟ์ SATA แต่พูดถึงโปรโตคอล ATA ไม่ใช่ SCSI

ฉันยังรู้ว่า ATAPI เป็น encapsulation สำหรับ SCSI

จริง แต่ ATAPI ใช้สำหรับอุปกรณ์อื่นที่ไม่ใช่ฮาร์ดดิสก์เท่านั้น เหตุผลหลักที่มาตรฐานนี้มีอยู่คืออนุญาตให้อินเตอร์เฟส ATA ส่งคำสั่ง SCSI เช่นคำสั่งสตรีมข้อมูลสำหรับเทปไดร์ฟคำสั่ง "eject media" สำหรับออปติคัลดิสก์ไดรฟ์หรือคำสั่ง "play track" สำหรับแผ่นซีดีเพลง .

ความจริงเรื่องนี้มีความเกี่ยวข้องน้อยลงเนื่องจากอุปกรณ์ที่ไม่ใช่ HDD ที่ใช้พูด SCSI ผ่าน ATAPI นั้นหายไปหรือย้ายไปยังส่วนต่อประสานอื่น เทปไดร์ฟโลว์เอนด์ไม่มีอยู่แล้วเทปไดร์ฟจึงเป็น SAS ทั้งหมดในตอนนี้ 4เครื่องสแกนเนอร์เป็นแบบ USB เท่านั้นในปัจจุบัน สื่อออปติคัลไดรฟ์กำลังเคลื่อนที่นอกเคสคอมพิวเตอร์เพื่อเชื่อมต่อผ่าน USB หรือหายไปทั้งหมดทำให้เหลือเพียงออปติคัลไดรฟ์ภายในที่พูดยากขึ้นเรื่อย ๆ ที่พูดถึง ATAPI

ไม่ว่าอุปกรณ์ SATA ที่เข้าใจ SCSI ผ่าน ATAPI นั้นเป็น "อุปกรณ์ SCSI" ในทางที่ จำกัด เท่านั้น อุปกรณ์ดังกล่าวจะไม่ได้รับประโยชน์จากส่วนใหญ่ของข้อได้เปรียบของ SAS กว่า SCSI ความสามารถเหล่านี้ทำให้ SAS มีค่าอย่างชัดเจนเมื่อเทียบกับ SATA ATAPI ถึงแม้ว่า

หากคุณต้องการเปรียบเทียบรถคันอื่นความจริงที่ว่าฉันสามารถขับรถของฉันในสนามแข่งวงรีไม่ได้ทำให้มันเป็นรถแข่ง

ฉันสังเกตเห็นว่าฟีเจอร์จาก SCSI เช่น NCQ, FUA, DPO และอื่น ๆ (ถ้าฉันจำไม่ผิด) ได้ถูกนำมาใช้จาก SCSI แต่มันไม่ชัดเจนว่าชุดคำสั่ง "มาก" ของ SCSI นั้นถูกแชร์หรือคล้ายกัน

ส่วนใหญ่จำนวนนี้จะล้อเลียนต่ำสุด ตัวอย่างเช่นNCQ นั้นไม่เหมือนกับ TCQ คุณจะได้รับฮาร์ดไดรฟ์ที่มี TCQ หากเป็นอุปกรณ์ SAS เสียบไดรฟ์ SATA ที่ใช้งานได้กับ NCQ เข้ากับคอนโทรลเลอร์ SAS และไม่ได้รับความสามารถ TCQ ในทันที

ที่กล่าวว่าอุปกรณ์ SATA ที่ทันสมัยอาจมีความสามารถมากกว่าอุปกรณ์ SCSI เมื่อสิบปีที่แล้ว แน่นอนว่ามันจะมีความสามารถในระดับที่สูงขึ้นของ I / O

ทั้งหมดนี้ทำให้เกิดความสับสนและทับซ้อนกันเพราะนั่นคือลักษณะของโลกฮาร์ดแวร์พีซี ไม่มีเส้นที่ชัดเจนเนื่องจากผู้ผลิตออปติคัลไดรฟ์ - เพียงเพื่อเลือกในอุตสาหกรรมย่อย - ไม่ต้องการสร้างไดรฟ์ที่แตกต่างกันทั้งหมดสองตัว SAS หนึ่งตัวกำลังพูดถึงนิพจน์ที่สูงที่สุดและ SATA ที่พูดอีกตัว ดังนั้นพวกเขาประนีประนอม พวกเขาล็อบบี้ในคณะกรรมการที่กำหนดมาตรฐานดังกล่าวเพื่อสร้างมาตรฐานเดียวที่ช่วยให้พวกเขาวางไดรฟ์ SATA ของพวกเขาบนรถบัส SAS และทุกคนมีความสุขที่สุด

ฉันจะหาข้อมูลที่ชัดเจนเกี่ยวกับเรื่องนี้ได้อย่างไรและโดยเฉพาะอย่างยิ่งเกี่ยวข้องกับเคอร์เนล Linux อย่างไร

ในที่สุดคุณต้องการที่จะอ่านแหล่งที่มาของลินุกซ์ libATAคู่มือนักพัฒนาซอฟต์แวร์ยังควรจะเป็นประโยชน์

ฉันไม่ได้ตระหนักถึงการสรุปง่ายๆว่าการทำงานทั้งหมดนี้เป็นอย่างไร มันไม่ได้ออกแบบมาให้ง่าย มันถูกออกแบบมาเพื่อรองรับสามทศวรรษของการพัฒนาฮาร์ดแวร์มาตรฐานการแข่งขันและเป้าหมายที่แตกต่างกัน นอกจากนี้ยังได้รับการออกแบบโดยไม่มีการคาดการณ์ล่วงหน้า ในระยะสั้นมันเป็นระเบียบ มีเพียงคนเดียวเท่านั้นที่ต้องรู้ว่าระเบียบทำงานอย่างไรพวกที่สร้างเมล็ด OS, ผู้ออกแบบฮาร์ดแวร์และในระดับที่น้อยกว่าพวกที่เขียนไดรเวอร์สำหรับเมล็ด OS สำหรับคนกลุ่มเล็กที่มีความสามารถสูงมาตรฐานและรหัสการทำงานก็เพียงพอแล้ว

/dev/sd?วันนี้ลินุกซ์เรียกอุปกรณ์เก็บข้อมูลขนาดใหญ่ที่เขียนทับได้มากที่สุด "SD" ครั้งเดียว/dev/hd?หมายถึง " ดิสก์ SCSI" และมีอยู่เพียงเพื่อแยกความแตกต่างจากความหมายทั่วไป "ฮาร์ดดิสก์" แต่หมายถึง PATA ในกรณีส่วนใหญ่ ความแตกต่างนี้เป็นสิ่งที่ไม่เกี่ยวข้องกับการปฏิบัติในปัจจุบัน ตอนนี้เรามี SSDs ไดรฟ์ USB หัวแม่มือฮาร์ดไดรฟ์เสมือน , iSCSI/dev/sd?อุปกรณ์และเรียกอื่น ๆ ทั้งหมด ฉันขอแนะนำให้คุณเริ่มคิดว่า "SD" ย่อมาจาก "อุปกรณ์จัดเก็บข้อมูล" แทนที่จะกังวลว่าอุปกรณ์จะพูด ATA ผ่าน SATA, ATA ผ่าน Ethernet , SCSI ผ่าน USB , SCSI ผ่าน ATAPI, SCSI ผ่าน SAS, SCSI ผ่าน IP (iSCSI ) หรืออะไรที่มีคุณ

ปัญหาหลักคือแผนการตั้งชื่อมักจะอยู่ได้นานกว่าเหตุผลเบื้องหลังโครงร่าง /dev/scd0คุณเห็นนี้ อุปกรณ์ที่เชื่อมต่อกับ/devโหนดนั้นมีแนวโน้มที่จะเป็นไดรฟ์ DVD หรือ Blu-Ray มากกว่าไดรฟ์ Compact Disc ในปัจจุบัน

ทางเลือก - ที่คุณตั้งชื่อแต่ละ/devโหนดหลังจากประเภทอุปกรณ์ที่แน่นอนที่เชื่อมต่อกับมัน - มีปัญหาของตัวเอง มันจะดีกว่านี้หรือไม่ถ้าเราตั้งชื่อ/devโหนดหลังจากใช้โปรโตคอลระดับต่ำ /dev/atapi0, /dev/sas0ฯลฯ หรือบางทีคุณอาจต้องการ/dev/atapibluray0และเช่น? สิ่งที่เกี่ยวกับไดรฟ์มัลติมีเดีย? ต้องใช้ไดรเวอร์เดียวกันนี้/dev/atapicd0ในกรณีที่คุณเลื่อนแผ่นคอมแพคดิสก์ลงในไดรฟ์ Blu-Ray หรือไม่? นั่นเป็นเพียงการแทนที่รูปแบบหนึ่งที่สับสนด้วยอีก

/dev/sd?สิ่งที่เป็นนามธรรมของ Linux นั้นไม่สมบูรณ์แบบ แต่ก็มีประโยชน์ ตัวอย่างเช่นคุณสามารถเรียนรู้ข้อเท็จจริงที่/dev/sdaเป็นไปได้มากที่สุดว่าไดรฟ์สำหรับบูตโดยไม่ต้องกังวลว่าจะต้องเดินสายเคเบิลอินเทอร์เฟซโปรโตคอลและสื่อใดอยู่เบื้องหลังชื่อนั้น ถ้าผมบอกคุณได้ว่าได้รับกล่อง Linux มีไดรฟ์ระบบเดียวออปติคัลไดรฟ์และบางครั้งยังไดรฟ์ USB หัวแม่มือเสียบเข้ากับมันคุณมีความมั่นใจสามารถคาดเดาว่าพวกเขาจะเรียกว่า/dev/sda, /dev/sdbและ/dev/sdcตามลำดับ


เชิงอรรถ :

  1. SCSI และ ATA ไม่ได้เริ่มต้นแบ่งปันองค์กรมาตรฐานหลัก พวกเขาทั้งคู่เริ่มต้นจากการเป็นผู้ควบคุมฮาร์ดดิสก์ที่เป็นกรรมสิทธิ์ SCSI วิวัฒนาการมาจากSASIของShugart Associatesและ ATA / IDE มาจากความร่วมมือในการออกแบบระหว่าง Western Digital, Compaq และ CDC

    ANSI มาตรฐานในภายหลังทั้งสองด้วย ATA-1 ตาม SCSI-1 ประมาณ 8 ปีต่อมา

    INCITS เป็นชนิดขององค์กรน้องสาว ANSI INCITS เผยแพร่มาตรฐานขั้นสุดท้ายผ่าน ANSI ในสหรัฐอเมริกาและISO / IEC JTC 1ทั่วโลก

  2. มาตรฐานปัจจุบันคือSAT-3 ที่เผยแพร่ในเดือนพฤษภาคม 2558 โดยมี SAT-4 และ SAT-5 อยู่ระหว่างดำเนินการเนื่องจากฉันเขียนสิ่งนี้ในกลางเดือนกรกฎาคม 2561 ลิงก์หลังนำคุณไปสู่ร่างฉบับที่กำลังดำเนินการ

  3. ฉันไม่สนใจตัวคูณพอร์ต SATA , อุปกรณ์ขยาย SASฯลฯ

  4. ยกเว้นรุ่นที่สร้างขึ้นเพื่อความเข้ากันได้กับระบบ SCSI แบบขนานเก่า


มันยังไม่ชัดเจนสำหรับฉันถ้าชุดฟีเจอร์ / คำสั่งบางชุดเหมือนกันใน ATA และ SCSI และการรวมกันนี้มีขนาดใหญ่แค่ไหนถ้ามีอยู่ทั้งหมด ฉันยอมรับว่าการอ่านซอร์สโค้ด Linux จะให้คำตอบบางอย่าง แต่มันก็น่าจะเทียบเท่ากับการอ่านข้อกำหนด ATA แหล่ง Linux อาจไม่ให้มุมมองที่ชัดเจนว่ามีการแชร์เท่าใดและแบ่งใช้อย่างไรระหว่าง ATA และ SCSI อนุสัญญาการตั้งชื่อที่ใช้อาจจะเป็นความกระจ่างยิ่งขึ้นโดยการอ่านแหล่ง Linux แม้ว่า
AttributedTensorField

@AttributedTensorField: ดูการแก้ไขล่าสุด
Warren Young

1
ว้าวคำตอบที่ดี เพียงสิ่งหนึ่ง; / dev / atapi0, / dev / sas0 เป็นต้น; ไม่อย่างนั้น BSDs (อย่างน้อย FreeBSD) ทำอะไรได้บ้าง? เช่นเดียวกับ Solaris IIRC และบน Linux มักจะมี / dev / disk / by-path ซึ่งค่อนข้างคล้ายกัน
CVn

@ MichaelKjörling: แน่นอน ประเด็นของความคิดเห็นไม่ใช่ว่าวิธีอื่น ๆ ในการมองสิ่งต่าง ๆ ผิด แต่การเปลี่ยนรูปแบบการตั้งชื่อเพื่อให้ตรงกับสิ่งที่เกิดขึ้นภายใต้จะไม่ทำให้ปัญหาพื้นฐานหายไป ฉันขอชื่นชม/dev/sd?สิ่งที่เป็นนามธรรมของ Linux
Warren Young

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