J. Sheridan, commander of the Babylon 5 station (j_sheridan) wrote,
J. Sheridan, commander of the Babylon 5 station
j_sheridan

Category:

Автомонтирование устройств с помощью autofs

Очень многие задают мне вопрос "Как правильно настроить автомонтирвание устройств?"... Попробую ответить.
Сразу скажу,  я не понимаю моды на hal, и честно говоря не совсем понимаю его необходимость, а поэтому работаю со стандартным automount/autofs. К томуже реально автоматическое определение устройств а не менее же автоматическим их монтированием куда попало обычно реально пригождается гдето в среднем раз в год (для меня конечно, не спорю - есть компы куда всякие левые флешки втыкаются с частотой системного таймера), а поэтому лучше один раз прописать что куда надо монтировать и как монтировать, чем напрягать комп каждый раз гадать куда же примонтировать флешку... Впрочем ладно.

Сначала определимся с дистрибутивом, в терминах которого будем вести разговор. Это Gentoo. Но не спешите бросать читать статью - это значит всего лишь, что имена пакетов (имена сервисов, и возможно расположение конфигов) будут гентушные. В вашем дистрибутиве вся настройка будет точно такаяже, и все будет работать. Просто переведите все в термины вашего дистрибутива.
Далее, определимся, какие ФС будем монтировать. Ну, во первых это iso9660 и прочие фс компакт-дисков. Как правило не требуют указания - достаточно auto. Второе - это 'локальные' fs: vfat, ntfs, ext ну и прочие фс, которые обычно лепят к винтам и флешкам. И третье - это фс сетевые: samba, nfs.
Переодим к настройке.
Во первых, в вашем ядре должна быть включена поддержка автомонтера
File Systems --->
  <*> Kernel automounter version 4 support (also supports v3)

