Паралельное выполнение дисковых операций (Возможно ли это?)

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

156
Сообщения: 234
ОС: OPENSUSE ALTLINUX

Паралельное выполнение дисковых операций

Сообщение 156 »

Сделал скрипт для записи DVD дисков, это пока отладочный вариант. Задача скрипта - запись директории с файлами и папками на DVD диски, используя для записи несколько приводов, на первом приводе пишутся первые 4.3гига, на втором приводе пишутся следующие данные с 4.3 гига по 8,6 гигабайт, и так далее, пока вся папка с данными будет записана. Запись DVD дисков должна идти одновременно на двух приводах для сокращения времени записи, так как запись 250 гигабайт на одном приводе занимает много времени.

Код: Выделить всё

#! /bin/sh
dirsave="/home/serg/del/" #Директория, которую надо записать на dvd
touch "/tmp/nomer"
nom="/tmp/nomer"
put=`pwd`
echo $put.
dirsplit -S $dirsave;  #Получаем список файлов поделенных по 4.3 гига
exec ls | grep vol_ | grep list > /tmp/nomer;
while read line # Начинаем цикл по количеству dvd дисков
do
echo $line
echo $put/$line
    genisoimage -o /tmp/$line -D -r --joliet-long -graft-points -path-list=$put/$line #Создание iso файла из файлов указанных в файле /tmp/nomer
    growisofs -Z /dev/sr0=/tmp/dvd.iso #Запись образа на диск
    dd if=/dev/sr0 of=/dev/null #Проверка записанного диска
    rm /tmp/dvd.iso #Удаление временных директорий и  файлов
    eject /dev/sr0 #Выдвигаем лоток dvd привода
    pause 0 #Делаем паузу для замены DVD диска
    eject -t /dev/sr0 #Задвигаем лоток dvd привода
done <$nom # Заканчиваем цикл по чтению из файла
#Удаление временных директорий и  файлов
rm /tmp/nomer

Всё работает, диски пишет, но только на одном приводе /dev/sr0.

Что нужно - запускаем скрипт, начинает создаваться первый и второй образ одновременно, создались, начали записываться на /dev/sr0 и /dev/sr1, после записи диски надо проверить, т.е. Строки

Код: Выделить всё

genisoimage -o /tmp/$line -D -r --joliet-long -graft-points -path-list=$put/$line #Создание iso файла из файлов указанных в файле /tmp/nomer
    growisofs -Z /dev/sr0=/tmp/dvd.iso #Запись образа на диск
    dd if=/dev/sr0 of=/dev/null #Проверка записанного диска
    rm /tmp/dvd.iso #Удаление временных директорий и  файлов
    eject /dev/sr0 #Выдвигаем лоток dvd привода
    pause 0 #Делаем паузу для замены DVD диска
    eject -t /dev/sr0 #Задвигаем лоток dvd привода

надо выполнять одновременно для разных образов, так на первый привод мы отправляем записываться первый образ, на второй привод отправляем записываться следующий образ.
Как правильно добавить возможность одновременной записи на /dev/sr0 и /dev/sr1?
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Паралельное выполнение дисковых операций

Сообщение SLEDopit »

156 писал(а):
10.01.2012 13:12
exec ls | grep vol_ | grep list > /tmp/nomer;
Почему нельзя парсить вывод ls.
156 писал(а):
10.01.2012 13:12
dd if=/dev/sr0 of=/dev/null #Проверка записанного диска
Какая у Вас интересная проверка. Непонятно, правда, чего вы такой проверкой добьётесь.
Лучше бы md5sum сравнивали:

Код: Выделить всё

$ md5sum /tmp/dvd.iso
и

Код: Выделить всё

$ md5sum /dev/sr0
емнип, так должно работать.
156 писал(а):
10.01.2012 13:12
начинает создаваться первый и второй образ одновременно
Параллельная запись на диск двух больших файлов, как правило, проходит медленнее, нежели последовательная. Поэтому, если есть возможность второй образ писать на другой физический диск, было бы гораздо лучше. Это так, для справки.
156 писал(а):
10.01.2012 13:12
Как правильно добавить возможность одновременной записи на /dev/sr0 и /dev/sr1?
Ну, например, использовать wait. Кормите любым удобным способом не по одной директории, а по две. И запускайте:

