我正在使用命令複製 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 MB 通常是一個不錯的區塊大小。
# dd if=/dev/sr0 of=./maverick.iso bs=32M
答案2
它位於 UDMA2 上,因此無需進行任何配置。它可能比這更簡單:您是否嘗試過在 dd 命令上使用 bs=2M ? (您可能需要嘗試幾次才能找到 CD-ROM 的最佳大小,如果它變得太大,CD 將停止旋轉。dd 不使用重疊 I/O。)讀取時間越長,速度就會越快。