在 Ubuntu 中从 CDROM 复制非常慢

在 Ubuntu 中从 CDROM 复制非常慢

我正在使用以下命令复制 CDROM 映像:

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

但是速度很慢,大约 350k 字节/秒。我搜索了谷歌,并尝试了命令

# 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

看来 DMA 已经开启了。

设备测试结果显示:

# 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

CD-ROM 设备和光盘应该没问题,因为我可以使用UltraISO实用程序在 Windows 中非常快速地复制它。

所以我猜 Ubuntu 中有些东西配置不正确,是吗?

答案1

您错误地使用 dd 。

dd 的块大小默认为 512 字节,对于硬盘来说,这是可以接受的(但不是很好,稍后会详细介绍),因为硬盘扇区大小为 512 字节。然而,CD-ROM 的扇区大小在 2048 到 2352 字节之间。默认块大小会导致驱动器对每个扇区进行四到五次部分读取,从而大大降低其速度。

需要考虑的其他因素是访问时间和驱动器缓冲区。长话短说,您不应该逐个扇区地读取数据,而应该读取大块数据。我不知道驱动器的缓冲区大小是多少,但 32 兆字节通常是一个合适的块大小。

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

答案2

它使用 UDMA2,因此应该无需配置。它可能比这更简单:您是否尝试过在 dd 命令上使用 bs=2M?(您可能需要尝试几次才能找到 CD-ROM 的最佳大小,如果 CD 太大,CD 会旋转。dd 不使用重叠 i/o。)较长的读取应该会变得更快。

相关内容