किस अर्थ में SATA "बात" SCSI करता है? SCSI और ATA के बीच कितना साझा किया जाता है?


27

यह कम से कम मेरे लिए कोई नई बात नहीं है, क्योंकि SATA वास्तव में "वार्ता" SCSI है, इसलिए ये SATA डिवाइस लिनक्स में SCSI उपकरणों के रूप में क्यों दिखाई देते हैं।

इससे पहले एक संबंधित प्रश्न पूछा गया है, उदाहरण के लिए मेरे SATA उपकरण / proc / scsi / scsi के अंतर्गत क्यों दिखाई देते हैं?

हालाँकि जो उल्लेख करने में विफल रहता है, जहाँ मैंने पहले इस पर चर्चा की है, वह वास्तव में किस अर्थ में SATA SCSI से संबंधित है, और वे कैसे भिन्न हैं।

मुझे लगता है कि यह मान लिया गया है कि वे भौतिक परत पर भिन्न हैं, क्योंकि वे संगत केबल साझा नहीं करते हैं।

हालांकि स्टैक पर उच्चतर क्या है? मुझे पता है कि कैसे लिनक्स SATA का प्रतिनिधित्व करता है और यहां तक ​​कि IDE डिस्क भी आधुनिक कर्नेल पर SCSI सबसिसी के लिए SCSI के रूप में। लेकिन वास्तविक प्रोटोकॉल के बारे में क्या है जो बस में उपयोग किया जाता है?

मुझे यह भी पता है कि एटीएपीआई एससीएसआई के लिए एक एनकैप्सुलेशन है, लेकिन नियमित एटीए के बारे में क्या? मैंने देखा है कि SCSI जैसे NCQ, FUA, DPO, आदि (यदि मुझे गलत याद नहीं है) जैसी सुविधाएँ SCSI द्वारा अपनाई गई हैं। लेकिन यह स्पष्ट नहीं है कि एससीएसआई कमांड सेट का "कितना" वास्तव में साझा या समान है।

अपने एटीए विनिर्देश के साथ आधुनिक एसएटीए उपकरण एससीएसआई कमांड सेट के एक सबसेट को लागू करते हैं, लेकिन एनैप्सुलेटेड (एटीएपीआई में)? एक समान सेट? एक सुपरसेट? या शायद केवल चयनित सुविधाओं को ऐसे वेरिएंट के रूप में लागू किया जाता है जो सीधे समान नहीं हैं?

मुझे इस पर कुछ स्पष्ट जानकारी कहां मिल सकती है, और विशेष रूप से यह लिनक्स कर्नेल से कैसे संबंधित है? ड्राइवर के विकास के लिए किसी तरह का ट्यूटोरियल अच्छा होगा, लेकिन यहां तक ​​कि सिर्फ एक अवलोकन जो पूरी तरह से सभी विवरणों को छोड़ देगा नहीं। मुझे पता है कि मैं सिर्फ वास्तविक विनिर्देश पढ़ सकता हूं, लेकिन यह फिर से बहुत विस्तृत है, जो आप वास्तव में खोज रहे हैं उसे खोजने के लिए कठिन है, और मेरे लिए यथार्थवादी नहीं है और शायद अस्थायी अर्थों में अधिकांश अन्य उपयोगकर्ता हैं।

जवाबों:


42

एससीएसआई और एटीए पूरी तरह से अलग मानक हैं। वर्तमान में वे दोनों INCITS मानकों के संगठन के तहत विकसित किए गए हैं, लेकिन विभिन्न समूहों द्वारा। SCSI तकनीकी समिति T10 के अंतर्गत है , जबकि ATA T13 के अंतर्गत है । 1

ATA को हार्ड डिस्क ड्राइव को ध्यान में रखकर डिजाइन किया गया था। SCSI व्यापक और पुराना दोनों है, बड़े पैमाने पर स्टोरेज डिवाइस, टेप ड्राइव, रिमूवेबल ऑप्टिकल मीडिया ड्राइव (सीडी, डीवीडी, ब्लू-रे ...), स्कैनर और कई अन्य डिवाइस प्रकारों को नियंत्रित करने का एक मानक तरीका है ।

यह 1980 के दशक के मध्य में स्पष्ट नहीं था - जब आईडीई को पीसी की दुनिया में पेश किया गया था - जिससे एससीएसआई कंप्यूटिंग दुनिया के हाशिये पर धकेल दिया जाएगा। SCSI अच्छी तरह से स्थापित और अधिक सक्षम था। यूनिक्स वर्कस्टेशन और मैकिंटोश कंप्यूटर ने दशकों से SCSI हार्ड डिस्क ड्राइव के साथ भेज दिया। हाई-एंड पीसी में अक्सर बाह्य उपकरणों के लिए SCSI कार्ड होता था, और अक्सर सिस्टम HDD के लिए भी। पर्सनल कंप्यूटर के लिए शुरुआती CD-ROM और टेप ड्राइव पहले SCSI फॉर्म में निकले थे।

पीसी उद्योग यह क्या है, हालांकि, एससीएसआई के बजाय कम महंगे एटीए मानक का उपयोग करने के लिए एक धक्का था। प्रारंभिक समझौते को एटीएपीआई कहा जाता था , एटीए के लिए एक विस्तार जो एक उपकरण की अनुमति देता है जो एससीएसआई को एटीए इंटरफेस पर उन एससीएसआई आदेशों को प्राप्त करने के लिए आंतरिक रूप से समझता है। इस पर अधिक नीचे।

कई साल बाद, SCSI को ATA कमांड पास-थ्रू सुविधा मिली , जो मूल रूप से ATAPI का विलोम है, जिससे ATA को SCSI बस के ऊपर कमांड की अनुमति मिलती है। इस सुविधा के लिए एक उपयोग SCA पर ATA SMART कमांड को टनल करना है । उदाहरण के लिए, smartmontoolsयह करता है

बाद में अभी भी, INCITS T10 समिति ने SCSI / ATA ट्रांसलेशन (SAT) नामक एक मानक विकसित किया, जो SCSI आदेशों को ATA कमांडों और इसके विपरीत में अनुवाद करता है। 2 लिनक्स कर्नेल की libataलाइब्रेरी लिनक्स के लिए अन्य चीजों के साथ सैट कार्यान्वयन प्रदान करती है ।

SCSI और ATA प्रोटोकॉल में कुछ तार्किक ओवरलैप हैं, क्योंकि वे दोनों हार्ड डिस्क ड्राइव को नियंत्रित करते हैं। दोनों को स्पष्ट रूप से एक विशेष हार्ड ड्राइव क्षेत्र की तलाश करने की आवश्यकता है, उस क्षेत्र की सामग्री को पुनः प्राप्त करें, आदि, फिर भी, कमांड प्रारूप पूरी तरह से अलग हैं; अन्यथा, हमें इन अनुवादों और पास-थ्रू तंत्रों की आवश्यकता नहीं होगी।

SATA वास्तव में "वार्ता" SCSI

यह उतना ही सत्य है जितना कि यह दावा कि "कारें गुलाबी हैं।" कुछ कारें गुलाबी हैं।

एटीएपीआई, एटीए पास-थ्रू और सैट कहानी का केवल एक हिस्सा है। पढ़ते रहिये।

मुझे लगता है कि यह मान लिया गया है कि वे भौतिक परत पर भिन्न हैं, क्योंकि वे संगत केबल साझा नहीं करते हैं।

यह पुराने समानांतर SCSI दुनिया में सच था , लेकिन जैसे SATA ने PATA को प्रतिस्थापित किया, SAS ने समानांतर SCSI को बदल दिया।

एसएएस और एसएटीए एक ही ड्राइव कनेक्टर्स साझा करते हैं, और वे विद्युत रूप से संगत हैं। एसएएस नियंत्रक एसएएस और एसएटीए उपकरणों से बात कर सकता है, लेकिन एसएएस ड्राइव केवल एसएटीए-नियंत्रक के साथ काम नहीं कर सकता है। अंतर बातचीत में है, और कमांड में आप केबल के प्रत्येक छोर पर उपकरणों के बाद उपयोग कर सकते हैं जो वे बात कर रहे हैं।

वास्तव में, बहुत सारे "SATA RAID" नियंत्रक वास्तव में SAS RAID नियंत्रक हैं। ऐसे नियंत्रकों में अक्सर कार्ड पर एक या एक से अधिक SFF-8087 SAS संभोग कनेक्टर होते हैं, लेकिन आप SATA ड्राइव को उनसे SFF-8087 से 4 × SATA ब्रेकआउट केबल के साथ जोड़ सकते हैं। तो, दो एसएएफएफ -8087 संभोग कनेक्टर्स के साथ एक एसएएस / एसएटीए RAID कार्ड 8 ड्राइव तक नियंत्रित करता है। 3

