A cópia do CDROM é muito lenta no Ubuntu

A cópia do CDROM é muito lenta no Ubuntu

Estou usando o comando para copiar a imagem do CDROM:

# dd if=/dev/sr0 of=./maverick.iso

Mas é muito lento, cerca de 350k bytes/seg. Eu pesquisei no google e tentei o comando

# hdparm -vi /dev/sr0

/dev/sr0:
 HDIO_DRIVE_CMD(identify) failed: Bad address
 IO_support    =  1 (32-bit)
 readonly      =  0 (off)
 readahead     = 256 (on)
 HDIO_GETGEO failed: Inappropriate ioctl for device

 Model=DVD-ROM UJDA775, FwRev=DA03, SerialNo=
 Config={ Fixed Removeable DTR<=5Mbs DTR>10Mbs nonMagnetic }
 RawCHS=0/0/0, TrkSize=0, SectSize=0, ECCbytes=0
 BuffType=unknown, BuffSize=unknown, MaxMultSect=0
 (maybe): CurCHS=0/0/0, CurSects=0, LBA=yes, LBAsects=0
 IORDY=yes, tPIO={min:180,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4 
 DMA modes:  sdma0 sdma1 sdma2 mdma0 mdma1 mdma2 
 UDMA modes: udma0 udma1 *udma2 
 AdvancedPM=no
 Drive conforms to: ATA/ATAPI-5 T13 1321D revision 3:  ATA/ATAPI-1,2,3,4,5

 * signifies the current active mode

Parece que o DMA já está ativado.

E um teste de dispositivo fornece:

# hdparm -t /dev/sr0 

/dev/sr0:
 Timing buffered disk reads:    2 MB in  6.58 seconds = 311.10 kB/sec

# sudo hdparm -tT /dev/sr0 

/dev/sr0:
 Timing cached reads:     2 MB in  2.69 seconds = 760.96 kB/sec
 Timing buffered disk reads:  m  4 MB in  5.19 seconds = 789.09 kB/sec

O dispositivo de CD-ROM e o disco devem estar ok porque posso copiá-los muito rapidamente no Windows, usando UltraISOo utilitário.

Então acho que há algo que não está configurado corretamente no Ubuntu, não é?

Responder1

Você está usando dd incorretamente.

O tamanho do bloco para dd é de 512 bytes por padrão, o que é aceitável (mas não ótimo, falaremos mais sobre isso depois) para um disco rígido, já que os setores do disco rígido têm 512 bytes de tamanho. Os CD-ROMs, entretanto, têm um tamanho de setor entre 2.048 e 2.352 bytes. O tamanho de bloco padrão faz com que a unidade faça quatro ou cinco leituras parciais por setor, tornando-a imensamente lenta.

As outras coisas a serem levadas em consideração são o tempo de acesso e o buffer da unidade. Para resumir a história, em vez de ler setor por setor, você deve ler grandes pedaços. Não sei qual é o tamanho do buffer da unidade, mas 32 megabytes geralmente é um tamanho de bloco decente.

# dd if=/dev/sr0 of=./maverick.iso bs=32M

Responder2

Está em UDMA2, então não deve haver nada para configurar. Pode ser mais simples que isso: você já tentou usar bs=2M no seu comando dd? (Você pode ter que tentar alguns para encontrar o tamanho ideal para o CD-ROM, se ficar muito grande, o CD irá girar. O dd não usa E/S sobreposta.) Leituras mais longas devem ficar mais rápidas.

informação relacionada