AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1824698
Accepted
mcendu
mcendu
Asked: 2024-01-07 17:37:07 +0800 CST2024-01-07 17:37:07 +0800 CST 2024-01-07 17:37:07 +0800 CST

Por que o subsistema Linux SCSI controla o hardware que não está obviamente relacionado ao SCSI?

  • 772

Sem conhecimento, normalmente esperaria que SATA, SCSI e USB Mass Storage fossem controlados por drivers diferentes. No entanto, no Linux, o subsistema SCSI controla todos eles.

Por que o Linux usa o subsistema SCSI para controlar até mesmo coisas que não estão claramente relacionadas ao SCSI? Quais são os méritos e desvantagens de ter drivers completamente diferentes para eles? Por que o suporte NVMe e (historicamente) PATA não fazem parte do subsistema SCSI?

linux
  • 2 2 respostas
  • 673 Views

2 respostas

  • Voted
  1. Best Answer
    u1686_grawity
    2024-01-07T18:21:08+08:002024-01-07T18:21:08+08:00

    Sem conhecimento, normalmente esperaria que SATA, SCSI e USB Mass Storage fossem controlados por drivers diferentes. No entanto, no Linux, o subsistema SCSI controla todos eles.

    Bem, o armazenamento em massa USB é literalmente SCSI nos bastidores; ele usa o conjunto de comandos SCSI real, apenas em outro transporte. (Ainda mais se o seu disco suportar UAS, que significa "USB-Attached SCSI", mas também se aplica aos dispositivos básicos de armazenamento BOT.) O que significa que sim, seus gabinetes de disco USB-SATA externos estão traduzindo os comandos entre ATA e SCSI (com um comando especial 'ATA passthrough' para coisas como acesso SMART).

    (E se você já teve um desses HDDs ou iPods FireWire naquela época, esses eram dispositivos SBP-2, que novamente são SCSI. É um conjunto de comandos bastante versátil.)

    O suporte SATA passa por SCSI porque na época em que o SATA foi introduzido, o subsistema Linux PATA existente (que datava dos primeiros dias do Linux) era uma espécie de lixo em comparação com o robusto subsistema SCSI, e o SATA já estava um pouco mais próximo do SCSI em termos de recursos – enfileiramento, comandos marcados, etc. – portanto, tratar o AHCI como um tipo estranho de controlador SCSI provavelmente ofereceu um desempenho muito melhor do que tratá-lo como um tipo estranho de controlador PATA.

    (Na verdade, até mesmo muitos sistemas Windows da época tinham drivers SATA de fornecedores que apresentavam o controlador SATA AHCI como se fosse um controlador SCSI, antes do Windows ganhar suporte nativo AHCI – por exemplo, o Windows XP conhecia SCSI, mas não AHCI.)

    Este suporte usa o documento oficial de tradução de SCSI para ATA produzido pelo grupo de trabalho T10 responsável por SCSI e, aparentemente, a maioria, se não todas as coisas, tem uma tradução 1:1, então acho que não é tão hackeado quanto parece. . Ainda assim, parece que na época esta foi pensada como uma solução temporária , com planos de fazer um novo subsistema Linux para dispositivos SATA, mas isso nunca aconteceu; Acho que 'libata' (a camada de tradução) funcionou melhor do que o esperado.

    (E como última observação, todas as unidades de CD/DVD ATA usam o protocolo "ATAPI" – que é apenas SCSI dentro de pacotes ATA. Novamente, mesmo no Windows, você verá quase todos os softwares de gravação de CD/DVD listando CD/DVD unidades como se fossem dispositivos SCSI, porque de certa forma são.)

    Por que o suporte NVMe e PATA não fazem parte do subsistema SCSI?

    O suporte PATA faz parte disso. Há muitos anos, até mesmo os discos PATA têm aparecido como /dev/sd*dispositivos através da tradução SCSI-ATA 'libata', em vez de /dev/hd*dispositivos PATA reais. Os drivers PATA “legados” foram completamente removidos do Linux nos últimos meses, mas não são usados ​​há muito tempo.

    Quanto ao NVMe, presumo que seja o mesmo que foi mencionado na mensagem da lista de discussão T10 sobre SATA, onde um subsistema separado era o objetivo final em primeiro lugar... e dado que o NVMe foi projetado como um sucessor de ambos ATA e SCSI várias décadas depois, pode ter havido muitas diferenças para que fosse prático, por exemplo, as filas extremamente profundas que o NVMe permite em comparação com a finalidade para a qual o SCSI foi projetado.

    Ou seja, libata funcionou bem porque PATA/SATA era um subconjunto de capacidades SCSI, enquanto NVMe é mais um superconjunto.

    (O subsistema NVMe originalmente tinha um tipo semelhante de tradução SCSI , mas que acabou sendo removido; a mensagem de commit afirma que isso se devia em parte a diferenças significativas entre os dois.)

    • 16
  2. harrymc
    2024-01-07T18:20:37+08:002024-01-07T18:20:37+08:00

    Isso é explicado no Guia de Interfaces SCSI :

    Embora o antigo barramento SCSI paralelo (rápido/amplo/ultra) tenha caído em desuso, o conjunto de comandos SCSI é mais amplamente usado do que nunca para se comunicar com dispositivos em vários barramentos diferentes.

    Os comandos SCSI podem ser transportados por praticamente qualquer tipo de barramento e são o protocolo padrão para dispositivos de armazenamento conectados a dispositivos USB, SATA, SAS, Fibre Channel, FireWire e ATAPI. Pacotes SCSI também são comumente trocados por Infiniband, I20, TCP/IP (iSCSI) e até mesmo portas paralelas.

    A explicação é que o subsistema SCSI é usado para dominar o versátil protocolo SCSI em todos os tipos de barramentos, portanto não principalmente para controlar dispositivos SCSI.

    Mais detalhes sobre a interface SCSI podem ser encontrados no artigo acima. A estrutura geral do sistema é descrita como:

    O subsistema SCSI usa um design de três camadas, com camadas superior, média e baixa. Cada operação que envolve o subsistema SCSI (como ler um setor de um disco) usa um driver em cada um dos três níveis: um driver de camada superior, um driver de camada inferior e a camada intermediária SCSI.

    A camada superior SCSI fornece a interface entre o espaço do usuário e o kernel, na forma de nós de dispositivos de bloco e char para E/S e ioctl(). A camada inferior SCSI contém drivers para dispositivos de hardware específicos.

    No meio está a camada intermediária SCSI, análoga a uma camada de roteamento de rede, como a pilha IPv4. A camada intermediária SCSI roteia um protocolo de dados baseado em pacotes entre os nós /dev da camada superior e os dispositivos correspondentes na camada inferior. Ele gerencia filas de comandos, fornece funções de tratamento de erros e gerenciamento de energia e responde a solicitações ioctl().

    São os drivers da camada inferior que possibilitam ao subsistema SCSI interagir com tantos tipos de barramentos e dispositivos.

    PATA agora está desatualizado e SATA é o padrão para a maioria dos dispositivos de armazenamento de consumo. NVMe é usado para desempenho, principalmente para SSDs. SCSI ainda é usado para ambientes corporativos especializados para compatibilidade e seus recursos avançados.

    • 6

relate perguntas

  • Como eu faria minha máquina Linux parecer que está executando o Windows?

  • Existe um equivalente a cd - para cp ou mv?

  • execute o contêiner do docker como root

  • Como ativar o sensor de impressão digital no domínio e no diretório ativo do Linux

  • Como alterar permanentemente Ctrl + C para Ctrl + K no CentOS 7?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    Vickel O Firefox não permite mais colar no WhatsApp web? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke Por que os arquivos tar.xz são 15x menores ao usar a biblioteca tar do Python em comparação com o tar do macOS? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve