Copiar do CDROM é muito lento no Ubuntu

1

Estou usando o comando para copiar a imagem do CD-ROM:

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

Mas é muito lento, com cerca de 350k bytes / seg. Eu procurei no google e tente 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 dá:

# 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 eu posso copiá-lo muito rápido no Windows, usando o utilitário UltraISO .

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

    
por Xiè Jìléi 23.12.2010 / 03:02

2 respostas

2

Você está usando o dd incorretamente.

O tamanho do bloco para o dd é 512 bytes por padrão, o que é aceitável (mas não ótimo, 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, no entanto, têm um tamanho de setor entre 2048 e 2352 bytes. O tamanho de bloco padrão faz com que a unidade faça quatro ou cinco leituras parciais por setor, diminuindo a velocidade imensamente.

As outras coisas a considerar são o tempo de acesso e o buffer de unidade. Para encurtar a história, em vez de ler setor por setor, você deve ler grandes partes. Eu 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
    
por 23.12.2010 / 03:12
1

Está no UDMA2, então não deve haver nada para configurar. Pode ser mais simples do que isso: Você já tentou usar o 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á se desintegrar. O dd não usa i / o sobreposto.) Leituras mais longas devem ficar mais rápidas.

    
por 23.12.2010 / 03:12