Das Kopieren von CD-ROM ist in Ubuntu sehr langsam

Das Kopieren von CD-ROM ist in Ubuntu sehr langsam

Ich verwende den Befehl zum Kopieren des CD-ROM-Images:

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

Aber es ist sehr langsam, bei etwa 350k bytes/sec. Ich habe bei Google gesucht und den Befehl ausprobiert

# 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

Scheint, als wäre DMA bereits aktiviert.

Und ein Gerätetest ergibt:

# 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

Mit dem CD-ROM-Gerät und der CD sollte alles in Ordnung sein, da ich sie mithilfe UltraISOdes Dienstprogramms in Windows sehr schnell kopieren kann.

Ich nehme also an, dass in Ubuntu etwas nicht richtig konfiguriert ist, oder?

Antwort1

Sie verwenden dd falsch.

Die Blockgröße für dd beträgt standardmäßig 512 Bytes, was für eine Festplatte akzeptabel (aber nicht großartig, dazu später mehr) ist, da Festplattensektoren 512 Bytes groß sind. CD-ROMs haben jedoch eine Sektorgröße zwischen 2048 und 2352 Bytes. Die Standardblockgröße führt dazu, dass das Laufwerk vier oder fünf Teillesevorgänge pro Sektor durchführt, was es enorm verlangsamt.

Die anderen Faktoren, die berücksichtigt werden müssen, sind der Zugriffszeitpunkt und der Laufwerkspuffer. Um es kurz zu machen: Anstatt Sektor für Sektor zu lesen, sollten Sie große Blöcke lesen. Ich weiß nicht, wie groß die Puffergröße des Laufwerks ist, aber 32 Megabyte sind im Allgemeinen eine anständige Blockgröße.

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

Antwort2

Es läuft auf UDMA2, daher sollte nichts konfiguriert werden müssen. Es könnte einfacher sein: Haben Sie versucht, bs=2M in Ihrem dd-Befehl zu verwenden? (Möglicherweise müssen Sie ein paar ausprobieren, um die optimale Größe für die CD-ROM zu finden. Wenn sie zu groß wird, wird die CD langsamer. dd verwendet keine überlappenden E/A.) Längere Lesevorgänge sollten schneller werden.

verwandte Informationen