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년에 삭제됨.

관련 정보