SATA는 어떤 의미에서 SCSI를 "통화"합니까? SCSI와 ATA는 얼마를 공유합니까?


27

SATA가 실제로 SCSI를 "통계"한다는 사실은 적어도 나에게는 새로운 것이 아니기 때문에 이러한 SATA 장치가 Linux에서 SCSI 장치로 나타나는 이유는 무엇입니까?

관련 질문이있었습니다. 예를 들어 왜 SATA 장치가 / proc / scsi / scsi에 표시됩니까?

그러나 앞에서 논의한 부분에서 언급하지 못한 것은 SATA가 SCSI와 어떤 의미를 갖는지, 어떻게 다른지에 대한 것입니다.

호환 가능한 케이블을 공유하지 않기 때문에 물리적 계층에서 서로 다른 것으로 간주됩니다.

그러나 스택에서 더 높은 것은 어떻습니까? 나는 리눅스가 SATA와 심지어 현대 커널의 IDE 디스크를 SCSI 서브 시스템에 대한 SCSI로 나타내는 방법을 알고 있습니다. 그러나 버스에서 사용되는 실제 프로토콜은 어떻습니까?

또한 ATAPI는 SCSI에 대한 캡슐화라는 것을 알고 있지만 일반 ATA는 어떻습니까? NCQ, FUA, DPO 등과 같은 SCSI의 기능 (잘못 기억하지 못하는 경우)이 SCSI에서 채택 된 것으로 나타났습니다. 그러나 SCSI 명령 세트의 "많은"이 실제로 공유되거나 유사한 지 확실하지 않습니다.

ATA 사양의 최신 SATA 장치는 SCSI 명령 세트의 서브 세트를 구현하지만 캡슐화되어 있습니까 (ATAPI에서와 같이)? 같은 세트? 슈퍼 셋? 아니면 선택한 기능 만 직접 동일하지 않은 변형으로 구현됩니까?

이것에 대한 명확한 정보를 어디에서 찾을 수 있습니까? 특히 Linux 커널과 어떻게 관련이 있습니까? 드라이버 개발을위한 튜토리얼은 좋겠지 만 모든 세부 사항을 완전히 건너 뛰지 않은 개요조차 충분합니다. 나는 실제 사양을 읽을 수 있다는 것을 알고 있지만, 너무 상세하고, 실제로 찾고있는 것을 찾기가 어려우며, 시간상의 의미에서 나와 다른 대부분의 사용자에게는 현실적이지 않습니다.

답변:


42

SCSI와 ATA는 완전히 다른 표준입니다. 그들은 현재 INCITS 표준 조직 의 후원하에 개발 되었지만 다른 그룹에 의해 개발되었습니다 . SCSI는 기술위원회 T10 에 있고 ATA는 T13에 있습니다. 1

ATA는 하드 디스크 드라이브만을 염두에두고 설계되었습니다. SCSI는 대용량 저장 장치, 테이프 드라이브, 이동식 광 매체 드라이브 (CD, DVD, Blu-Ray ...), 스캐너 및 기타 여러 장치 유형 을 제어하는 ​​표준 방법 인 더 넓고 오래되었습니다 .

IDE가 PC 세계에 도입 된 1980 년대 중반에는 SCSI가 컴퓨팅 세계의 한계에 도달 할 것이라는 것은 분명하지 않았습니다. SCSI는 잘 정립되어 있고 기능이 뛰어납니다. Unix 워크 스테이션Macintosh 컴퓨터는 수십 년 동안 SCSI 하드 디스크 드라이브와 함께 제공됩니다. 고급 PC에는 종종 주변 장치 용 SCSI 카드와 시스템 HDD 용 SCSI 카드가있는 경우가 종종 있습니다. 개인용 컴퓨터를위한 초기 CD-ROM과 테이프 드라이브는 먼저 SCSI 형식으로 나왔습니다.