Код: Выделить всё

genisoimage disk1 &
genisoimage disk2 &
wait
Дальше скрипт продолжится только после заврешнеия обеих комманд. Ну и аналогично делаете со всеми остальными распараллеливаниями.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
156
Сообщения: 234
ОС: OPENSUSE ALTLINUX

Re: Паралельное выполнение дисковых операций

Сообщение 156 »

Благо_дарю за подсказки и указание на ошибки.

Код: Выделить всё

dd if=/dev/sr0 of=/dev/null #Проверка записанного диска
- Этим мы читаем записанный диск, если он весь прочитался, то всё хорошо. К этому нужно добавить ещё пару строк с сообщением об удачном/плохом завершении чтения, но это на потом. Про подсчёт md5 сумм не так всё просто, там сначала надо узнать сколько блоков вообще записано, но основная тема не про md5 у нас.

Параллельная запись на диск двух больших файлов, как правило, проходит медленнее, нежели последовательная. Поэтому, если есть возможность второй образ писать на другой физический диск, было бы гораздо лучше.
Диск выдаёт 120 мегабайт на чтение и около 80ти на запись, так что может легко обеспечивать запись 5 DVD дисков одновременно с максимальной скоростью 20 мегабайт в секунду. Как вариант , можно команду genisoimage сразу отправить в growisofs , и писать на лету, без создания промежуточного образа. В окончательном варианте, если конечно можно будет сделать одновременную запись дисков, создание промежуточных iso образов уберу, сейчас они нужны для отладки, чтобы не писать диски.

Код: Выделить всё

genisoimage disk1 &
genisoimage disk2 &
wait
Решение отчасти есть, но если у нас один диск пишется на первой скорости, а второй на 16й, то приступить к записи следующих дисков можно будет только после завершения записи на обоих дисках, или у первого привода запись не получилась, болванка бракованная, и мы будем ждать на втором /dev/sr1 , пока на /dev/sr0 закончится запись. Проблема заключается в запуске двух паралельных и независимых процессов создания образа iso,записи на dvd диск и проверки записанного, которые в идеале должны быть независимы друг от друга. Так если на первом приводе проверка записанного диска показала ошибку, то диск надо переписать, в это время, если на втором приводе всё хорошо, запись удачна, то второй должен приступать к созданию и записи следующего iso образа. Т.е код

Код: Выделить всё

genisoimage -o /tmp/$line -D -r --joliet-long -graft-points -path-list=$put/$line #Создание iso файла из файлов указанных в файле /tmp/nomer
growisofs -Z /dev/sr0=/tmp/dvd.iso #Запись образа на диск
dd if=/dev/sr0 of=/dev/null #Проверка записанного диска
rm /tmp/dvd.iso #Удаление временных директорий и файлов
eject /dev/sr0 #Выдвигаем лоток dvd привода
pause 0 #Делаем паузу для замены DVD диска
eject -t /dev/sr0 #Задвигаем лоток dvd привода

должен как то разветвиться и мы должны получить два процесса создания образа iso,записи на привод и проверки записанного для каждого привода. Такое в bash вообще возможно в принципе? Или надо как то по другому организовать запись, может сформировать списки файлов для образов, а потом запустить несколько версий скрипта...
Спасибо сказали:
sciko
Сообщения: 1744
Статус: Ъ-участник
ОС: Debian/Ubuntu/etc

Re: Паралельное выполнение дисковых операций

Сообщение sciko »

156 писал(а):
10.01.2012 15:55
Проблема заключается в запуске двух паралельных и независимых процессов записи

Не вижу проблемы. Создаёте 1 скрипт, который пишет на 1 cd/dvd, и 2 скрипт, который запускает сколько нужно копий первого.

Пример с 3 скриптами:

Код: Выделить всё

$ cat scr_main.sh
#!/bin/bash
./scr1.sh &
./scr2.sh &
echo 'Основной поток!'
$ cat scr1.sh
#!/bin/bash
sleep 1
echo "Я второй поток!"
$ cat scr2.sh
#!/bin/bash
sleep 2
echo "Я первый поток!"

Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Паралельное выполнение дисковых операций

