Копирование с CDROM в Ubuntu происходит очень медленно

Копирование с CDROM в Ubuntu происходит очень медленно

Я использую команду для копирования образа 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 и диском все должно быть в порядке, поскольку я могу очень быстро скопировать их в Windows с помощью UltraISOутилиты.

Я так понимаю, в Ubuntu что-то настроено неправильно?

решение1

Вы неправильно используете dd.

Размер блока для dd по умолчанию составляет 512 байт, что приемлемо (но не очень хорошо, об этом позже) для жесткого диска, поскольку секторы жесткого диска имеют размер 512 байт. Однако у CD-ROM размер сектора составляет от 2048 до 2352 байт. Размер блока по умолчанию заставляет дисковод выполнять четыре или пять частичных чтений на сектор, что значительно замедляет его работу.

Другие факторы, которые следует учитывать, — это время доступа и буфер диска. Короче говоря, вместо того, чтобы читать сектор за сектором, следует читать большие куски. Я не знаю, какой размер буфера у диска, но 32 мегабайта — это, как правило, приличный размер блока.

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

решение2

Он на UDMA2, так что настраивать нечего. Возможно, все проще: вы пробовали использовать bs=2M в команде dd? (Возможно, вам придется попробовать несколько вариантов, чтобы найти оптимальный размер для CD-ROM, если он станет слишком большим, CD остановится. dd не использует перекрытый ввод-вывод.) Более длинные чтения должны выполняться быстрее.

Связанный контент