그러나 PC 산업은 SCSI 대신 저렴한 ATA 표준을 사용해야한다는 압박이있었습니다. 초기 타협을 ATAPI 라고 했는데, 이는 내부적으로 SCSI를 이해하는 장치가 ATA 인터페이스를 통해 이러한 SCSI 명령을 수신 할 수 있도록 ATA의 확장입니다. 이에 대한 자세한 내용은 아래를 참조하십시오.

몇 년 후 SCSI는 ATA 명령 통과 기능 (기본적으로 ATAPI와 반대)을 사용하여 SCSI 버스를 통해 ATA 명령을 허용합니다. 이 기능의 한 가지 용도는 SCSI를 통해 ATA SMART 명령 을 터널링하는 것 입니다. smartmontools이 작업을 수행 예를 들어,.

나중에 INCITS T10위원회는 SCSI 명령을 ATA 명령으로, 그 반대로 변환하는 SCSI / ATA 변환 (SAT)이라는 표준을 개발했습니다. 2 Linux 커널 libata라이브러리무엇보다도 Linux에 대한 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 결합 커넥터가 있지만 SFF-8087 ~ 4x SATA 브레이크 아웃 케이블을 사용하여 SATA 드라이브를 연결할 수 있습니다. 따라서 2 개의 SFF-8087 결합 커넥터가있는 SAS / SATA RAID 카드는 최대 8 개의 드라이브를 제어합니다.

또 다른 일반적인 상황은 핫 스왑 드라이브 인클로저 또는 SAS 후면 판이 있는 컴퓨터 케이스입니다 . 백플레인에는 일반적으로 SFF-8087 커넥터가있어 백플레인에서 디스크 컨트롤러로 간단한 8087-8087 케이블을 사용할 수 있습니다. 핫 스왑 트레이의 드라이브가 SATA라면 상관 없습니다. SAS 컨트롤러는 드라이브를 SAS 후면 판에 연결하는 드라이브 슬 레드에 앉아 SAS 케이블을 통해 대화 할 수 있습니다. 그러나 드라이브는 여전히 SATA 드라이브이지만 SCSI가 아닌 ATA 프로토콜을 사용합니다.

또한 ATAPI는 SCSI의 캡슐화라는 것을 알고 있습니다.

사실,하지만 ATAPI는 장치에 사용되는 다른 하드 디스크 드라이브보다. 이 표준이 존재하는 주된 이유는 ATA 인터페이스가 테이프 드라이브의 스트리밍 데이터 명령, 광 디스크 드라이브의 "미디어 꺼내기"명령 또는 CD 오디오 디스크의 "재생 트랙"명령과 같은 SCSI 명령을 전송하도록하기위한 것입니다. .

ATAPI를 통해 SCSI를 사용하는 비 HDD 장치가 사라지거나 다른 인터페이스로 넘어 감에 따라이 사실은 덜 중요 해지고 있습니다. 로우 엔드 테이프 드라이브는 더 이상 존재하지 않으므로 테이프 드라이브는 모두 SAS입니다. 4 요즘 스캐너는 거의 USB 전용입니다. 광학 미디어 드라이브 는 컴퓨터 케이스 외부로 이동하여 USB를 통해 연결되거나 완전히 사라져 ATAPI를 말하는 드문 내부 광학 드라이브 만 남습니다.

어쨌든, SCSI over ATAPI를 이해하는 SATA 장치는 제한된 방식으로 만 "SCSI 장치"입니다. 이러한 장치는 SCSI를 통한 SAS장점 대부분을 활용할 수 없습니다 . 이러한 기능 덕분에 SAS는 ATAPI와는 달리 SATA와 비교했을 때 가치가 있습니다.

다른 자동차 비유를 원한다면 타원형 경주 트랙에서 내 차를 뛸 수 있다는 사실이 자동차 경주가되지 않습니다.

NCQ, FUA, DPO 등과 같은 SCSI의 기능 (잘못 기억하지 못하는 경우)이 SCSI에서 채택 된 것으로 나타났습니다. 그러나 SCSI 명령 세트의 "많은"이 실제로 공유되거나 유사한 지 확실하지 않습니다.

대부분 이것은 저가 모방에 해당합니다. 예를 들어 NCQ는 TCQ와 다릅니다 . SAS 장치 인 경우 TCQ가있는 하드 드라이브 만 받게됩니다. NCQ 가능 SATA 드라이브를 SAS 컨트롤러에 꽂으면 갑자기 TCQ 기능을 얻지 못합니다.

즉, 최신 SATA 장치는 10 년 전의 SCSI 장치보다 훨씬 더 기능적 일 수 있습니다. 확실히 더 높은 수준의 I / O가 가능할 것입니다.

이 모든 것이 PC 하드웨어 세계의 본질이기 때문에 혼란스럽고 겹칩니다. 하나의 하위 산업을 선택하는 광학 드라이브 제조업체는 두 개의 완전히 다른 드라이브, 하나는 SAS를 최고로 표현하고 다른 하나는 SATA를 구축하고 싶지 않기 때문에 명확한 선이 없습니다. 그래서 그들은 타협합니다. 그들은 그러한 표준을 정의하는위원회에서 로비를하여 SATA 드라이브를 SAS 버스에 떨어 뜨릴 수있는 단일 표준을 만들도록했으며, 모두가 행복합니다.

이것에 대한 명확한 정보를 어디에서 찾을 수 있습니까? 특히 Linux 커널과 어떻게 관련이 있습니까?

궁극적으로 Linux 소스읽고 싶습니다 . libATA개발자 가이드는 또한 도움이 될 것이다.

이 모든 것이 어떻게 작동하는지 쉽게 알 수 없습니다. 쉽게 설계되지 않았습니다. 30 년의 하드웨어 진화, 경쟁 표준 및 개별 목표를 수용하도록 설계되었습니다. 또한, 마법의 수준의 예언없이 설계되었습니다. 요컨대, 엉망입니다. 혼란이 어떻게 작동하는지 실제로 알아야하는 유일한 사람들은 OS 커널을 만드는 사람들, 하드웨어를 디자인하는 사람들, 그리고 OS 커널을위한 드라이버를 쓰는 사람들입니다. 능력이 뛰어난 사람들로 구성된 작은 간부에게는 표준과 작업 코드로 충분합니다.

오늘날 리눅스는 재기록 가능한 대용량 저장 장치라고 부릅니다 /dev/sd?. "SD"는 한때 "SCSI 디스크"를 /dev/hd?의미하며, 일반적으로 "하드 디스크"를 의미 하는 것과 구별하기 위해 존재 했지만 대부분의 경우 PATA를 의미합니다. 이 차이점은 오늘날 또 다른 실질적인 부적절 성입니다. 이제 SSD, USB 썸 드라이브, 가상 하드 드라이브 , iSCSI 장치 등이 있습니다 /dev/sd?. 장치가 ATA over SATA, ATA over Ethernet , SCSI over USB , SCSI over ATAPI, SCSI over SAS, SCSI over IP (iSCSI)를 말하는지 걱정하지 말고 "SD"를 "스토리지 장치"의 줄임말로 생각하십시오. ) 또는 무엇을 가지고 있습니까?

핵심 문제는 이름 지정 체계가 종종 계획 뒤에있는 이유보다 오래 지속된다는 것입니다. 에서이 내용을 볼 수 있습니다 /dev/scd0. 해당 /dev노드에 연결된 장치 는 요즘 컴팩트 디스크 드라이브보다 DVD 또는 Blu-Ray 드라이브 일 가능성이 높습니다.

/dev연결된 정확한 장치 유형에 따라 각 노드의 이름을 지정하는 대안 에는 고유 한 문제가 있습니다. /dev사용한 하위 수준 프로토콜의 이름을 따서 노드 이름을 지정하면 더 좋을까요? /dev/atapi0, /dev/sas0등? 아니면 당신이 선호하는 /dev/atapibluray0그런? 멀티미디어 드라이브는 어떻습니까? /dev/atapicd0컴팩트 디스크를 Blu-Ray 드라이브로 밀어 넣는 경우 에도 동일한 드라이버를 노출해야 합니까? 그것은 하나의 혼란스러운 계획을 다른 것으로 대체합니다.

리눅스의 /dev/sd?추상화는 완벽하지는 않지만 유용하다. 예를 들어, /dev/sda그 이름 뒤에 어떤 케이블 링, 인터페이스 프로토콜 및 미디어가 있는지 걱정할 필요없이 부팅 드라이브 일 가능성이 높습니다. 내가 당신에게 말할 경우 주어진 리눅스 박스가 하나의 시스템 드라이브, 광학 드라이브가, 때로는에 연결된 USB 썸 드라이브를 가지고, 당신은 자신있게 그들이라는 것을 추측 할 수 /dev/sda, /dev/sdb/dev/sdc각각.


각주 :

  1. SCSI와 ATA는 부모 표준 조직을 공유하기 시작하지 않았습니다. 둘 다 독점적 인 하드 디스크 컨트롤러로 시작했습니다. SCSI는 Shugart AssociatesSASI 에서 발전했으며 ATA / IDE는 Western Digital, Compaq 및 CDC 간의 훨씬 더 많은 설계 협업 에서 나왔습니다 .

    ANSI는 약 8 년 후에 SCSI-1에 이어 ATA-1을 사용하여 두 표준을 표준화했습니다.

    INCITS는 ANSI에 대한 일종의 자매 조직 입니다. INCITS는 미국의 ANSI 및 전세계 ISO / IEC JTC 1을 통해 최종 표준을 발표 합니다.

  2. 현재 표준은 2015 년 5 월에 게시 된 SAT-3 이며 2018 년 7 월 중순에 SAT-4 및 SAT-5 가 작성 중 입니다. 후자의 링크는 진행중인 버전의 초안으로 연결됩니다.

  3. SATA 포트 멀티 플라이어 , SAS 확장기 등을 무시하고 있습니다 .

  4. 구형 병렬 SCSI 시스템과의 호환성을 위해 만들어진 모델을 제외하고.


ATA와 SCSI에서 일부 기능 / 명령 세트가 동일한 지 여부와이 결합이 존재하는 경우이 조합의 크기는 아직 명확하지 않습니다. 나는 리눅스 소스 코드를 읽는 것이 약간의 대답을 줄 것이라는 데 동의하지만 아마도 ATA 사양 자체를 읽는 것과 동등 할 것입니다. 리눅스 소스는 아마도 얼마나 많은 것이 공유되고 있고 ATA와 SCSI 사이에서 어떻게 공유되는지에 대한 명확한 정보를 제공하지 않을 것입니다. 리눅스 소스를 읽으면 아마도 명명 규칙이 더 밝아 질 것입니다.
AttributedTensorField

@AttributedTensorField : 최신 편집 내용을 참조하십시오.
워렌 영

1
와우, 좋은 대답입니다. 단 하나; / dev / atapi0, / dev / sas0 등; BSD (적어도 FreeBSD)가하는 일이 그렇게 많지 않습니까? Solaris IIRC뿐만 아니라 그리고 리눅스에는 보통 비슷한 / dev / disk / by-path가 있습니다.
CVn

@ MichaelKjörling : 물론입니다. 의견의 요점은 사물을 보는 이러한 다른 방법이 잘못되었다는 것이 아니라, 진행중인 일에 더 잘 맞도록 명명 체계를 변경해도 근본적인 문제가 사라지지 않는다는 것입니다. 나는 리눅스의 /dev/sd?추상화에 감사한다 .
워렌 영

1
요즘 대부분의 배포판에서는 광학 드라이브가 / dev / srN으로 노출되며 여기서 N은 숫자입니다.
Perkins
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.