Ubuntu では CDROM からのコピーが非常に遅い

Ubuntu では CDROM からのコピーが非常に遅い

CDROM イメージをコピーするには次のコマンドを使用します:

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

しかし、速度は350kバイト/秒と非常に遅いです。Googleで検索して、次のコマンドを試しました。

# 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 バイトです。デフォルトのブロック サイズでは、ドライブはセクターごとに 4 回または 5 回の部分読み取りを行うため、速度が大幅に低下します。

他に考慮すべき点は、アクセス タイミングとドライブ バッファです。簡単に言うと、セクターごとに読み取るのではなく、大きなチャンクで読み取る必要があります。ドライブのバッファ サイズがどれくらいかはわかりませんが、一般的に 32 メガバイトが適切なブロック サイズです。

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

答え2

UDMA2 上にあるため、設定するものは何もありません。それよりも簡単かもしれません。dd コマンドで bs=2M を使ってみましたか? (CD-ROM の最適なサイズを見つけるには、いくつか試してみる必要があるかもしれません。サイズが大きすぎると、CD がスピンダウンします。dd はオーバーラップ I/O を使用しません。) 長い読み取りは高速になるはずです。

関連情報