Сообщение t.t »

sciko писал(а):
10.01.2012 17:36
156 писал(а):
10.01.2012 15:55
Проблема заключается в запуске двух паралельных и независимых процессов записи
Не вижу проблемы. Создаёте 1 скрипт, который пишет на 1 cd/dvd, и 2 скрипт, который запускает сколько нужно копий первого.

Пример с 3 скриптами:

Код: Выделить всё

$ cat scr_main.sh
#!/bin/bash
./scr1.sh &
./scr2.sh &
echo 'Основной поток!'
$ cat scr1.sh
#!/bin/bash
sleep 1
echo "Я второй поток!"
$ cat scr2.sh
#!/bin/bash
sleep 2
echo "Я первый поток!"
Да и отдельные скрипты необязательны, можно функциями обойтись.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Re: Паралельное выполнение дисковых операций

Сообщение ZyX »

Если вы не против использование zsh, то попробуйте следующий скрипт. То, что у меня находится в ~/.vim/dev/repository/parjobs.zsh можно найти здесь (сам файл):

~/tmp/zsh/parwrite.zsh (Created by format.vim)

#!/bin/zsh typeset -xr saveddir=$HOME/del typeset -xr put=$PWD typeset -xr devmap=/tmp/devmap > $devmap << EOF /dev/sr0 1 Init /dev/sr1 1 Init EOF dirsplit -S $savedir . ~/.vim/dev/repository/parjobs.zsh NUMJOBS=2 function getdevice() { local -A devices cat $devmap | while read dev state comment ; do devices[$dev]=$state done for dev in ${(k)devices} ; do if (( ${devices[$dev]} )) ; then echo $dev 0 $1 >> $devmap REPLY=$dev break fi done } function writeimage() { local -r dir=$1 local -r iso=/tmp/${dir:t}.iso local -x REPLY=none while [[ $REPLY == none ]] ; do getdevice $dir:t sleep 1s done local -r dev=$REPLY genisoimage -o $iso -D -r --joilet-long -graft-points -path-list=$dir growisofs -Z $dev $iso echo $dev 1 $dir:t >> $devmap } for dir in $put/*vol_* ; do [[ $dir:t == *list* ]] || continue addjob \ writeimage $dir done waitjobs

Спасибо сказали:
Ism
Сообщения: 1261
Статус: Никто, по сути быдло

Re: Паралельное выполнение дисковых операций

Сообщение Ism »

Диск выдаёт 120 мегабайт на чтение и около 80ти на запись, так что может легко обеспечивать запись 5 DVD дисков одновременно с максимальной скоростью 20 мегабайт в секунду.


Неа, головок у диска не станет больше, поэтому параллельные операции с диском идут намного дольше чем последовательные
Выход один, каждый процесс работает с отдельным физическим диском.

Как вариант - в отдельной директории создать комплект ссылок на файлы для каждого диска, и отправить без создания образа на запись, как здесь говорилось. Так как процесс записи на DVD довольно медленный, то запись 2 DVD файловая система потянет.

Но это теория, я не знаю как growisofs воспримет ссылки, может ему только файлы надо.
Спасибо сказали:
156
Сообщения: 234
ОС: OPENSUSE ALTLINUX

Re: Паралельное выполнение дисковых операций

Сообщение 156 »

головок у диска не станет больше, поэтому параллельные операции с диском идут намного дольше чем последовательные
Выход один, каждый процесс работает с отдельным физическим диском.

Как вариант - в отдельной директории создать комплект ссылок на файлы для каждого диска, и отправить без создания образа на запись, как здесь говорилось. Так как процесс записи на DVD довольно медленный, то запись 2 DVD файловая система потянет.


Собран RAID5 из дисков по 1.5терабайта, они выдают без проблем 120 мегабайт на чтение и 80 на запись. Писать собираемся видеофайлы, они большие и созданы последовательно, запись начинается со скорости 7 мегбайт в секунду и заканчивается на скорости около 25 мегабайт в секунду, так что имхо, проблем со скоростью, в данный момент 2 привода, не будет. Я по своей специальности и образованию очень далёк от програмирования и баша в частности, поэтому прошу у форума консультации, как запустить часть скрипта паралельно для нескольких приводов, т.к. Команды в баше выполняются последовательно, а для ОДНОВРЕМЕННОЙ записи DVD дисксов нужно указанную выше часть кода запустить паралельно из одного скрипта ( как текущий вариант,запускать в разных консолях ), при этом эти паралельно работающие кусочки скрипта должны читать подготовленный до распаралеливания список дисков с перечисленными в нём файлами, записывать по этому списку файлы на диск, проверять правильность записанного, менять диски и переходить к записи следующего диска. При всей академичности это оказалось не так просто...
Спасибо сказали:
Ism
Сообщения: 1261
Статус: Никто, по сути быдло

Re: Паралельное выполнение дисковых операций

Сообщение Ism »

Вам проще нанять программиста который напишет нужную утилиту, она будет проста. Или поискать софт для этого.
Спасибо сказали:
156
Сообщения: 234
ОС: OPENSUSE ALTLINUX

Re: Паралельное выполнение дисковых операций

Сообщение 156 »

Ism писал(а):
16.01.2012 18:08
Вам проще нанять программиста который напишет нужную утилиту, она будет проста. Или поискать софт для этого.

Может Вы и правы. Софта под линь, умеющего одновременно задействовать для записи несколько приводов- НЕТ! Поэтому и пытаюсь сочинить что то своё. Интересно, а сколько будет стоить работа програмиста?
Спасибо сказали:
Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Re: Паралельное выполнение дисковых операций

Сообщение ZyX »

156 писал(а):
16.01.2012 19:10
Ism писал(а):
16.01.2012 18:08
Вам проще нанять программиста который напишет нужную утилиту, она будет проста. Или поискать софт для этого.

Может Вы и правы. Софта под линь, умеющего одновременно задействовать для записи несколько приводов- НЕТ! Поэтому и пытаюсь сочинить что то своё. Интересно, а сколько будет стоить работа програмиста?

Мой скрипт наверху работает при условии, что команды

(Created by format.vim)

genisoimage -o $iso -D -r --joilet-long -graft-points -path-list=$dir growisofs -Z $dev $iso


, работают (у меня нет даже привода, не то что этих программ). Предполагается, что они каким‐то магическим образом меняют диски (возможно, надо добавить eject $dev, будет работать если growisofs будет ждать, пока закроется трей, а не свалиться с ошибкой). Проверялось всё без реальных устройств, с командой sleep $(( RANDOM%10 )) вместо вышеуказанных.

Также не проверялось, что делает dirsplit, каталоги создавались вручную.

Вообще «софта под линь, умеющий одновременно задействовать для записи несколько приводов» нет, потому что указанная задача решается тривиально комбинацией уже существующих программ с какой‐то очередью задач. Задача в данном случае осложнялась тем, что применённый мною parjobs.zsh проектировался для запуска несвязанных между собой тестов, а здесь каждая задача требует ресурсов, которые нельзя использовать совместно с другой задачей.

В общем‐то, если дело несрочное, то можно задавать вопросы по моему скрипту: проблема недостаточно сложна, чтобы сообщество не могло её решить. Другое дело, что, похоже, я здесь единственный, кому понадобилась очередь задач, написанная на shell (точнее, на zsh) и способная запускать задачи параллельно.
Спасибо сказали:
Ism
Сообщения: 1261
Статус: Никто, по сути быдло

Re: Паралельное выполнение дисковых операций

Сообщение Ism »

А что , трудно запустить параллельно 2 скрипта в разных терминалах вычитывающих списки файлов из текстовых файлов подготовленных заранее 3 скриптом.

И вообще, как можно ожидать многопоточности от bash ?

Единственный способ взаимодействия между скриптами это pipe кажется
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Паралельное выполнение дисковых операций

Сообщение watashiwa_daredeska »

Ism писал(а):
16.01.2012 22:38
Единственный способ взаимодействия между скриптами это pipe кажется
Файлы еще :)
Спасибо сказали:
Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Re: Паралельное выполнение дисковых операций

Сообщение ZyX »

