1

Я использую команду для копирования образа CDROM:

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

Но это очень медленно, около 350 тыс. Байт / сек. Я искал в 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, не так ли?

2 ответа2

2

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .