Copiar desde CDROM es muy lento en Ubuntu

Copiar desde CDROM es muy lento en Ubuntu

Estoy usando el comando para copiar la imagen del CDROM:

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

Pero es muy lento, alrededor de 350k bytes/seg. Busqué en Google y probé el 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 DMA ya está activado.

Y una prueba del dispositivo da:

# 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

El dispositivo CD-ROM y el disco deberían estar bien porque puedo copiarlos muy rápido en Windows usando UltraISOla utilidad.

Entonces supongo que hay algo que no está configurado correctamente en Ubuntu, ¿verdad?

Respuesta1

Estás usando dd incorrectamente.

El tamaño de bloque para dd es de 512 bytes de forma predeterminada, lo cual es aceptable (pero no excelente, hablaremos de eso más adelante) para un disco duro, ya que los sectores del disco duro tienen un tamaño de 512 bytes. Los CD-ROM, sin embargo, tienen un tamaño de sector de entre 2048 y 2352 bytes. El tamaño de bloque predeterminado hace que la unidad realice cuatro o cinco lecturas parciales por sector, lo que la ralentiza enormemente.

Las otras cosas a tener en cuenta son el tiempo de acceso y el búfer de la unidad. Para abreviar la historia, en lugar de leer sector por sector, debería leer fragmentos grandes. No sé cuál es el tamaño del búfer de la unidad, pero 32 megabytes es generalmente un tamaño de bloque decente.

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

Respuesta2

Está en UDMA2, por lo que no debería haber nada que configurar. Podría ser más simple que eso: ¿ha intentado usar bs=2M en su comando dd? (Es posible que tenga que probar algunos para encontrar el tamaño óptimo para el CD-ROM; si es demasiado grande, el CD se ralentizará. dd no utiliza E/S superpuestas). Las lecturas más largas deberían ser más rápidas.

información relacionada