watashiwa_daredeska писал(а):
16.01.2012 22:42
Ism писал(а):
16.01.2012 22:38
Единственный способ взаимодействия между скриптами это pipe кажется
Файлы еще :)

А также сигналы.
Спасибо сказали:
Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Re: Паралельное выполнение дисковых операций

Сообщение ZyX »

Ism писал(а):
16.01.2012 22:38
А что , трудно запустить параллельно 2 скрипта в разных терминалах вычитывающих списки файлов из текстовых файлов подготовленных заранее 3 скриптом.

И вообще, как можно ожидать многопоточности от bash ?

Единственный способ взаимодействия между скриптами это pipe кажется
Потоки — нет, а процессы — спокойно. Можете ещё посмотреть (zsh) на coproc и zpty, оба позволяют общаться с параллельно запущенным процессом, не привлекая именованные каналы (хотя zpty вроде задуман, как замена expect, но можно использовать этот модуль и так). Впрочем, в моём варианте используется файл. Можно было использовать процесс, организующий очередь, но переписывать parjobs.zsh под это дело не хотелось.
Спасибо сказали:
156
Сообщения: 234
ОС: OPENSUSE ALTLINUX

Re: Паралельное выполнение дисковых операций

Сообщение 156 »

Ism писал(а):
16.01.2012 22:38
А что , трудно запустить параллельно 2 скрипта в разных терминалах вычитывающих списки файлов из текстовых файлов подготовленных заранее 3 скриптом.
Похоже, что это пока единственный доступный для меня работающий вариант решения задачи записи дисков.
Ism писал(а):
16.01.2012 22:38
И вообще, как можно ожидать многопоточности от bash ?
Я читал про ограничения в баше, поэтому и задал вопрос на форуме.
Ism писал(а):
16.01.2012 22:38
Единственный способ взаимодействия между скриптами это pipe кажется
Пока не нашёл, как это может нам помочь в распаралеливании процесса записи дисков.

П.с. Второй привод поломался, так что проблема топика отпала сама собой, :) , получилось по законам Мерфи - 80% проблем рассасываются сами собой, 20% проблем не решаются вообще... ;)
Спасибо сказали:
Аватара пользователя
infra_hdc
Сообщения: 376
ОС: GNU/Linux

Re: Паралельное выполнение дисковых операций

Сообщение infra_hdc »

SLEDopit писал(а):
10.01.2012 14:18
Лучше бы md5sum сравнивали:

Код: Выделить всё

$ md5sum /tmp/dvd.iso
и

Код: Выделить всё

$ md5sum /dev/sr0
емнип, так должно работать.

гораздо лучше md5-тить девайс вот так:

Код: Выделить всё

$ dd if=/dev/sr0 bs=2048 count=$(/sbin/isosize -d 2048 /dev/sr0) | md5sum -b -

уже где-то обсуждалось. при этом считается область на диске, где файловая система iso9660 только
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Паралельное выполнение дисковых операций

Сообщение drBatty »

156 писал(а):
16.01.2012 19:10
Может Вы и правы. Софта под линь, умеющего одновременно задействовать для записи несколько приводов- НЕТ! Поэтому и пытаюсь сочинить что то своё. Интересно, а сколько будет стоить работа програмиста?

