Theo nghĩa nào thì nói chuyện với nhau Bao nhiêu được chia sẻ giữa SCSI và ATA?


27

Điều này đối với tôi ít nhất là không có gì, rằng SATA thực sự "nói" SCSI, do đó tại sao các thiết bị SATA này hiển thị dưới dạng thiết bị SCSI trong Linux.

Một câu hỏi liên quan đã được hỏi trước đây, ví dụ: Tại sao các thiết bị SATA của tôi hiển thị dưới / Proc / scsi / scsi?

Tuy nhiên, điều không được đề cập ở nơi tôi đã thấy điều này được thảo luận trước đây chính xác là ý nghĩa của SATA liên quan đến SCSI và sự khác biệt của chúng.

Tôi cho rằng nó được coi là chúng khác nhau trên lớp vật lý, vì chúng không chia sẻ cáp tương thích.

Tuy nhiên những gì về cao hơn trên ngăn xếp? Tôi nhận thức được cách Linux đại diện cho các đĩa SATA và thậm chí IDE trên các hạt nhân hiện đại như chỉ là SCSI cho hệ thống con SCSI. Nhưng những gì về giao thức thực tế được sử dụng trên xe buýt?

Tôi cũng biết rằng ATAPI là một gói gọn cho SCSI, nhưng còn ATA thông thường thì sao? Tôi đã nhận thấy rằng các tính năng từ SCSI như NCQ, FUA, DPO, v.v (nếu tôi không nhớ không chính xác) đã được áp dụng từ SCSI. Nhưng không rõ "bao nhiêu" của bộ lệnh SCSI thực sự được chia sẻ hoặc tương tự.

Các thiết bị SATA hiện đại có thông số ATA của chúng có thực hiện một tập hợp con của tập lệnh SCSI, nhưng được gói gọn (như trong ATAPI) không? Một bộ giống hệt nhau? Một superset? Hoặc có lẽ chỉ các tính năng được chọn mới được triển khai dưới dạng các biến thể không giống nhau trực tiếp?

Tôi có thể tìm thấy một số thông tin rõ ràng về vấn đề này ở đâu và đặc biệt là nó liên quan đến nhân Linux như thế nào? Một số loại hướng dẫn để phát triển trình điều khiển sẽ rất hay, nhưng thậm chí chỉ là một tổng quan không hoàn toàn bỏ qua tất cả các chi tiết sẽ đủ. Tôi biết rằng tôi chỉ có thể đọc thông số kỹ thuật thực tế, nhưng điều đó lại quá chi tiết, khó tìm thấy những gì bạn thực sự đang tìm kiếm, và không thực tế đối với tôi và có lẽ hầu hết những người dùng khác theo nghĩa tạm thời.

Câu trả lời:


42

SCSI và ATA là các tiêu chuẩn hoàn toàn khác nhau. Chúng hiện đang được phát triển dưới sự bảo trợ của tổ chức tiêu chuẩn INCITS nhưng bởi các nhóm khác nhau. SCSI thuộc ủy ban kỹ thuật T10 , còn ATA dưới T13 . 1

ATA chỉ được thiết kế với các ổ đĩa cứng. SCSI rộng hơn và cũ hơn, là một cách tiêu chuẩn để kiểm soát các thiết bị lưu trữ dung lượng lớn, ổ đĩa băng, ổ đĩa phương tiện quang di động (CD, DVD, Blu-Ray ...), máy quét và nhiều loại thiết bị khác .

Không rõ ràng vào giữa những năm 1980 - khi IDE được giới thiệu với thế giới PC - rằng SCSI sẽ bị đẩy vào lề của thế giới điện toán. SCSI được thiết lập tốt và có khả năng hơn. Máy trạm Unixmáy tính Macintosh được vận chuyển với ổ đĩa cứng SCSI trong nhiều thập kỷ. Các PC cao cấp thường có thẻ SCSI cho các thiết bị ngoại vi ít nhất và thường cho cả hệ thống HDD. Các ổ đĩa CD-ROM và băng đầu tiên cho máy tính cá nhân xuất hiện dưới dạng SCSI trước tiên.

Tuy nhiên, ngành công nghiệp PC là như vậy, đã có một sự thúc đẩy sử dụng tiêu chuẩn ATA ít tốn kém hơn thay vì SCSI. Sự thỏa hiệp ban đầu được gọi là ATAPI , một phần mở rộng của ATA cho phép một thiết bị hiểu nội bộ SCSI để nhận các lệnh SCSI đó qua giao diện ATA. Thêm về điều này dưới đây.

Vài năm sau, SCSI có tính năng chuyển qua lệnh ATA , về cơ bản là nghịch đảo của ATAPI, cho phép các lệnh ATA trên một bus SCSI. Một cách sử dụng cho cơ sở này là tạo đường hầm các lệnh ATA SMART qua SCSI. smartmontoolslàm điều này , ví dụ.

Sau đó, ủy ban INCITS T10 đã phát triển một tiêu chuẩn gọi là Dịch SCSI / ATA (SAT), dịch các lệnh SCSI sang các lệnh ATA và ngược lại. 2 libataThư viện của nhân Linux cung cấp triển khai SAT cho Linux, trong số những thứ khác .

Có một số sự trùng lặp logic trong các giao thức SCSI và ATA, vì cả hai đều điều khiển các ổ đĩa cứng. Cả hai rõ ràng cần một cách để tìm kiếm một khu vực ổ cứng cụ thể, lấy nội dung của khu vực đó, v.v. Tuy nhiên, các định dạng lệnh hoàn toàn khác nhau; mặt khác, chúng ta sẽ không cần các cơ chế dịch thuật và thông qua này.

SATA thực sự "nói" SCSI

Điều đó đúng như lời khẳng định rằng "Ô tô có màu hồng". Một số xe có màu hồng.

ATAPI, ATA thông qua và SAT chỉ là một phần của câu chuyện. Đọc tiếp.

Tôi cho rằng nó được coi là chúng khác nhau trên lớp vật lý, vì chúng không chia sẻ cáp tương thích.

Điều đó đúng trong thế giới SCSI song song cũ , nhưng cũng giống như SATA thay thế PATA, SAS thay thế SCSI song song.

SAS và SATA chia sẻ cùng một đầu nối ổ đĩa và chúng tương thích với nhau về điện. Bộ điều khiển SAS có thể nói chuyện với các thiết bị SAS và SATA, nhưng ổ đĩa SAS không thể hoạt động với bộ điều khiển chỉ có SATA. Sự khác biệt là trong đàm phán và trong các lệnh bạn có thể sử dụng sau khi các thiết bị ở mỗi đầu cáp tìm ra những gì chúng đang nói chuyện.

Trên thực tế, rất nhiều bộ điều khiển "RAID RAID" thực sự là bộ điều khiển RAID RAID. Các bộ điều khiển như vậy thường có một hoặc nhiều đầu nối giao phối SFF-8087 SAS trên thẻ, nhưng bạn có thể kết nối các ổ đĩa SATA với chúng bằng cáp ngắt SFF-8087 đến 4 × SATA. Vì vậy, thẻ RAID SAS / SATA với hai đầu nối giao phối SFF-8087 điều khiển tối đa 8 ổ đĩa. 3

Một tình huống phổ biến khác là vỏ ổ đĩa trao đổi nóng hoặc vỏ máy tính với bảng nối đa năng SAS . Bảng nối đa năng thường có đầu nối SFF-8087 trên đó, cho phép sử dụng cáp 8087 đến 8087 đơn giản từ bảng nối đa năng đến bộ điều khiển đĩa. Nếu các ổ đĩa trong các khay trao đổi nóng là SATA, thì đó không phải là vấn đề. Bộ điều khiển SAS có thể nói chuyện với họ qua hệ thống cáp SAS, khi họ ngồi trong các ổ đĩa trượt các ổ cắm vào bảng nối đa năng của SAS. Các ổ đĩa vẫn là ổ đĩa SATA, tuy nhiên, nói giao thức ATA, không phải SCSI.

Tôi cũng biết rằng ATAPI là sự đóng gói cho SCSI

Đúng, nhưng ATAPI chỉ được sử dụng cho các thiết bị không phải là ổ đĩa cứng. Lý do chính khiến tiêu chuẩn này tồn tại là cho phép giao diện ATA vận chuyển các lệnh SCSI như các lệnh truyền dữ liệu cho ổ đĩa băng, lệnh "đẩy phương tiện truyền thông" cho ổ đĩa quang hoặc lệnh "phát theo dõi" cho đĩa âm thanh CD .

Thực tế này đang trở nên ít liên quan hơn khi các thiết bị không phải ổ cứng được sử dụng để nói SCSI qua ATAPI biến mất hoặc chuyển sang các giao diện khác. Ổ đĩa băng cấp thấp không còn tồn tại, vì vậy ổ đĩa băng hiện nay đều là SAS. 4 Máy quét hiện nay chỉ có khá nhiều USB. Các ổ đĩa phương tiện truyền thông quang đang di chuyển bên ngoài vỏ máy tính để được kết nối qua USB hoặc biến mất hoàn toàn, chỉ còn lại các ổ đĩa quang bên trong ngày càng hiếm nói ATAPI.

Bất kể, một thiết bị SATA hiểu SCSI qua ATAPI chỉ là một "thiết bị SCSI" theo một cách hạn chế. Các thiết bị như vậy sẽ không được hưởng lợi từ hầu hết các lợi thế của SAS so với SCSI . Những khả năng này làm cho SAS có giá trị rõ rệt so với SATA, ATAPI.

Nếu bạn muốn một chiếc xe tương tự khác, thực tế là tôi có thể chạy xe của mình trên đường đua hình bầu dục không biến nó thành một chiếc xe đua.

Tôi đã nhận thấy rằng các tính năng từ SCSI như NCQ, FUA, DPO, v.v (nếu tôi không nhớ không chính xác) đã được áp dụng từ SCSI. Nhưng không rõ "bao nhiêu" của bộ lệnh SCSI thực sự được chia sẻ hoặc tương tự.

Chủ yếu là số tiền này để bắt chước cấp thấp. NCQ không giống với TCQ chẳng hạn. Bạn sẽ chỉ nhận được một ổ cứng với TCQ nếu đó là thiết bị SAS. Cắm ổ đĩa SATA có khả năng NCQ vào bộ điều khiển SAS và nó không đột nhiên đạt được khả năng TCQ.

Điều đó nói rằng, một thiết bị SATA hiện đại có thể có khả năng cao hơn nhiều so với thiết bị SCSI từ một thập kỷ trước. Nó chắc chắn sẽ có khả năng I / O ở mức cao hơn nhiều.

Tất cả điều này là khó hiểu và chồng chéo vì đó là bản chất của thế giới phần cứng PC. Không có dòng nào rõ ràng bởi vì các nhà sản xuất ổ đĩa quang - chỉ chọn một ngành công nghiệp phụ - thực sự không muốn xây dựng hai ổ đĩa hoàn toàn khác nhau, một nói tiếng SAS với biểu hiện cao nhất của nó và SATA nói khác. Vì vậy, họ thỏa hiệp. Họ vận động hành lang trong các ủy ban xác định các tiêu chuẩn như vậy để tạo ra một tiêu chuẩn duy nhất cho phép họ thả ổ đĩa SATA của họ trên xe buýt SAS và mọi người đều vui mừng.

Tôi có thể tìm thấy một số thông tin rõ ràng về vấn đề này ở đâu và đặc biệt là nó liên quan đến nhân Linux như thế nào?

Cuối cùng, bạn muốn đọc các nguồn Linux . Các libATAhướng dẫn của nhà phát triển cũng nên hữu ích.

Tôi không biết bất kỳ tóm tắt dễ dàng về cách tất cả những điều này hoạt động. Nó không được thiết kế để dễ dàng. Nó được thiết kế để phù hợp với ba thập kỷ tiến hóa phần cứng, các tiêu chuẩn cạnh tranh và các mục tiêu khác nhau. Hơn nữa, nó được thiết kế mà không có tầm nhìn xa kỳ diệu. Nói tóm lại, đó là một mớ hỗn độn. Những người duy nhất thực sự phải biết cách thức hoạt động của mớ hỗn độn là những người xây dựng các nhân hệ điều hành, những người thiết kế phần cứng và ở mức độ thấp hơn là những người viết trình điều khiển cho các nhân hệ điều hành. Đối với một cán bộ nhỏ của những người có khả năng cao, tiêu chuẩn và quy tắc làm việc là đủ.

Ngày nay, Linux gọi hầu hết các thiết bị lưu trữ lớn có thể ghi lại /dev/sd?. "SD" từng là viết tắt của "đĩa SCSI" và tồn tại chỉ để phân biệt với /dev/hd?nghĩa chung là "Đĩa cứng", nhưng ngụ ý PATA trong hầu hết các trường hợp. Sự khác biệt này là một không liên quan thực tế ngày hôm nay. Bây giờ chúng tôi có SSD, ổ USB, ổ cứng ảo , thiết bị iSCSI và nhiều thứ khác được gọi /dev/sd?. Tôi khuyên bạn nên bắt đầu nghĩ "SD" là viết tắt của "thiết bị lưu trữ", thay vì lo lắng về việc liệu thiết bị có nói ATA qua SATA, ATA qua Ethernet , SCSI qua USB , SCSI qua ATAPI, SCSI qua SAS, SCSI qua IP (iSCSI ), hoặc những gì có bạn.

Vấn đề cốt lõi là các chương trình đặt tên thường tồn tại lâu hơn lý do đằng sau kế hoạch này. Bạn thấy điều này trong /dev/scd0. Thiết bị được kết nối với /devnút đó có nhiều khả năng là ổ đĩa DVD hoặc Blu-Ray hơn là ổ đĩa Compact ngày nay.

Lựa chọn thay thế - nơi bạn đặt tên cho mỗi /devnút theo loại thiết bị chính xác được kết nối với nút đó - có vấn đề riêng. Nó sẽ thực sự tốt hơn nếu chúng ta đặt tên cho /devnút theo giao thức cấp thấp mà nó sử dụng? /dev/atapi0,, /dev/sas0v.v? Hoặc có thể bạn thích /dev/atapibluray0và như vậy? Còn ổ đĩa đa phương tiện thì sao? Có phải trình điều khiển tương tự cũng cần phải phơi bày /dev/atapicd0trong trường hợp bạn trượt Đĩa compact vào ổ đĩa Blu-Ray? Điều đó chỉ thay thế một kế hoạch khó hiểu với một kế hoạch khác.

Sự /dev/sd?trừu tượng của Linux không hoàn hảo, nhưng nó rất hữu ích. Chẳng hạn, bạn có thể tìm hiểu thực tế /dev/sdarất có thể là ổ đĩa khởi động mà không cần lo lắng về việc cáp, giao thức giao diện và phương tiện nào đứng sau tên đó. Nếu tôi nói với bạn rằng một hộp Linux cho có một ổ đĩa hệ thống duy nhất, một ổ đĩa quang, và đôi khi có một ổ USB cắm vào nó, bạn có thể tự tin đoán rằng chúng được gọi /dev/sda, /dev/sdb/dev/sdc, tương ứng.


Chú thích :

  1. SCSI và ATA đã không bắt đầu chia sẻ một tổ chức tiêu chuẩn phụ huynh. Cả hai đều khởi đầu là bộ điều khiển đĩa cứng độc quyền. SCSI phát triển từ Shugart Associates ' SASI , và ATA / IDE ra khỏi một sự hợp tác thiết kế muộn hơn nhiều giữa Western Digital, Compaq và CDC.

    ANSI sau đó đã chuẩn hóa cả hai, với ATA-1 theo SCSI-1 khoảng 8 năm sau.

    THU NHẬP là một loại tổ chức chị em với ANSI . INCITS công bố các tiêu chuẩn cuối cùng thông qua ANSI tại Hoa Kỳ và ISO / IEC JTC 1 trên toàn thế giới.

  2. Tiêu chuẩn hiện tại là SAT-3 , được xuất bản vào tháng 5 năm 2015, với SAT-4 và SAT-5 đang được tiến hành khi tôi viết bài này vào giữa tháng 7 năm 2018. Liên kết sau sẽ đưa bạn đến bản nháp của các phiên bản đang thực hiện.

  3. Tôi đang bỏ qua hệ số nhân cổng SATA , bộ mở rộng SAS , v.v.

  4. Ngoại trừ các mô hình được thực hiện để tương thích với các hệ thống SCSI song song cũ.


Tôi vẫn chưa rõ nếu một số tính năng / bộ lệnh giống hệt nhau trong ATA và SCSI, và sự kết hợp này lớn đến mức nào nếu nó tồn tại. Tôi đồng ý rằng việc đọc mã nguồn Linux sẽ đưa ra một số câu trả lời, nhưng có lẽ nó ngang bằng với việc đọc chính đặc tả ATA. Nguồn Linux có lẽ cũng không thể đưa ra một cái nhìn rõ ràng về mức độ chia sẻ và cách chia sẻ giữa ATA và SCSI. Các quy ước đặt tên được sử dụng có lẽ sẽ được khai sáng hơn bằng cách đọc nguồn Linux.
AttributionTensorField

@AttributionTensorField: Xem các chỉnh sửa mới nhất.
Warren Young

1
Wow, câu trả lời tuyệt vời. Một điều nữa thôi; / dev / atapi0, / dev / sas0, v.v.; đó không phải là những gì BSD (ít nhất là FreeBSD) làm? Cũng như Solaris IIRC. Và trên Linux thường có / dev / đĩa / by-path tương đối giống nhau.
CVn

@ MichaelKjorling: Chắc chắn. Quan điểm của nhận xét không phải là những cách nhìn khác này là sai, đó là việc thay đổi cách đặt tên để phù hợp hơn với những gì đang diễn ra bên dưới không làm cho vấn đề tiềm ẩn biến mất. Tôi đánh giá cao sự /dev/sd?trừu tượng của Linux .
Warren Young

1
Lưu ý rằng hầu hết các distro ngày nay đều hiển thị các ổ đĩa quang là / dev / srN trong đó N là một số.
Perkins
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.