CentOSがATAバスをscsiバスに変換するのはなぜですか?

CentOSがATAバスをscsiバスに変換するのはなぜですか?

libvirt+qemu を使用して IDE バスディスクで仮想マシンを起動します。

libvirtのデバイス:

<disk type='network' device='disk'>
  <driver name='qemu' type='raw' cache='none' io='native'/>
  <source protocol='iscsi' name='xxx'>
    <host name='127.0.0.1' port='xxx'/>
  </source>
  <target dev='hdb' bus='ide'/>
  <boot order='3'/>
  <alias name='ide0-0-1'/>
  <address type='drive' controller='0' bus='0' target='0' unit='1'/>
</disk>

キュムから:

-drive file.driver=iscsi,file.portal=127.0.0.1:xxx,file.target=xxx,file.lun=xxx,file.transport=tcp,format=raw,if=none,id=drive-ide0-0-1,cache=none,aio=native
-device ide-hd,bus=ide.0,unit=1,drive=drive-ide0-0-1,id=ide0-0-1,bootindex=3,write-cache=on

ゲストOSはCentOS-7.9-x86_64-DVD-2009です。

起動後、dmesgが表示されます。

May 18 06:07:37 localhost kernel: ata1: PATA max MWDMA2 cmd 0x1f0 ctl 0x3f6 bmdma 0xd120 irq 14
May 18 06:07:37 localhost kernel: ata2: PATA max MWDMA2 cmd 0x170 ctl 0x376 bmdma 0xd128 irq 15
May 18 09:15:54 localhost kernel: ata1.00: ATAPI: QEMU DVD-ROM, 2.5+, max UDMA/100
May 18 09:15:54 localhost kernel: ata1.01: ATA-7: QEMU HARDDISK, 2.5+, max UDMA/100
May 18 09:15:54 localhost kernel: ata1.01: 6291456 sectors, multi 16: LBA48
May 18 09:15:54 localhost kernel: ata1.00: configured for MWDMA2
May 18 09:15:54 localhost kernel: ata1.01: configured for MWDMA2
May 18 09:15:54 localhost kernel: scsi 0:0:0:0: CD-ROM            QEMU     QEMU DVD-ROM     2.5+ PQ: 0 ANSI: 5
May 18 09:15:54 localhost kernel: scsi 0:0:1:0: Direct-Access     ATA      QEMU HARDDISK    2.5+ PQ: 0 ANSI: 5
May 18 09:15:54 localhost kernel: sr 0:0:0:0: [sr0] scsi3-mmc drive: 4x/4x cd/rw xa/form2 tray
May 18 09:15:54 localhost kernel: cdrom: Uniform CD-ROM driver Revision: 3.20
May 18 09:15:54 localhost kernel: sd 0:0:1:0: [sda] 6291456 512-byte logical blocks: (3.22 GB/3.00 GiB)
May 18 09:15:54 localhost kernel: sd 0:0:1:0: [sda] Write Protect is off
May 18 09:15:54 localhost kernel: sd 0:0:1:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
May 18 09:15:54 localhost kernel: sd 0:0:1:0: [sda] Attached SCSI disk

lshwに表示されます。

[root@localhost ~]# lshw -class disk
  *-cdrom                   
       description: DVD reader
       product: QEMU DVD-ROM
       vendor: QEMU
       physical id: 0.0.0
       bus info: scsi@0:0.0.0
       logical name: /dev/cdrom
       logical name: /dev/sr0
       version: 2.5+
       capabilities: removable audio dvd
       configuration: ansiversion=5 status=ready
     *-medium
          physical id: 0
          logical name: /dev/cdrom
          capabilities: partitioned partitioned:dos
          configuration: signature=6b8b4567
  *-disk
       description: ATA Disk
       product: QEMU HARDDISK
       physical id: 0.1.0
       bus info: scsi@0:0.1.0
       logical name: /dev/sda
       version: 2.5+
       serial: 918a6997-1928-38a1-9
       size: 3GiB (3221MB)
       configuration: ansiversion=5 logicalsectorsize=512 sectorsize=512

CentOSがATAバスをscsiバスに変換するのはなぜですか?より関連性の高い説明はどこにありますか?

答え1

これは、Linuxカーネルが並列ATA(IDE)とシリアルATA(SATA)を処理する方法です。最初はIDE専用のドライバセットがあり、IDEドライバが登場しましたhda。しかし、Serial ATAが登場すると、Jeff Garzikは既存のSCSIを使用することにしました。中間層カーネルから。多くの理由を取った、特に:

  • scsi中間層の存在により多くの利点が生じる。これは私たちに多くのことを行い、ほぼ完全にATAコマンドプロトコル(PIO-in、PIO-out、DMAなど)にのみ集中できるようにしました。

[… ]

  • シリアルATAがリリースされます。デバイスとホストコントローラのSATA実装は、
    しばらくSCSIにあった動作に適しています。 SATA は SCSI 接続サービスの使用も定義します。

  • Linux SCSI層はホットプラグを処理し、さらにモジュール化されています。それはデバイスやsysfsなどに言及しました。最初から新しいブロックデバイスドライバを作成することは、これらすべての小さな詳細を処理することを意味します。

  • SCSIはしばらくの間、基本的なエラー回復とキュー制御を行ってきました。すぐにリリースされるSATA2と
    ATA TCQ(後者を実装する時間がある場合)はどちらも大きな利点を得るでしょう。

  • ATAPIはSCSIに似ています。

その結果、libataATAデバイスのサポートを提供し、それをSCSI中間層を介してSCSIドライブとしてマークします。最初はここにSATAデバイスといくつかのIntel PATAコントローラが含まれていました(私の知る限り、後者はまだデフォルトで古いIDEデバイスドライバを使用しています)。

数年後、libataはほとんどのPATAコントローラをサポートするように拡張されました。そしてほとんどのIDEデバイス最終的にSCSIデバイスとして扱われる。レガシーIDEドライバ2021年に削除されました

関連情報