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와 유사합니다.
결과적으로 libata
ATA 장치에 대한 지원을 제공하고 이를 SCSI 중간 계층을 통해 SCSI 드라이브로 표시합니다. 처음에는 여기에 SATA 장치와 일부 Intel PATA 컨트롤러가 포함되었습니다(내가 아는 한 후자는 여전히 기본적으로 이전 IDE 장치 드라이버를 사용하고 있음).
몇 년 후,libata는 대부분의 PATA 컨트롤러를 지원하도록 확장되었습니다.그리고 대부분의 IDE 장치결국 SCSI 장치로 취급됨. 레거시 IDE 드라이버2021년에 삭제됨.