Ну и конечно же должна быть включена поддержка тех файловых систем, которые вам надо монтировать. Поддержку автомонтирования обеспечивает пакет net-fs/autofs. Устанавливаем его. Также устанавливаем пакеты поддержки других фс. net-fs/nfs-utils для nfs, net-fs/mount-cifs для самбы (нам же не нужен сервер? нам нужно просто примонтировать сетевую шару. Не забываем в ядре выбрать сборку cifs), чтототам для ntfs (лично я пользуюсь тем, что есть в ядре и монтирую в read-only, так как в 99% мне надо бывает просто чтототам скопировать с раздела). Вобщем установили пакеты. Можно настраивать.
Ходим в /etc/autofs. Там есть файлик auto.master - в этом файлике настраивается какие (классы|типы|территориально расположенные|прочее) будут монтироваться в подкаталоги каталога.
Поясню :)
Вот у нас скажем есть пара разделов под виндой. Вполне логично их монтировать в /mnt/windows/part_C и /mnt/windows/part_D. Или например у нас на серваке deepwin есть несколько шар, которые вполне логично смонтировать в /mnt/net/deepwin/share_0, /mnt/net/deepwin/share_1, /mnt/net/deepwin/install. Или скажем флешки удобно монтировать в /etc/flash/(имя). Ну и так далее. Надеюсь идею вы поняли.
Для начала создаем несколько папок, куда будет происходить реальное монтирование. Я предпочитаю, чтобы они держались внизу списка, поэтому первой буквой у меня в их названии - z. Затем создаем еще одно дерево (уже без z), куда делаем симлмнки... Вобщем проще показать, что приблизительно должно в итоге получиться.
mnt
|-- cddvd
|   |-- asus -> /mnt/z_autofs_cddvd/asus
|   |-- hp -> /mnt/z_autofs_cddvd/hp
|   `-- teac -> /mnt/z_autofs_cddvd/teac
|-- flash
|   |-- card_reader_sd -> /mnt/z_autofs_flash/card_reader_sd
|   `-- sheridan_hd -> /mnt/z_autofs_flash/sheridan_hd
|-- network
|   |-- domainctrl
|   |   |-- backup -> /mnt/z_autofs_network/domainctrl/backup
|   |   `-- install -> /mnt/z_autofs_network/domainctrl/install
|   `-- gate
|       |-- portage -> /mnt/z_autofs_network/gate/portage
|       `-- storage -> /mnt/z_autofs_network/gate/storage
|-- other
|   `-- fd -> /mnt/z_autofs_other/fd
|-- windows
|   |-- win_c -> /mnt/z_autofs_windows/win_c
|   `-- win_d -> /mnt/z_autofs_windows/win_d
|-- z_autofs_cddvd
|   |-- asus
|   |-- hp
|   `-- teac
|-- z_autofs_flash
|   |-- card_reader_sd
|   `-- sheridan_hd
|-- z_autofs_network
|   |-- domainctrl
|   |   |-- backup
|   |   `-- install
|   `-- gate
|       |-- portage
|       `-- storage
|-- z_autofs_other
|   `-- fd
`-- z_autofs_windows
    |-- win_c
    `-- win_d


Надеюсь понятно :)
Теперь непосредственно настройка.
Возвращаемся в /etc/autofs/auto.master и пишем там:
/mnt/z_autofs_cddvd                       /etc/autofs/auto.cddvd
/mnt/z_autofs_flash                        /etc/autofs/auto.flash
/mnt/z_autofs_network/domainctrl       /etc/autofs/auto.domainctrl             --timeout=300
/mnt/z_autofs_network/gate              /etc/autofs/auto.gate                    --timeout=300
/mnt/z_autofs_other                       /etc/autofs/auto.other
/mnt/z_autofs_windows                   /etc/autofs/auto.windows

Опции местные можно посмотреть в man automount, поэтому в подробности не вдаюсь. Единственное что подскажу - --debug, помогает если что непонятно. Шлет логи в сислог.
Так. Далее, как вы уже догадались - для каждого класса нам необходимо создать свой конфиг. По порядку:
/etc/autofs/auto.cddvd
asus            -fstype=auto,ro,users,utf8              :/dev/sr0 # аха, юсб
hp              -fstype=auto,ro,users,utf8              :/dev/hde
teac            -fstype=auto,ro,users,utf8              :/dev/hdg

А какже, скажете быть с флешками и прочими переносными винтами? У них же устройства /dev/sdхренпоймешкакое?
Очень просто.
adm 1 # ls -1 /dev/disk/by-id/
ata-ST380815AS_9QZ208FE
ata-ST380815AS_9QZ208FE-part1
ata-ST380815AS_9QZ208FE-part2
ata-ST380815AS_9QZ208FE-part3
scsi-SATA_ST380815AS_9QZ208FE
scsi-SATA_ST380815AS_9QZ208FE-part1
scsi-SATA_ST380815AS_9QZ208FE-part2
scsi-SATA_ST380815AS_9QZ208FE-part3
usb-ASUS_SDRW-0806T-D_000000000000-0:0

Ясно? Каждое usb (и не только usb) removable устройство имеет симлинк, однозначно указывающий на это устройство.
Поэтому
/etc/autofs/auto.flash
sheridan_hd       -fstype=vfat,umask=0,users              :/dev/disk/by-id/usb-WDC_WD40_0VE-07HDT0_0-0\:0-part1
card_reader_sd     -fstype=vfat,rw,users,umask=0,noexec    :/dev/disk/by-id/usb-Multi_Flash_Reader_058F0O1111B1-0\:0-part1

То есть ссылаемся на симлинк устройства :)
Далее.
/etc/autofs/auto.domainctrl
backup        -fstype=cifs,users,iocharset=utf8,uid=sheridan,gid=users,username=логин,password=пароль,rw ://domainctrl/backup
install         -fstype=cifs,users,iocharset=utf8,uid=sheridan,gid=users,username=логин,password=пароль,rw ://domainctrl/install

/etc/autofs/auto.gate
storage                 -fstype=nfs,timeo=30,rw,tcp,intr,hard,rsize=8192,wsize=8192     gate:/var/storage
portage             -fstype=nfs,timeo=30,rw,tcp,intr,hard,rsize=32768,wsize=32768   gate:/usr/portage

Конечно же, со стороны сервера nfs тоже должно быть настроено и стартовано :)
/etc/autofs/auto.other
fd                      -fstype=auto,umask=0,users,sync         :/dev/fd0

/etc/autofs/auto.windows
win_c   -fstype=ntfs,rw,users,umask=0,noexec    :/dev/hda3
win_d   -fstype=ntfs,rw,users,umask=0,noexec    :/dev/mapper/sil_aiacdccfcebh1

Собственно, все...
Осталось стартовать сервис /etc/init.d/autofs start и добавить в автостарт rc-update -a autofs default
Не пугайтесь - папки на которые вы делали симлинки - изчезнут. Они появляются при монтировании указанной для папки ФС. А монтируются они при обращении к симлинку. Поэтому любые последующие изменения конфигурации необходимо проводить при остановленном сервисе.
Данный подход хорош тем, что фс монтируются только в том случае, если действительно нужны, и при отсутствии необходимости в них - отмонтируются. Если не получается примонтировать - включаем дебаг, а в соседней консоли делаем tailf /var/log/messages | grep automount
Надеюсь, написал я вполне понятно. Дополнения, поправки и прочая критика приветствуется. :)
Писалось исходя из собственного опыта и с небольшим использованием этой статьи.
Tags: autofs, samba, Автоматизация, Статьи
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 13 comments