может в феврале займусь таким извращением, если
1. мне больше заняться нечем будет
2. вы мне перешлёте денег на болванки для опытов (:
хотя вообще говоря - не слишком интересная задача, с очевидным решением.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Паралельное выполнение дисковых операций

Сообщение sash-kan »

156 писал(а):
16.01.2012 19:10
Софта под линь, умеющего одновременно задействовать для записи несколько приводов- НЕТ!
как-то я всю жизнь считал, что дубликаторы cd/dvd — это просто «железные» контроллеры без всякой операционной системы·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
156
Сообщения: 234
ОС: OPENSUSE ALTLINUX

Re: Паралельное выполнение дисковых операций

Сообщение 156 »

$ dd if=/dev/sr0 bs=2048 count=$(/sbin/isosize -d 2048 /dev/sr0) | md5sum -b -
На форуме уже обсуждалось, что данный способ не подходит для DVD , это будет работать для CD.
дубликаторы cd/dvd
Нужно было записывать большой объём информации с глубоким вложением каталогов и кучей файлов, Или вторая задача - перевод видео файлов (торенты, видеонаблюдение) на DVD порядка 200 гигов в день. Дубликаторы - это имхо, немного другое.
очевидное решение.
Очевидное решение - это когда мы пишем 10 файлов без папок на один диск без проверки и автоматизации ручками на одном приводе. А когда нам нужно записать 50-80 дисков DVD за короткое время на нескольких приводах с проверкой ( переписыванием в случае неудачной записи) и подписыванием дисков, составления каталога ( что на каком диске записано ), то задача выходит за рамки HowTo CD-Record, интерактивность и прочие удобства не следует забывать...
Спасибо сказали:
Аватара пользователя
infra_hdc
Сообщения: 376
ОС: GNU/Linux

Re: Паралельное выполнение дисковых операций

Сообщение infra_hdc »

156 писал(а):
19.01.2012 07:43
$ dd if=/dev/sr0 bs=2048 count=$(/sbin/isosize -d 2048 /dev/sr0) | md5sum -b -
На форуме уже обсуждалось, что данный способ не подходит для DVD , это будет работать для CD.

и вчера, и сегодня пробовал -- всё ОК
1.в приводе -- болванка DVD

Код: Выделить всё

$ cdrskin -media-info dev=/dev/sr0
cdrskin 0.8.0 : limited cdrecord compatibility wrapper for libburn
cdrskin: NOTE : greying out all drives besides given dev='/dev/sr0'
cdrskin: scanning for devices ...
cdrskin: ... scanning for devices done
cdrskin: pseudo-atip on drive 0
cdrskin: status 1 burn_disc_blank "The drive holds a blank disc"
scsidev: '/dev/sr0'
Device type    : Removable CD-ROM
Vendor_info    : 'TSSTcorp'
Identifikation : 'DVD+-RW TS-H653G'
Revision       : 'DW10'
Driver flags   : BURNFREE
Supported modes: TAO SAO
cdrskin: burn_drive_get_write_speed = 5540  (4.0x)
book type:     DVD+RW (emulated booktype)
Product Id:    MKM/A02/48
Producer:      Mitsubishi Kagaku Media Co.

Mounted media class:      DVD
Mounted media type:       DVD+RW
Disk Is erasable
disk status:              complete
session status:           complete
first track:              1
number of sessions:       1
first track in last sess: 1
last track in last sess:  1
Disk Is unrestricted
Disk type: DVD, HD-DVD or BD

Track  Sess Type   Start Addr End Addr   Size
==============================================
    1     1 Data   0          2295103    2295104

Last session start address:         0
Last session leadout start address: 2295104

cdrskin: Media is overwriteable. No blanking needed. No reliable track size.
cdrskin: Above contrary statements follow cdrecord traditions.

2. инфа о команде isosize у меня в системе:

Код: Выделить всё

$ /sbin/isosize --version
isosize (util-linux-ng 2.17.2)
$ dpkg -s util-linux
Package: util-linux
Essential: yes
Status: install ok installed
Priority: required
Section: utils
Installed-Size: 2112
Maintainer: LaMont Jones <lamont@debian.org>
Architecture: i386
Version: 2.17.2-9
[...]

3. на той болванке вывод (как видите, всё работает):

Код: Выделить всё

$ /sbin/isosize /dev/sr0
3069315072
$ /sbin/isosize -d 2048 /dev/sr0
1498689

4. система:

Код: Выделить всё

$ lsb_release -a
No LSB modules are available.
Distributor ID:    Debian
Description:    Debian GNU/Linux 6.0.3 (squeeze)
Release:    6.0.3
Codename:    squeeze
$ uname -a
Linux xxx.xxx.xx 2.6.32-5-686-bigmem #1 SMP Mon Jan 16 16:42:05 UTC 2012 i686 GNU/Linux

5. причём в мане специально упомянуто
(man isosize) писал(а):[...]This can now be a large number (>> 4 GB).[...]

а какая версия /sbin/isosize у Вас? и какое программное окружение?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21456
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Паралельное выполнение дисковых операций

Сообщение Bizdelnick »

156 писал(а):
16.01.2012 19:10
Софта под линь, умеющего одновременно задействовать для записи несколько приводов- НЕТ!

Внезапно наткнулся: http://qt-apps.org/content/show.php/qmulti...?content=106254.
Пользовать не пробовал.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Паралельное выполнение дисковых операций

Сообщение drBatty »

156 писал(а):
19.01.2012 07:43
А когда нам нужно записать 50-80 дисков DVD за короткое время на нескольких приводах с проверкой ( переписыванием в случае неудачной записи) и подписыванием дисков, составления каталога ( что на каком диске записано ), то задача выходит за рамки HowTo CD-Record, интерактивность и прочие удобства не следует забывать...

почему "выходит"? ИМХО та же самая задача.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
156
Сообщения: 234
ОС: OPENSUSE ALTLINUX

Re: Паралельное выполнение дисковых операций

Сообщение 156 »

Когда нужно записывать 200-300 гигов инфы в день, которая лежит в примерно в 400-500 папках, а файлов примерно 300 тысяч, работа по хау ту становится малопроизводительной. Все рекомендации написаны для тривиальных простейших случаев, когда надо записать один файл или каталог, который заведомо помещается на одну болванку (согласен, что профи найдёт способ решить свой конкретный случай, но он для этого 5 лет учился и 15 лет практиковался). А когда число болванок переваливает за сотню, нужна некоторая автоматизации и распаралеливание, те хау ту , которые попадались мне в инете, ничего про распаралеливание и автоматизацию не предлагали.Поэтому и возникла эта тема. Имхо, командная строка из мощного инструмента, которым она была в 80тые, в 2012том всё больше превращается в рудимент, тормозящий развитие программ. Когда програмист думает, какую бы нужную и полезную ему прогу написать для линукса, он вспоминает, что есть такая функция в командной строке, которая пусть и на уровне двадцителетней давности, но уже реализована и работает, и новая програ не пишется. А в винде проги пишутся с нуля на сегодняшнем уровне и поэтому более функциональны и дружественны к пользователю. ИМХО.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Паралельное выполнение дисковых операций

Сообщение drBatty »

156 писал(а):
23.04.2012 09:55
А когда число болванок переваливает за сотню, нужна некоторая автоматизации и распаралеливание, те хау ту , которые попадались мне в инете, ничего про распаралеливание и автоматизацию не предлагали.

вы видимо не те хаутушки читали - вполне себе можно параллельно собирать 100500 архивов и писать 100500 файлов.
вот только к cdrecord это слабо относится.
156 писал(а):
23.04.2012 09:55
Имхо, командная строка из мощного инструмента, которым она была в 80тые, в 2012том всё больше превращается в рудимент, тормозящий развитие программ.

это у вас от незнания просто :(
на самом деле, написать 100500 программ на все случаи жизни практически невозможно, например для вашего совсем не типичного случая. Зато набросать скриптик под _вашу_ задачу - вопрос максимум пары дней, если вы вообще полный ноль в кодинге. Причём писать придётся именно на shell, ибо изучение C это вопрос месяцев, а С++ даже за пять лет не освоить.
156 писал(а):
23.04.2012 09:55
Все рекомендации написаны для тривиальных простейших случаев, когда надо записать один файл или каталог

угу. Потому-что в *NIX можно обрабатывать сколько угодно каких угодно файлов, причём когда угодно, в т.ч. и одновременно. Случай записи файлов на CD _не_ является каким-то "особым", и потому в хаутушках рассматривается только простейший случай.
156 писал(а):
23.04.2012 09:55
когда надо записать один файл или каталог, который заведомо помещается на одну болванку

если надо запаковать 100500 файлов на Over9000 носителей, то такая задача НЕ является какой-то "новой", она очень древняя, и возникала ещё во времена дисковых накопителей. Тогда же придумали tar с многотомными архивами. Эта программа до сих пор отлично работает, и уже много лет назад в ней появились средства, что-бы писать не только на ленту, но и например на CD/DVD/Flash носители.
156 писал(а):
23.04.2012 09:55
есть такая функция в командной строке, которая пусть и на уровне двадцителетней давности, но уже реализована и работает, и новая програ не пишется. А в винде проги пишутся с нуля на сегодняшнем уровне и поэтому более функциональны и дружественны к пользователю. ИМХО.

проблема только одна: мне потребовалось изучить CLI и shell, и я теперь могу выполнить _любую_ задачу. Для венды мне потребуется для _каждой_ задачи сначала найти нужную программу, потом её скачать/украсть/купить, а потом поставить и изучить. Лично мне - лень так напрягаться.

PS: и всё-же я не понимаю, что вам мешает запустить внутри скрипта две (или больше) программы cdrecord, которые будут писать данные на разные приводы? А сам скрипт пойдёт спать (man sleep) каждую секунду проверяя, не закончилась-ли запись какого-то носителя(man ps, man bash). Кроме того, тот же скрипт может ещё и запустить tar, который подготовит данные для новых болванок. Естественно проверку данных тоже можно делать одновременно с записью. У вас какие-то проблемы с этим возникли? Какие? "Многозадачность" в CLI есть, ИМХО её там даже слишком многовато...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Паралельное выполнение дисковых операций

Сообщение sash-kan »

156 писал(а):
23.04.2012 09:55
Имхо, командная строка из мощного инструмента, которым она была в 80тые, в 2012том всё больше превращается в рудимент, тормозящий развитие программ.
1. распараллеливание задач ввода-вывода на одном компьютере в общем случае имеет весьма мало смысла·
2. для распараллеливания задач (не только ввода/вывода) уже написано предостаточно программ: небольшой список
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Crazy
Сообщения: 862
Статус: Адепт Дзен.
ОС: Mint, Win7.

Re: Паралельное выполнение дисковых операций

Сообщение Crazy »

drBatty писал(а):
23.04.2012 11:53
на самом деле, написать 100500 программ на все случаи жизни практически невозможно, например для вашего совсем не типичного случая. Зато набросать скриптик под _вашу_ задачу - вопрос максимум пары дней, если вы вообще полный ноль в кодинге. Причём писать придётся именно на shell, ибо изучение C это вопрос месяцев, а С++ даже за пять лет не освоить.

Скрипт то же программа, это программа на интерпретируемом ЯП. Причем в случае с изучением shell придется изучить 100500 консольных утилит.

проблема только одна: мне потребовалось изучить CLI и shell, и я теперь могу выполнить _любую_ задачу.

Шаблонная фраза. Вместо "CLI и shel" можно поставить: Python, Java и т.д.

Desipere in loco
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Паралельное выполнение дисковых операций

Сообщение drBatty »

скрипт это конечно программа, но изучать 100500 команд не нужно.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Crazy
Сообщения: 862
Статус: Адепт Дзен.
ОС: Mint, Win7.

Re: Паралельное выполнение дисковых операций

Сообщение Crazy »

drBatty писал(а):
23.04.2012 17:49
скрипт это конечно программа, но изучать 100500 команд не нужно.

Это будет зависеть от конкретной оболочки.

Desipere in loco
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Паралельное выполнение дисковых операций

Сообщение drBatty »

Crazy писал(а):
24.04.2012 10:57
Это будет зависеть от конкретной оболочки.

я говорил про bash. там нет так уж много языковых конструкций, и выучить их довольно просто (и главное - быстро). Повторюсь: вопрос исключительно во времени написания скрипта - наляпать скриптег на bash можно быстро и просто. В отличие от программы на C++. Практически для любой задачи. Что в общем-то не удивительно, например в случае ТСа: нужно записать болванку? man cdrecord. Нужно записывать постоянно 100500 болванок? man bash. Ну если совсем честно, то ещё
man tar что-бы сворачивать и жать данные на болванки
(опционально) man par2, что-бы добавлять инфу для восстановления (оптические носители со временем теряют информацию. а записывать несколько раз одно и тоже в прямом смысле дорого, да и в переносном тоже)
(опционально) man gpg, что-бы это всё ещё и зашифровать, ну что-бы не Over9000 сейфов не тратится - пусть лежат себе спокойно на полочке.
Вот вроде-бы и все утилиты. Даже при всём желании их можно по пальцам пересчитать. Где тут ТС увидел 100500 - совершенно непонятно.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: