Копия с CD-ROM является очень медленной в Ubuntu

Я использую команду для копирования изображения CD-ROM:

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

Таким образом, я предполагаю, что существует что-то не настроенное прямо в Ubuntu, не так ли?

1
задан 14.03.2015, 19:33

2 ответа

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

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

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

# dd if=/dev/sr0 of=./maverick.iso bs=32M
2
ответ дан 12.12.2019, 10:37

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

1
ответ дан 12.12.2019, 10:37

Теги

Похожие вопросы