Автор Тема: Монтирование samba при старте на самом сервере - как?  (Прочитано 1521 раз)

Оффлайн flint1975

  • Участник
  • *
  • Сообщений: 1 443
Задача такая: Нужен доступ к каталогу с файловыми базами 1С в гетерогенной среде!
Решено частично следующим образом: каталог /srv/share/.1cdata расшарен с помощью samba в ресурс //serv/1cdata , затем самба ресурс монтируется от имени одного пользователя в каталог /srv/share/1cdata
собственно, при этом локальные терминальные пользователи получают доступ через путь /srv/share/1cdata
Нелокальные линукс пользователи монтируют самба ресурс аналогично серверу, а виндовые как сетевой диск и все это от имени одного  и того же пользователя.
Эти мегакостыли были применены из-за того, что в остальных случаях - нарушались права доступа к временным файлам в каталоге с базой 1с, причем acl помогало мало, часть временных файлов создавалось от имени пользователя, часть от имени серверного процесса 1с и неизменно с правами на запись только владельца.
Дополнительно, при одновременном доступе к файлу базы через самбу и напрямую в каталог файловой системы - происходил крах базы,  из-за рассинхронизации блокировок.
Вопрос собственно в том, как смонтировать самба ресурс, расположенный на том же самом физическом сервере при загрузке системы?
Сейчас есть строка fstab, но приходится каждый раз при перезагрузке - вручную выполнять mount -a

Оффлайн ASte

  • Мастер
  • ***
  • Сообщений: 1 566
Полагаю должно помочь, если прописать команду монтирования  в /etc/rc.d/rc.local

Оффлайн flint1975

  • Участник
  • *
  • Сообщений: 1 443
Я тоже так полагал, но почему-то не выполняется скрипт! Пока не разбирался почему. Система инициализации - sysV/

Оффлайн ASte

  • Мастер
  • ***
  • Сообщений: 1 566
не вызывается или возникает ошибка во время выполнения?
в логи что-нибудь при этом пишется?

Оффлайн igorigor76

  • Участник
  • *
  • Сообщений: 655
Попробовать задержу поставить перед выполнением команды монтирования.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Вопрос собственно в том, как смонтировать самба ресурс, расположенный на том же самом физическом сервере при загрузке системы?

Система инициализации - sysV/

Монтировать надо не через fstab, а через сервис.
И сервис должен быть на очереди 92-ым и выше, т.е. монтирование должно происходить после того как поднимется самба-сервер:
# grep chkco /mnt/sda1/etc/init.d/{s,n}mb
/mnt/sda1/etc/init.d/smb:# chkconfig: - 91 35
/mnt/sda1/etc/init.d/nmb:# chkconfig: - 91 35

Или через fstab, но с noauto и с последующим монтированием через сервис:
Т.е. сначала сервер, потом монтирование шар.

Сама же последовательность дефолтом происходит так:
# sed -n '5451p; 5512p' /mnt/sda1/var/log/messages | cut -f 1-4,6- -d ' '
May  3 20:01:37 rc.sysinit: Mounting local filesystems: succeeded
May  3 20:01:42 smb: smbd startup succeeded
И после неё только ручками: сервер-то не поднялся ещё.

За основу можно взять тут:
Корректное размонтирование самба-ресурсов на разгрузке или останове системы sysv
С поправкой: lock-файл для монтирования создавать необязательно - он не нужен.
В принципе их можно и совместить. Тот сервис нужен только для того, чтобы отучить шибко грамотного NM устраивать грохот в системе на разгрузке. Но при etcnet тот сервис не мешает.

Ну вот так как-то...
Плохо что в альтах нет какого-нибудь скелейтона сервисов sysv, - это упростило бы написание кастомного сервиса на коленках с нуля в первый раз.
« Последнее редактирование: 20.05.2015 15:42:20 от Speccyfighter »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Полагаю должно помочь, если прописать команду монтирования  в /etc/rc.d/rc.local
Я тоже так полагал, но почему-то не выполняется скрипт! Пока не разбирался почему. Система инициализации - sysV/

А он исполняемый?
# grep -rHi 'rc.local' /etc/rc.d/*
/etc/rc.d/init.d/local:ExecIfExecutable /etc/rc.d/rc.local

Скрипта local не может не быть, - он входит в пакет:
# rpm -qf /etc/init.d/local
startup-0.9.8.38-alt1


Да как бы должно работать:
# cat /etc/rc.d/rc.local
#!/bin/bash

echo "It's me, rc.local. I'm doing it!" > /root/rc.local.msg
# ll /etc/rc.d/rc.local
-rwxr-xr-x 1 root root 82 май 19 22:46 /etc/rc.d/rc.local
# cat /root/rc.local.msg
It's me, rc.local. I'm doing it!
# ll /root/rc.local.msg
-rw-r--r-- 1 root root 41 май 19 22:49 /root/rc.local.msg
# cat /etc/rc.d/init.d/local | head -n 3
#!/bin/sh
#
# This script should be executed after all the other init scripts.

Какой из вариантов удобнее, этот или выше, да шут его знает...
« Последнее редактирование: 20.05.2015 10:28:04 от Speccyfighter »

Оффлайн flint1975

  • Участник
  • *
  • Сообщений: 1 443
Всем спасибо, в принципе у меня все было верно, только не монтировалось из rc.local, пока не вставил туда sleep 60.
Не понимаю почему самба сервер не доступен сразу после инициализации, но задержка потребовалась.
Интересно было бы возложить обязанность монтировать самба ресурс, на сам самба сервер, чтобы не городить огород !!!
Хотя решение со своей службой - тоже ничего.

Онлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
А что мешает поручить это systemd? Через comment=systemd.automount
Автомонтирование по запросу

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
А что мешает поручить это systemd? Через comment=systemd.automount
Автомонтирование по запросу

Наверное это:

Система инициализации - sysV/

Онлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Система инициализации - sysV/
А опция _netdev  уже не работает?

ну или классический autofs.