एक अन्य सामान्य स्थिति एसएएस बैकप्लेन के साथ एक हॉट-स्वैप ड्राइव एनक्लोजर या कंप्यूटर केस है । बैकप्लेन में आमतौर पर एक SFF-8087 कनेक्टर होता है, जो बैकप्लेन से डिस्क कंट्रोलर तक एक साधारण 8087-से -8087 केबल के उपयोग की अनुमति देता है। यदि हॉट-स्वैप ट्रे में ड्राइव SATA हैं, तो इससे कोई फर्क नहीं पड़ता। एसएएस नियंत्रक एसएएस केबलिंग पर उनसे बात कर सकते हैं, क्योंकि वे ड्राइव स्लेज में बैठते हैं जो ड्राइव को एसएएस बैकप्लेन में प्लग करते हैं। ड्राइव अभी भी SATA ड्राइव हैं, हालांकि, ATA प्रोटोकॉल बोल रहा है, SCSI नहीं।

मुझे यह भी पता है कि ATAPI SCSI के लिए एक एनकैप्सुलेशन है

सच है, लेकिन ATAPI का उपयोग केवल हार्ड डिस्क ड्राइव के अलावा अन्य उपकरणों के लिए किया जाता है । इस मानक के मौजूद होने का मुख्य कारण एक एटीए इंटरफ़ेस को टेप ड्राइव के लिए स्ट्रीमिंग डेटा कमांड्स, ऑप्टिकल डिस्क ड्राइव के लिए "इजेक्ट मीडिया" कमांड या सीडी ऑडियो डिस्क के लिए "प्ले ट्रैक" कमांड की तरह SCSI कमांड को ट्रांसपोर्ट करने की अनुमति देना है। ।

यह तथ्य कम प्रासंगिक हो रहा है क्योंकि गैर-एचडीडी उपकरण जो एटीएपीआई पर एससीएसआई बोलते थे, गायब हो जाते हैं या अन्य इंटरफेस पर चले जाते हैं। लो-एंड टेप ड्राइव अब मौजूद नहीं हैं, इसलिए टेप ड्राइव सभी SAS हैं। 4 स्कैनर्स इन दिनों बहुत अधिक यूएसबी-केवल हैं। ऑप्टिकल मीडिया ड्राइव USB के माध्यम से कनेक्ट होने के लिए कंप्यूटर के मामले से बाहर जा रहे हैं, या पूरी तरह से गायब हो रहे हैं, केवल तेजी से दुर्लभ आंतरिक ऑप्टिकल ड्राइव को छोड़कर ATAPI बोल रहा है।

बावजूद, एक एसएटीए डिवाइस जो एटीएपीआई पर एससीएसआई को समझता है, केवल एक सीमित तरीके से एक "एससीएसआई डिवाइस" है। एससीएसआई के ऊपर एसएएस के अधिकांश लाभों से ऐसे उपकरणों को लाभ नहीं होगा । एसएएसएटी, एटीएपीआई के बावजूद एसएएस की तुलना में ये क्षमताएं विशिष्ट रूप से मूल्यवान हैं।

यदि आप दूसरी कार सादृश्य चाहते हैं, तो इस तथ्य पर कि मैं अपनी कार को एक अंडाकार दौड़ ट्रैक पर चला सकता हूं, यह एक रेस कार नहीं है।

मैंने देखा है कि SCSI जैसे NCQ, FUA, DPO, आदि (यदि मुझे गलत याद नहीं है) जैसी सुविधाएँ SCSI द्वारा अपनाई गई हैं। लेकिन यह स्पष्ट नहीं है कि एससीएसआई कमांड सेट का "कितना" वास्तव में साझा या समान है।

अधिकांशतः यह कम मात्रा में मिमिक्री करता है। उदाहरण के लिए, NCQ टीसीक्यू के समान नहीं है । यदि आप SAS डिवाइस हैं तो आपको केवल TCQ के साथ हार्ड ड्राइव मिलेगी। एक NCQ- सक्षम SATA ड्राइव को SAS कंट्रोलर में प्लग करें, और यह अचानक TCQ क्षमता प्राप्त नहीं करता है।

उस ने कहा, एक आधुनिक SATA उपकरण एक दशक पहले से SCSI डिवाइस की तुलना में अधिक सक्षम हो सकता है। यह निश्चित रूप से I / O के उच्च स्तर के लिए सक्षम होने जा रहा है।

