Re: Что почитать о мон тировании сменных носителей?

2009-11-04 Пенетрантность Evgeniy M. Solodookhin
,-[Sun, Oct 04, 2009 at 15:26 +0300, Aleksey Cheusov:]
| Здравствуйте!
|
| Прошу совета -- что почитать о всём том хозяйстве, которое
| занимается в debian lenny мнотированием сменных носителей. 
|
|Выбрасываешь это чудише на основе HAL к чертям и монтируешь с помощью
|autofs/am-utils на выбор.
|
|Пример конфигов на основе autofs:
|
|/etc/auto.misc:

а можно ли с autofs задудонить выполнение некоего скрипта при подсоединении 
некоего устройства ?
почитал хауту: привязка типа программа  должна лишь рожать текст с опциями 
монтирования устройств.
а то ужасно хочется, чтоб книжка синхронизировалась при примонтировании. и не 
вижу в автофс возможности mountexec
)

-- 
__
mpd status: [playing]
di_music/torrents/Ted Nugent - Ted Nugent[torrents.ru]/01 Stranglehold.flac
**
*  jabber:  devil_ins...@jabber.ru   *
*   Registered linux user #450844*
**


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Re: Что почитать о мон тировании сменных носителей?

2009-11-04 Пенетрантность Evgeniy M. Solodookhin
,-[Wed, Nov 04, 2009 at 23:07 +0300, Artem Chuprina:]
|Evgeniy M. Solodookhin - debian-russian@lists.debian.org  @ Wed, 4 Nov 2009 
22:39:21 +0300:
|
| EMS а можно ли с autofs задудонить выполнение некоего скрипта при
| EMS подсоединении некоего устройства ?
|
|Нет.  Это не его дело.
|
|Его дело - подмонтировать _файловую систему_ при обращении к ней.  А на
|подсоединение устройства - это проще всего чем-нибудь типа
|
|#!/usr/bin/perl
|my $found;
|while (1) {
|if (-f '/dev/disk/by-.../...') {
|system('/the/script') if !$found; # вот тут и пригодится autofs
|found=1;
|} else {
|found=0;
|}
|sleep(1);
|}
|
|-- 
|Нужны две программы - одна с интерфейсом, а другая чтобы работу делала.
|   Victor Wagner в aut24i$gc...@wagner.wagner.home
|

спасибо, почему-то так и думал
)

-- 
__
mpd status: [paused]
di_music/torrents/Ted Nugent - Ted Nugent[torrents.ru]/05 Snakeskin Cowboys.flac
**
*  jabber:  devil_ins...@jabber.ru   *
*   Registered linux user #450844*
**


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Re: Что почитать о мон тировании сменных носителей?

2009-10-06 Пенетрантность Stanislav Maslovski
On Tue, Oct 06, 2009 at 08:49:50PM +0400, Alexander Galanin wrote:
 On Tue, 6 Oct 2009 00:40:26 +0400
 Stanislav Maslovski stanislav.maslov...@gmail.com wrote:
 
  Тут сначала надо бы разобраться необходимо ли вообще предохраняться
  от race. В документации не очень внятно написано про порядок вызова
  callouts для _разных_ устройств. Т.е., может ли быть так, что cleanup
  скрипт еще не завершился (стартует по факту создания записи
  /org/freedesktop/Hal/devices/computer), а hal-autofs(add) уже
  выполняется (стартует по факту втыкания флешки).
  
  Кстати, как я сейчас вижу, мое решение вовсе не избавляет от этого
  race condition, если на момент запуска hal-autofs(add) в /media/
  _отсутствует_ симлинк c именем `basename $UDI`. Нужен семафор.
  
  Второй момент -- может ли по каким-то причинам реализоваться ситуация,
  когда hal-autofs(remove) еще не завершился, а hal-autofs(add) уже
  стартовал для того же девайса (выдернули и тут же воткнули флешку).
  От этого мое решение предохраняет (даже если удаление не отработает
  то и зацикливание на ожидании не страшно -- hald прибивает подвисшие
  callouts, и симлинк уже есть).
 
 (ехидно) Вот примерно об этом я и говорил, когда употребил слова
 простой и понятный.

Это как раз-таки ерунда. Сугубо техническая деталь. Решается одним
вопросом в рассылке h...@lists.freedesktop.org или прямым
экспериментом.

-- 
Stanislav


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Re: Что почитать о мон тировании сменных носителей?

2009-10-06 Пенетрантность Stanislav Maslovski
On Tue, Oct 06, 2009 at 11:16:20PM +0400, Stanislav Maslovski wrote:
 On Tue, Oct 06, 2009 at 08:49:50PM +0400, Alexander Galanin wrote:
  On Tue, 6 Oct 2009 00:40:26 +0400
  Stanislav Maslovski stanislav.maslov...@gmail.com wrote:
  
   Тут сначала надо бы разобраться необходимо ли вообще предохраняться
   от race. В документации не очень внятно написано про порядок вызова
   callouts для _разных_ устройств. Т.е., может ли быть так, что cleanup
   скрипт еще не завершился (стартует по факту создания записи
   /org/freedesktop/Hal/devices/computer), а hal-autofs(add) уже
   выполняется (стартует по факту втыкания флешки).
   
   Кстати, как я сейчас вижу, мое решение вовсе не избавляет от этого
   race condition, если на момент запуска hal-autofs(add) в /media/
   _отсутствует_ симлинк c именем `basename $UDI`. Нужен семафор.
   
   Второй момент -- может ли по каким-то причинам реализоваться ситуация,
   когда hal-autofs(remove) еще не завершился, а hal-autofs(add) уже
   стартовал для того же девайса (выдернули и тут же воткнули флешку).
   От этого мое решение предохраняет (даже если удаление не отработает
   то и зацикливание на ожидании не страшно -- hald прибивает подвисшие
   callouts, и симлинк уже есть).
  
  (ехидно) Вот примерно об этом я и говорил, когда употребил слова
  простой и понятный.
 
 Это как раз-таки ерунда. Сугубо техническая деталь. Решается одним
 вопросом в рассылке h...@lists.freedesktop.org или прямым
 экспериментом.

Поэкспериментировал. hald _сериализует_ вызов add/remove callouts для
одного девайса, следовательно, сценарий 2 исключается. Вызов callouts
для разных девайсов не сериализован (что разумно, иначе бы hald
нещадно тупил при старте), поэтому сценарий 1 возможен.

Но хитрость в том, что find в скрипте cleanup вызывается у меня с
опцией -L (следовать симлинкам, про что я совсем забыл), поэтому, если
по каким-то причинам скрипт cleanup протормозит и hal-autofs(add)
отработает раньше и положит в /media свой симлинк, то когда find -L на
него наткнется, произойдет активация механизма autofs в ядре, файловая
система подмонтируется, симлинк окажется указывающим на корневой
каталог устройства (т.е. на объект -type d, a не -type l) и в список
на удаление не попадет. То есть, даже если cleanup скрипт отработает
позже hal-autofs(add), это не приведет к удалению только что
созданного симлинка.

Так что все проще некуда и while со sleep-ом из скрипта можно смело
удалить ;)

-- 
Stanislav


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Re: Что почитать о мон тировании сменных носителей?

2009-10-05 Пенетрантность Stanislav Maslovski
On Mon, Oct 05, 2009 at 06:57:08PM +0400, Alexander Galanin wrote:
 On Sun, 4 Oct 2009 16:28:39 +0400
 Stanislav Maslovski stanislav.maslov...@gmail.com wrote:
 
  On Sun, Oct 04, 2009 at 02:03:22PM +0400, Alexander Galanin wrote:
   Как результат такой перегруженности процесса монтирования, нормальных
   средств для работы с демоном HAL нет. Нормальный понимается как
   простой, 'понятный и скриптуемый.
  
  Не так страшен черт, как его малюют. Довольно давно уже (примерно с
  момента, когда иксы к hal привязали) для себя использую связку из
  autofs, hald и пары скриптов. До этого использовал связку udev +
  autofs.
  
  Насколько просто, понятно и скриптуемо это решение -- можешь
  посмотреть сам. Прилагаю tar.gz.
 
 Занятно. Только вот непонятно, зачем нужно ожидание исчезновения
 симлинки из /media.

Это на случай race между cleanup скриптом и отработкой события add в
другом скрипте, или между событиями удаления/добавления в одном
скрипте (точнее, между двумя рейнкарнациями одного скрипта).
Предложения как сделать лучше принимаются. Текущий вариант
остался со времени proof of concept.

 А также очень хотелось бы узнать документ, из
 которого взяты значения для fdi-файла.

aptitude install hal-doc  w3m /usr/share/doc/hal-doc/spec/hal-spec.html

 А уж совсем хорошо было бы услышать авторское описаие того, как это
 всё-таки работает.

Примерно так:

1. Скрипт hal-autofs-cleanup отрабатывает при добавлении в базу
записи /org/freedesktop/Hal/devices/computer. Это происходит при
каждом (ре)старте hald. Назначение скрипта - удалить битые
символические ссылки, если таковые остались в /media (например,
после зависания компа или падения hald).

2. При втыкании нового устройства hald опрашивает его и приступает к
созданию записи о нем в своей базе. При этом просматриваются fdi файлы
из /etc/hal/fdi/policy (детали есть в документации).

В hal-autofs-policy.fdi у меня сказано, что если воткнутое
устройство является hotplugguble storage c файловой системой vfat
или ext2 (флешки, mmc карты) или removable storage c файловой системой
iso9660 (сидиромы), то:
  a) оно помечается в базе, как обрабатываемое autofs (я добавляю свой
 идентификатор autofs к info.capabilities)
  б) добавляется запись об опциях монтирования для обнаруженной
 файловой системы (добавляю свой ключ volume.autofs.mount_options)
  в) скрипт hal-autofs назначается обработчиком событий add/remove для
 устройств, помеченных идентификатором autofs

3. После обработки policy файлов hald запускает только что
зарегистрированный callout скрипт (c $HALD_ACTION=add). Скрипт создает
симлинк в /media, указывающий на динамическую точку монтирования в
/var/autofs/hal/. В качестве имени симлинка и динамической точки
монтирования берется последняя часть HAL UDI (трюк с basename).

4. При попытке обратиться к /media/`basename $UDI` просыпается
automounter (так как симлинк ведет в /var/autofs/hal/, упомянутый в
/etc/auto.master) и запускает map скрипт /etc/auto.hal, который
извлекает из базы HAL
  a) блочное имя устройства
  б) тип файловой системы
  в) мои опции монтирования
и возвращает эту информацию automounter-у. automounter монтирует FS
в /var/autofs/hal/`basename $UDI` с нужными опциями, после чего она
доступна и через симлинк в /media/.

5. При освобождении файловой системы automounter ее
отмонтирует (по истечении таймаута, заданного в auto.master,
у меня 5 сек)

6. При выдергивании флешки hald приступает к удалению записей об
устройстве и вызывает callout скрипт c $HALD_ACTION=remove. Скрипт
удаляет соответствующий симлинк из /media.

-- 
Stanislav


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Re: Что почитать о мон тировании сменных носителей?

2009-10-05 Пенетрантность Stanislav Maslovski
On Mon, Oct 05, 2009 at 11:10:11PM +0400, Stanislav Maslovski wrote:
 On Mon, Oct 05, 2009 at 06:57:08PM +0400, Alexander Galanin wrote:
  On Sun, 4 Oct 2009 16:28:39 +0400
  Stanislav Maslovski stanislav.maslov...@gmail.com wrote:
  
   On Sun, Oct 04, 2009 at 02:03:22PM +0400, Alexander Galanin wrote:
Как результат такой перегруженности процесса монтирования, нормальных
средств для работы с демоном HAL нет. Нормальный понимается как
простой, 'понятный и скриптуемый.
   
   Не так страшен черт, как его малюют. Довольно давно уже (примерно с
   момента, когда иксы к hal привязали) для себя использую связку из
   autofs, hald и пары скриптов. До этого использовал связку udev +
   autofs.
   
   Насколько просто, понятно и скриптуемо это решение -- можешь
   посмотреть сам. Прилагаю tar.gz.
  
  Занятно. Только вот непонятно, зачем нужно ожидание исчезновения
  симлинки из /media.
 
 Это на случай race между cleanup скриптом и отработкой события add в
 другом скрипте, или между событиями удаления/добавления в одном
 скрипте (точнее, между двумя рейнкарнациями одного скрипта).
 Предложения как сделать лучше принимаются. Текущий вариант
 остался со времени proof of concept.

В догонку:

Тут сначала надо бы разобраться необходимо ли вообще предохраняться
от race. В документации не очень внятно написано про порядок вызова
callouts для _разных_ устройств. Т.е., может ли быть так, что cleanup
скрипт еще не завершился (стартует по факту создания записи
/org/freedesktop/Hal/devices/computer), а hal-autofs(add) уже
выполняется (стартует по факту втыкания флешки).

Кстати, как я сейчас вижу, мое решение вовсе не избавляет от этого
race condition, если на момент запуска hal-autofs(add) в /media/
_отсутствует_ симлинк c именем `basename $UDI`. Нужен семафор.

Второй момент -- может ли по каким-то причинам реализоваться ситуация,
когда hal-autofs(remove) еще не завершился, а hal-autofs(add) уже
стартовал для того же девайса (выдернули и тут же воткнули флешку).
От этого мое решение предохраняет (даже если удаление не отработает
то и зацикливание на ожидании не страшно -- hald прибивает подвисшие
callouts, и симлинк уже есть).

__
Stanislav


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Re: Что почитать о мон тировании сменных носителей?

2009-10-04 Пенетрантность Stanislav Maslovski
On Sun, Oct 04, 2009 at 02:03:22PM +0400, Alexander Galanin wrote:
 Как результат такой перегруженности процесса монтирования, нормальных
 средств для работы с демоном HAL нет. Нормальный понимается как
 простой, 'понятный и скриптуемый.

Не так страшен черт, как его малюют. Довольно давно уже (примерно с
момента, когда иксы к hal привязали) для себя использую связку из
autofs, hald и пары скриптов. До этого использовал связку udev +
autofs.

Насколько просто, понятно и скриптуемо это решение -- можешь
посмотреть сам. Прилагаю tar.gz. Eсли кто захочет использовать у
себя, править нужно hal-autofs-policy.fdi, на предмет добавления
нужных файловых систем и опций монтирования (например, у меня там
нет ntfs).

-- 
Stanislav


hal-autofs.tar.gz
Description: Binary data