Форум Зейского сообщества любителей ОС Linux и Unix

Тематические обсуждения *nix => Общие вопросы => Тема начата: Vena от Воскресенье, 20 Ноября, 2011, 05:32:47

Название: Монтирование сетевого ресурса с помощью fstab
Отправлено: Vena от Воскресенье, 20 Ноября, 2011, 05:32:47
Прописал в fstab такую строку:
//192.168.1.1/share     /mnt/share        cifs    username=user,password=pass,ro,_netdev,iocharsed=utf8   0       0
Загружаюсь, смотрю df -h - не вижу примонтированного сетевого ресурса. Выполняю
sudo mount -aресурс появляется. Вывод такой, рановато срабатывает fstab, и сетевой ресурс автоматически не монтируется.
Как в fstab это регулируется, или надо скрипт с отдельной задачей выполнять после загрузки основной системы ?
//192.168.1.1/share     /mnt/share        cifs    username=user,password=pass,ro,_netdev,iocharsed=utf8   0       0

PS
Debian 6.0
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: vovka от Воскресенье, 20 Ноября, 2011, 08:27:23
Перед проверкой я доустановил пакет smbfs с зависимостями (samba-common, cifs-utils, samba-common-bin) хотя может и без него бы работало.
Цитировать
Вывод такой, рановато срабатывает fstab, и сетевой ресурс автоматически не монтируется.
Не думаю что проблема во времени. Смотрим dmesg:
[   14.775764] r8169 0000:04:00.0: eth0: link up
[   14.775969] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   21.678492] Registering the dns_resolver key type

[   21.678606] CIFS: Unknown mount option iocharsed
[   21.733323]  CIFS VFS: cifs_mount failed w/return code = -6
[   21.733447] CIFS: Unknown mount option iocharsed
[   21.748903]  CIFS VFS: cifs_mount failed w/return code = -6
Интерфейс начинает работать на 14-ой секунде, cifs монтируется на 21-ой. Оп-па! Что за "iocharsed" - такого параметра нету! Есть iocharset. Параметр _netdev не влияет на cifs. Опции можно глянуть в man mount.cifs . После исправления ошибок, снова запускаем и оказывается что всё работает.
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: Vena от Воскресенье, 20 Ноября, 2011, 15:00:06
да, опечатка. У меня iocharset=utf8
всё равно автоматически не монтируется :(
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: vovka от Воскресенье, 20 Ноября, 2011, 15:33:20
всё равно автоматически не монтируется :(

У меня, на реальной машине с Debian 6.0 монтируется без проблем. Правда в fstab я не использую параметр _netdev, и вместо ro использую rw.
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: Vena от Воскресенье, 20 Ноября, 2011, 16:19:41
На реальной машине с Debian 6.0 монтируется без проблем.
чудеса :)
Ладно, разберусь мобыть. Сейчас сервер что-то заглючил, надо его восстановить для начала :)
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: Vena от Воскресенье, 20 Ноября, 2011, 17:59:20
ничего не помогает пока. Автомонтирование не срабатывает, доустановка samba-common, cifs-utils, samba-common-bin ситуёвину не исправила.
Интересно, почему команда
sudo mount -a
всё выполняет, значит параметры в fstab правильные?
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: vovka от Понедельник, 21 Ноября, 2011, 04:16:36
    Что пишет dmesg в своё оправдание? Стартует ли интерфейс раньше процесса монтирования? Используется ли Network-manager для конфигурирования сети?
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: Vena от Понедельник, 21 Ноября, 2011, 14:09:58
в dmesg вообще не нашел строк , содержащих CIFS
манагер не учавствует, иксы не стартую, это сервер.
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: vovka от Понедельник, 21 Ноября, 2011, 16:41:51
Тогда сделаем так - убеждаемся, что строка в fstab обрабатывается при загрузке системы. Для этого параметр _netdev оставляем в строке параметров fstab:
//192.168.1.1/share     /mnt/share        cifs    username=user,password=pass,ro,_netdev,iocharset=utf8   0       0
Затем перезагружаем систему и смотрим dmesg. У меня строка обрабатывается, о чём говорят сообщения об ошибке. Попутно становится видно, что сетевой интерфейс начинает работать раньше:
...
[   14.531219] r8169 0000:04:00.0: eth0: link up
[   14.531423] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   21.502912] Registering the dns_resolver key type
[   21.503034] CIFS: Unknown mount option _netdev
[   21.557231] CIFS: Unknown mount option _netdev
...

Проделайте это и сообщите результат - участок dmesg где отобажается и старт интерфейса и "маты"  на некорректную опцию.
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: Vena от Понедельник, 21 Ноября, 2011, 17:00:08
[   21.406855] r8169: eth0: link up
[   23.798524] fuse init (API version 7.13)
[   32.332092] eth0: no IPv6 routers present
такая вот концовка dmesg. CIFS не обнаружено ;)
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: Vena от Понедельник, 21 Ноября, 2011, 17:05:40
после
sudo mount -aвот такое в dmesg
[  709.598707] Registering the dns_resolver key type
[  709.598773] Slow work thread pool: Starting up
[  709.599071] Slow work thread pool: Ready
[  709.599922] CIFS: Unknown mount option _netdev
сетевой ресурс появился
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: vovka от Вторник, 22 Ноября, 2011, 04:37:58
Эти два лога говорят о том, что строка о cifs в fstab не обрабатывается! Иначе бы вышла ошибка в первом логе. По каким причинам - я не знаю. Попробуем разобраться:
когда машина стартует, сначала происходит переход в однопользовательский режим. Все сервисы этого режима описаны в /etc/rcS.d/ :
Цитировать
root@comp:~# ls -1 /etc/rcS.d/
README
S01mountkernfs.sh
S02udev
S03mountdevsubfs.sh
S04bootlogd
S05keyboard-setup
S06hdparm
S06hostname.sh
S06hwclockfirst.sh
S07checkroot.sh
S08hwclock.sh
S08ifupdown-clean
S08module-init-tools
S08mtab.sh
S09checkfs.sh
S10ifupdown    # поднимаем интерфейсы
S10mountall.sh # монтируем файловые системы, в том числе и cifs
S11mountall-bootclean.sh
S12mountoverflowtmp
S13networking
S13procps
S13udev-mtab
S13urandom
S13x11-common
S14portmap
S15nfs-common
S16mountnfs.sh
S17mountnfs-bootclean.sh
S18kbd
S19console-setup
S20alsa-utils
S20bootmisc.sh
S20fuse
S21stop-bootlogd-single
Здесь поднятие интерфейсов совпадает по времени с монтированием. У меня всё работает, значит, теоретически, какой-то временнОй разнос всё-таки есть.
Когда все скрипты из /etc/rcS.d/  выполнены, стартуют сервисы из 2-го многопользовательского режима: /etc/rc2.d/
Кстати, скрипты инициализации требуют пустой строки в конце fstab. Есть такая?
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: Vena от Вторник, 22 Ноября, 2011, 05:23:00
Кстати, скрипты инициализации требуют пустой строки в конце fstab. Есть такая?
Есть, даже две :)
Цитировать
root@comp:~# ls -1 /etc/rcS.d/
total 4
-rw-r--r-- 1 root root 447 Jan  1  2011 README
lrwxrwxrwx 1 root root  24 Aug 23 10:15 S01mountkernfs.sh -> ../init.d/mountkernfs.sh
lrwxrwxrwx 1 root root  14 Aug 23 10:15 S02udev -> ../init.d/udev
lrwxrwxrwx 1 root root  26 Aug 23 10:15 S03mountdevsubfs.sh -> ../init.d/mountdevsubfs.sh
lrwxrwxrwx 1 root root  18 Aug 23 10:15 S04bootlogd -> ../init.d/bootlogd
lrwxrwxrwx 1 root root  19 Dec  4  2010 S05keymap.sh -> ../init.d/keymap.sh
lrwxrwxrwx 1 root root  24 Sep 16 14:02 S06keyboard-setup -> ../init.d/keyboard-setup
lrwxrwxrwx 1 root root  16 Sep 16 14:04 S07hdparm -> ../init.d/hdparm
lrwxrwxrwx 1 root root  21 Sep 16 14:02 S07hostname.sh -> ../init.d/hostname.sh
lrwxrwxrwx 1 root root  25 Sep 16 14:02 S07hwclockfirst.sh -> ../init.d/hwclockfirst.sh
lrwxrwxrwx 1 root root  22 Sep 16 14:02 S08checkroot.sh -> ../init.d/checkroot.sh
lrwxrwxrwx 1 root root  20 Sep 16 14:02 S09hwclock.sh -> ../init.d/hwclock.sh
lrwxrwxrwx 1 root root  24 Sep 16 14:02 S09ifupdown-clean -> ../init.d/ifupdown-clean
lrwxrwxrwx 1 root root  27 Sep 16 14:02 S09module-init-tools -> ../init.d/module-init-tools
lrwxrwxrwx 1 root root  17 Sep 16 14:02 S09mtab.sh -> ../init.d/mtab.sh
lrwxrwxrwx 1 root root  20 Sep 16 14:02 S10checkfs.sh -> ../init.d/checkfs.sh
lrwxrwxrwx 1 root root  18 Sep 16 14:02 S11ifupdown -> ../init.d/ifupdown
lrwxrwxrwx 1 root root  21 Sep 16 14:02 S11mountall.sh -> ../init.d/mountall.sh
lrwxrwxrwx 1 root root  31 Sep 16 14:02 S12mountall-bootclean.sh -> ../init.d/mountall-bootclean.sh
lrwxrwxrwx 1 root root  26 Sep 16 14:02 S13mountoverflowtmp -> ../init.d/mountoverflowtmp
lrwxrwxrwx 1 root root  20 Sep 16 14:02 S14networking -> ../init.d/networking
lrwxrwxrwx 1 root root  16 Sep 16 14:02 S14procps -> ../init.d/procps
lrwxrwxrwx 1 root root  19 Sep 16 14:02 S14udev-mtab -> ../init.d/udev-mtab
lrwxrwxrwx 1 root root  17 Sep 16 14:02 S14urandom -> ../init.d/urandom
lrwxrwxrwx 1 root root  20 Sep 16 14:02 S14x11-common -> ../init.d/x11-common
lrwxrwxrwx 1 root root  21 Sep 16 14:02 S15mountnfs.sh -> ../init.d/mountnfs.sh
lrwxrwxrwx 1 root root  31 Sep 16 14:02 S16mountnfs-bootclean.sh -> ../init.d/mountnfs-bootclean.sh
lrwxrwxrwx 1 root root  27 Sep 16 14:02 S17console-screen.sh -> ../init.d/console-screen.sh
lrwxrwxrwx 1 root root  23 Sep 16 14:02 S18console-setup -> ../init.d/console-setup
lrwxrwxrwx 1 root root  20 Sep 16 14:02 S19alsa-utils -> ../init.d/alsa-utils
lrwxrwxrwx 1 root root  21 Sep 16 14:02 S19bootmisc.sh -> ../init.d/bootmisc.sh
lrwxrwxrwx 1 root root  14 Sep 16 14:04 S19fuse -> ../init.d/fuse
lrwxrwxrwx 1 root root  24 Sep 16 14:02 S19screen-cleanup -> ../init.d/screen-cleanup
lrwxrwxrwx 1 root root  30 Sep 16 14:02 S20stop-bootlogd-single -> ../init.d/stop-bootlogd-single
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: vovka от Вторник, 22 Ноября, 2011, 06:05:46
Проверил на виртуалке с DHCP - всё равно работает блин! Всё-равно монтируется!
Зайдём с другой стороны и рассмотрим монтирование как процесс после поднятия интерфейса, но не в процессе загрузки.
Цитировать
root@comp:~# ls -l /etc/network/if-up.d/
итого 12
-rwxr-xr-x 1 root root 4523 Янв  1  2011 mountnfs
-rwxr-xr-x 1 root root  849 Дек 21  2009 openssh-server

Скрипт mountnfs монтирует не только NFS-шары, но и smbfs и cifs при поднятии интерфейса. Имеется ли этот скрипт в этом каталоге?
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: Vena от Вторник, 22 Ноября, 2011, 08:36:18
 ls -l /etc/network/if-up.d/
total 20
-rwxr-xr-x 1 root root 4523 Jan  1  2011 mountnfs
-rwxr-xr-x 1 root root 1089 Nov 23  2009 ntpdate
-rwxr-xr-x 1 root root  849 Dec 21  2009 openssh-server
-rwxr-xr-x 1 root root  641 Jul 27 16:55 samba

Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: vovka от Вторник, 22 Ноября, 2011, 12:00:54
В моих случаях ещё какой-то dns-резолвер регистрировался (на реальной и виртуальных машинах). Что это за процесс даже не знаю:
[   14.531423] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   21.502912] Registering the dns_resolver key type
Быть может из-за него него вся проблема. Вариантов, собственно, больше и нет... но факт остаётся фактом - строка с cifs в вашем случае не обрабатывается при загрузке системы.  ???
Предлагаю поставить Debian 6.0 на виртуалке и проэкспериментировать на ней. У меня (даже через nat в самом Virtualbox) монтирование проходит успешно на тээмповник в локалке.
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: Vena от Вторник, 22 Ноября, 2011, 16:34:51
Предлагаю поставить Debian 6.0 на виртуалке
в выходные попробую поставлю и проэкспериментирую.
Сегодня подключал к серверу монитор с клавой, загрузка идёт на легенде не быстро. В процессе загрузки небыло ни одной строки, содержащей cifs :(

Вообще, изначально, это был дебиан 5. Потом его обновил я до шестого. Может что-то не обновилось? Хотя матов небыло, всё прошло гладко.
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: vovka от Среда, 23 Ноября, 2011, 02:45:46
Сегодня подключал к серверу монитор с клавой, загрузка идёт на легенде не быстро. В процессе загрузки небыло ни одной строки, содержащей cifs :(
Правильно, максимум это сообщение "Mounting local filesystems" или что-то в этом роде.

Вообще, изначально, это был дебиан 5. Потом его обновил я до шестого.
С этого и нужно было начинать! Значит в мои эксперименты нужно внести поправку и поставить Debian 5.0, затем обновить до 6.0 и затем экспериментировать. У меня всё что есть из 6.0 - всё поставлено с нуля.
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: Vena от Среда, 23 Ноября, 2011, 03:29:07
на работе в VMware стоит debian 5. Монтирование, собако, проходит автоматом :( Нифига не пойму, что за ботва с моим серваком.
PS Когда там стоял не 6 а 5 debian - были те же проблемы с автомонтированием.
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: vovka от Среда, 23 Ноября, 2011, 04:29:38
Попробую на своей "легенде" на 100-мегабитном адаптере такое проделать - не исключён вариант что скрипт монтирования отрабатывает быстрее, чем поднимается сам адаптер.
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: Vena от Среда, 23 Ноября, 2011, 05:54:20
у меня на серваке гигабитный адаптер.
Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8169 Gigabit Ethernet (rev 10) Комп - селепон 433 384метра оперативы.
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: vovka от Среда, 23 Ноября, 2011, 08:47:03
Предварительный результаты - поднял свою Легенду с Lenny 5.0 . Там автомонтирование smbfs через fstab в процессе загрузки работает. Разобрался с процессом.
Смотрим на листинг скриптов:
Цитировать
legend:~# ls -1 /etc/rcS.d/
README
S01glibc.sh
S02hostname.sh
S02mountkernfs.sh
S03udev
S04mountdevsubfs.sh
S05bootlogd
S05keymap.sh
S06keyboard-setup
S08hwclockfirst.sh
S10checkroot.sh
S11hwclock.sh
S12mtab.sh
S18ifupdown-clean
S20module-init-tools
S30checkfs.sh
S30procps
S35mountall.sh
S36mountall-bootclean.sh
S36udev-mtab
S37mountoverflowtmp
S38pppd-dns
S39ifupdown # сеть запускается намного позже чем mountall.sh!
S40networking
S45mountnfs.sh # этот скрипт монтирует smbfs, но он работает только в паре с другим скриптом!
S46mountnfs-bootclean.sh
S48console-screen.sh
S49console-setup
S55bootmisc.sh
S55urandom
S61console-cyrillic
S70screen-cleanup
S70x11-common
S99stop-bootlogd-single

Этот другой скрипт - /etc/network/if-up.d/mountnfs - служит для асинхронного монтирования  NFS, а заодно и другие системки монтирует когда поднимается интерфейс. После инсталляции системы (было давно) этот скрипт я перенёс чтобы не мешался из каталога  /etc/network/if-up.d/ . Сегодня начал запускать, и без него smbfs (в строке fstab) действительно не монтируется при загрузке!
Сперва, при отмонтированной smbfs можно попробовать его выполнить:
# /etc/network/if-up.d/mountnfsесли  монтирование сработает - значит скрипт рабочий, но не запускается при старте интерфейса (ошибки кстати будут видны). Если монтирование не сработало - копаем в сторону скрипта.

Для сравнения - в посте файлы скриптов mountnfs с 5-ой и 6-ой версий Debian. Глобальных изменений нет:
[vovka@comp Desktop]$ diff mountnfs5.txt mountnfs6.txt
16c16
< do_start() {
---
> set_env() {
92a93
> }
93a95
> do_start() {
134a137,143
> set_env
> # Exit imediately and do not claim to wait for the last interface if
> # no network file systems are listed in /etc/fstab.
> if [ "$start_nfs" = "no" ] && [ ! "$NETFS" ] && [ ! "$NETDEV" ]; then
>   exit 0
> fi
>
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: Vena от Среда, 23 Ноября, 2011, 10:15:39
Сперва, при отмонтированной smbfs можно попробовать его выполнить:
# /etc/network/if-up.d/mountnfsесли  монтирование сработает - значит скрипт рабочий

 :-\
# /etc/network/if-up.d/mountnfs
 before doing NFS mountsaiting for interface lo
 before doing NFS mountsaiting for interface eth0
:( нету монтирования
в df -h пусто
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: vovka от Среда, 23 Ноября, 2011, 12:21:58
Цитировать
before doing NFS mountsaiting for interface lo
Это сообщение выводится если только в /etc/network/run/ifstate нет рабочего eth* -интерфейса в списке. При рабочей машине, что находится в этом файлике?
У меня так:
# cat /etc/network/run/ifstate
lo=lo
eth0=eth0
eth1=eth1
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: Vena от Среда, 23 Ноября, 2011, 16:50:12
lo=lo                                                                                                                             
eth0=eth0   
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: vovka от Четверг, 24 Ноября, 2011, 04:38:45
Внимательнейшим образом изучил эту строку:
before doing NFS mountsaiting for interface eth0
Значит так, часть строки,а именно: "waiting for interface $i before doing NFS mounts" (вместо $i выводится имя интерфейса) выводится через скрипт /etc/network/if-up.d/mountnfs (в Debian 6) именно так, как написано.
Почему в сообщении сначало идёт "before doing...", затем, w затирается, и после идёт "aiting for interface eth0"?
В скриптах в каталоге /etc, есть только скрипт один скрипт, в котором такое сообщение - mountnfs. Другие скрипты не могут формировать такой вывод. Ошибка похоже на синтаксическую, в скрипте  mountnfs или в обрабатываемых данных этим скриптом, иначе бы 2 части одного сообщения не поменялись местами.
Участок кода, где выводится сообщение:
exit_unless_last_interface() {
    grep "^[:space:]*auto" /etc/network/interfaces  | \
sed -e 's/[ \t]*auto[ \t]*//;s/[ \t]*$//;s/[ \t]/\n/g' | \
while read i; do
if [ `grep -c $i /etc/network/run/ifstate` -eq "0" ]; then
    msg="if-up.d/mountnfs[$IFACE]: waiting for interface $i before doing NFS mounts"
    log_warning_msg "$msg"
    # Can not pass this as a variable because of the while subshell
    mkdir /var/run/network/mountnfs_earlyexit 2> /dev/null
fi
    done
    if [ -d /var/run/network/mountnfs_earlyexit ]; then
rmdir /var/run/network/mountnfs_earlyexit 2>/dev/null
exit 0
    fi
}
Перед этим, идёт парсинг файла /etc/network/interfaces на предмет строк с auto - именно эти интерфейсы должны стартовать автоматически при старте системы. Без allow-hotplug, кстати, интерфейс конфигурироваться не будут если в процессе работы выткнуть сетевой шнур, а затем снова его вставить. Свой файл interfaces (debian 6) отправил через личку. Если синтаксис interfaces нарушен, парсинг не сработает. Также он не сработает, если grep или sed не выполнились как надо - такое бывает между версиями Debian - разработчики иногда меняют эти утилиты, но по каким-то причинам символическая ссылка на старую версию не создалась.
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: vovka от Четверг, 24 Ноября, 2011, 14:03:44
Посмотрел на файл network - в теории, он должен нормально обрабатываться. Остаётся только 2 варианта:
1) создать скрипт монтирования в /etc/rc.local или в /etc/network/if-up.d , который бы выполнил функцию mountnfs ещё раз
2) брать и отлаживать mountnfs
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: Vena от Четверг, 24 Ноября, 2011, 14:10:40
2) брать и отлаживать mountnfs
попробовать чужой, например, вместо своего подменить? Что там отлаживать?
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: vovka от Четверг, 24 Ноября, 2011, 14:16:01
попробовать чужой, например, вместо своего подменить? Что там отлаживать?
Пробуйте  ;) Как уже говорил, проблема может быть в скрипте, в переменных (в том числе и внешних), во вспомогательных программах типа sed и grep. В этой ветке, в одном из постов выложены две версии скриптов. Их надо переименовать в канонические имя и дать права на исполнение. В отличии от виндовс, в *nix можно отладить практически всё.
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: Vena от Четверг, 24 Ноября, 2011, 14:34:47
В отличии от виндовс, в *nix можно отладить практически всё.
... и даже юзера ;)
Название: Re: Монтирование сетевого ресурса с помощью fstab
Отправлено: Vena от Воскресенье, 11 Декабря, 2011, 17:48:14
Интересное наблюдение.
Начал собирать новый сервер, старый не вытягивает ростущие мои потребности :)
Для эксперимента поставил ubuntu 10.04 . По началу автомонтирование тоже не срабатывало. Потом я в fstab в строке сетевого монтирования заменил разделение табуляцией на несколько пробелов (разделение групп параметров). Автомонтирование стало срабатывать. На старом сервере с Дебианом 6 этот номер не прошёл :(