यह सब भ्रामक और अतिव्यापी है क्योंकि पीसी हार्डवेयर दुनिया की प्रकृति है। स्पष्ट रेखाएँ नहीं हैं क्योंकि ऑप्टिकल ड्राइव निर्माता - सिर्फ एक उप-उद्योग को चुनने के लिए - वास्तव में दो पूरी तरह से अलग ड्राइव का निर्माण नहीं करना चाहते हैं, एक एसएएस को इसकी उच्चतम अभिव्यक्ति, और दूसरा बोलने वाला एसएटीए। इसलिए, वे समझौता करते हैं। वे एक एकल मानक बनाने के लिए ऐसे मानकों को परिभाषित करने वाली समितियों में लॉबी करते हैं जो उन्हें एसएएस बस में अपने एसएटीए ड्राइव को छोड़ने देता है, और हर कोई ज्यादातर खुश है।

मुझे इस पर कुछ स्पष्ट जानकारी कहां मिल सकती है, और विशेष रूप से यह लिनक्स कर्नेल से कैसे संबंधित है?

अंततः, आप लिनक्स स्रोतों को पढ़ना चाहते हैंlibATAडेवलपर की मार्गदर्शिका भी सहायक होना चाहिए।

मैं यह सब कैसे काम करता है के किसी भी आसान सारांश के बारे में पता नहीं हूँ। यह आसान होने के लिए डिज़ाइन नहीं किया गया था। इसे तीन दशकों के हार्डवेयर विकास, प्रतिस्पर्धा मानकों और समायोजित लक्ष्यों को समायोजित करने के लिए डिज़ाइन किया गया था। इसके अलावा, यह दूरदर्शिता के जादुई स्तरों के बिना डिजाइन किया गया था। संक्षेप में, यह एक गड़बड़ है। केवल उन लोगों को जो वास्तव में यह जानना चाहते हैं कि गंदगी कैसे काम करती है, वे ओएस कर्नेल का निर्माण कर रहे हैं, जो हार्डवेयर डिजाइन कर रहे हैं, और कुछ हद तक, जो ओएस कर्नेल के लिए ड्राइवरों को लिख रहे हैं। अत्यधिक सक्षम लोगों के ऐसे छोटे कैडर के लिए, मानक और कार्य कोड पर्याप्त हैं।

आज, लिनक्स सबसे पुनर्लेखन योग्य मास-स्टोरेज डिवाइस कहता है /dev/sd?। "एसडी" एक बार "एससीएसआई डिस्क" के लिए खड़ा था, और /dev/hd?"हार्ड डिस्क" से सामान्य रूप से अलग होने के लिए मौजूद था , लेकिन ज्यादातर मामलों में PATA को लागू कर रहा था। यह भेद आज एक और व्यावहारिक अप्रासंगिकता है। अब हमारे पास SSDs, USB थंब ड्राइव, वर्चुअल हार्ड ड्राइव , iSCSI डिवाइसेस और अधिक सभी हैं /dev/sd?। मेरा सुझाव है कि आप "एसडी" को "स्टोरेज डिवाइस" के रूप में छोटा समझना शुरू कर दें, यह चिंता करने के बजाय कि क्या डिवाइस एसएटीए, एटीए पर ईथरनेट , एससीएसआई से अधिक एससीएसआई, यूएसबी पर एससीएसआई, एटीएपीआई पर एससीएसआई, एससीएसआई पर एससीएसआई, एससीएसआई के लिए एससीएसआई (आईएससीएसआई) पर बात करता है। ), या आपके पास क्या है।

मुख्य समस्या यह है कि योजनाओं के नामकरण अक्सर योजना के पीछे का कारण बनते हैं। आप इसमें देखें /dev/scd0। उस /devनोड से जुड़ा डिवाइस इन दिनों कॉम्पैक्ट डिस्क ड्राइव की तुलना में डीवीडी या ब्लू-रे ड्राइव होने की अधिक संभावना है।

वैकल्पिक - जहाँ आप प्रत्येक /devनोड का नाम उस सटीक डिवाइस प्रकार के नाम पर रखते हैं जो इससे जुड़ा है - इसकी अपनी समस्याएं हैं। क्या यह वास्तव में बेहतर होगा यदि हमने /devनिम्न-स्तरीय प्रोटोकॉल के बाद नोड का नाम दिया है? /dev/atapi0, /dev/sas0आदि? या शायद आप पसंद करेंगे /dev/atapibluray0और इस तरह? मल्टी-मीडिया ड्राइव के बारे में क्या? क्या /dev/atapicd0आप ब्लू-रे ड्राइव में कॉम्पैक्ट डिस्क को स्लाइड करने की स्थिति में भी उसी ड्राइवर को एक्सपोज़ करने की आवश्यकता है ? यह सिर्फ एक भ्रामक योजना को दूसरे के साथ बदल देता है।

लिनक्स का /dev/sd?अमूर्त सही नहीं है, लेकिन यह उपयोगी है। उदाहरण के लिए, आप इस तथ्य को जान सकते हैं /dev/sdaकि इस नाम के पीछे केबलिंग, इंटरफ़ेस प्रोटोकॉल और मीडिया के बारे में चिंता किए बिना बूट ड्राइव की सबसे अधिक संभावना है। अगर मैं आपको बताता हूं कि किसी दिए गए लिनक्स बॉक्स में एक एकल ड्राइव, एक ऑप्टिकल ड्राइव, और कभी-कभी एक यूएसबी थंब ड्राइव है, तो आप विश्वास कर सकते हैं कि वे क्रमशः कहलाते हैं /dev/sda, /dev/sdbऔर /dev/sdc


फ़ुटनोट्स :

  1. SCSI और ATA ने एक मूल मानक संगठन साझा करना शुरू नहीं किया। वे दोनों मालिकाना हार्ड डिस्क कंट्रोलर के रूप में शुरू हुए। एससीएसआई शुगार्ट एसोसिएट्स के एसएएसआई से विकसित हुआ , और एटीए / आईडीई पश्चिमी डिजिटल, कॉम्पैक और सीडीसी के बीच बहुत बाद में डिजाइन सहयोग से बाहर आया ।

    ANSI ने बाद में दोनों को मानकीकृत किया, लगभग 8 साल बाद SCSI-1 के बाद ATA-1 के साथ।

    INCITS ANSI के लिए एक प्रकार का बहन संगठन है । INCITS, अमेरिका में ANSI और ISO / IEC JTC 1 के माध्यम से अंतिम मानकों को प्रकाशित करता है।

  2. वर्तमान मानक SAT-3 है , जो मई 2015 में SAT-4 और SAT-5 प्रगति पर प्रकाशित हुआ है, जैसा कि मैंने जुलाई 2018 के मध्य में इसे लिखा था। बाद का लिंक आपको प्रगति के संस्करणों के ड्राफ्ट में ले जाता है।

  3. मैं SATA पोर्ट मल्टीप्लायरों , एसएएस विस्तारकों आदि की उपेक्षा कर रहा हूं ।

  4. पुराने समानांतर SCSI सिस्टम के साथ संगतता के लिए बनाए गए मॉडल को छोड़कर।


यह अभी भी मेरे लिए स्पष्ट नहीं है कि कुछ विशेषताएँ / कमांड सेट एटीए और एससीएसआई में समान हैं, और यह कितना बड़ा है अगर यह सब मौजूद है। मैं सहमत हूं कि लिनक्स स्रोत कोड को पढ़ने से कुछ उत्तर मिलेंगे, लेकिन यह शायद एटीए विनिर्देशन को पढ़ने के बराबर है। लिनक्स स्रोत शायद यह भी बहुत स्पष्ट दृष्टिकोण नहीं देगा कि कितना साझा किया गया है और इसे एटीए और एससीएसआई के बीच कैसे साझा किया गया है। हालांकि इस्तेमाल किए गए नामकरण सम्मेलनों को संभवतः लिनक्स स्रोत पढ़कर अधिक प्रबुद्ध किया जाएगा।
AttributedTensorField

@AttributedTensorField: नवीनतम संपादन देखें।
वॉरेन यंग

1
वाह, बहुत बढ़िया जवाब। बस एक बात; / देव / अतापी ०, / देव / सास ० आदि; यह बहुत ज्यादा नहीं है कि बीएसडी (कम से कम फ्रीबीएसडी) क्या करते हैं? साथ ही सोलारिस आईआईआरसी। और लिनक्स पर आमतौर पर / देव / डिस्क / बाय-पथ होता है जो कुछ इसी तरह का होता है।
एक CVn

@ माइकलकॉर्जलिंग: ज़रूर। टिप्पणी का मुद्दा यह नहीं है कि चीजों को देखने के ये अन्य तरीके गलत हैं, यह है कि नामकरण योजना को बेहतर मैच में बदलना जो नीचे चल रहा है, वह अंतर्निहित समस्या को दूर नहीं करता है। मैं एक लिनक्स के /dev/sd?अमूर्त की सराहना करता हूं ।
वॉरेन यंग

1
ध्यान दें कि इन दिनों अधिकांश डिस्ट्रो ऑप्टिकल ड्राइव को / dev / srN के रूप में उजागर करते हैं जहां N एक संख्या है।
पर्किन्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.