SAMBA для 1С

24.12.21

База данных - Администрирование СУБД

Представлен необходимый минимум настройки SAMBA для работы файловых баз 1С через общий ресурс.

Данную статью можно рассматривать как дополнение к публикации: Xubuntu 20.04 для бухгалтера 1С.

Цель: настроить сервер SAMBA на UBUNTU для файловых баз 1С.

 

Задачи:

1. установить SAMBA,

2. настроить SAMBA для работы баз 1С,

3. протестировать и сравнить работу 1С в Windows и Linux с общим ресурсом на Samba и на Windows.

 

1. Установка SAMBA

Samba - это пакет программ, которые предоставляют общий доступ к файлам и принтерам сетей Microsoft по протоколу SMB/CIFS. Для его установки необходимо выполнить следующую команду:

sudo apt install samba

 

 

На вопрос «Хотите продолжить? [Д/н]» нажимаем Д или Y .

Дальше продолжается скачивание и установка всех необходимых пакетов программ.

В итоге должна быть установлена клиентская и серверная части Samba.

Если не устанавлен Midnight Commander , то

sudo apt install mc

В Ubuntu следует изменить лимит на количество одновременно открытых файлов, в Linux это 1024, а в Windows - 16384. Для этого в файле /etc/security/limits.conf

 

 

нужно добавить две строки в конец:

* - nofile 16384

root - nofile 16384

 

 

После нажатия [Esc], сохраняем файл:

 

 

Файловая система должна быть ext4, btrfs или xfs. Будем использовать по умолчанию в Ubuntu - ext4 с размером блока не менее 4096 байт (4кб), а лучше 8192 байта для платформ 1С выше 8.3.8.

Чтобы просмотреть размер блока для файловой системы ext4 раздела /home нужно выполнить команду:

stat -f /home

Получим следующий результат, который показывает размер блока 4096 байт:

 

 

Перезагружаемся:

sudo reboot

 

2. Настройка анонимного SAMBA для работы баз 1С

Чтобы настроить нужно отредактировать файл /etc/samba/smb.conf.

 

 

Для нормальной работы сервера SAMBA не стоить менять большинство дефолтных настроек в этом файле. Изменим лишь небольшую часть.

Есть два вида комментариев:

если используется символ # - то указанное значение применяется по умолчанию,

символ ; обозначает предлагаемый вариант настройки.

smb.conf имеет три зарезервированные секции:

[global] - определяет опции, которые распространяются на все остальные секции, если в них явно не указано обратное.

[homes] - предоставляет удаленным пользователям доступ к своим (и только своим) домашним директориям. Если пользователи подключаются к сетевому ресурсу (адрес smb://server/username/ или \\server\username), то будут подключены к персональным домашним директориям, закрепленным как "домашний каталог" за пользователем, под учетной записью которого они зарегистрировались на samba-сервере. Чтобы удаленный пользователь мог авторизоваться на samba-сервере, необходимо добавить соответствующего пользователя в систему (useradd) и создать samba-пароль для этого пользователя (smbpasswd), который может отличаться от системного (passwd).

[printers] - отвечает за определение опций доступа к принтеру по сети.

Остальные секции, например [1CBases] будут соответствовать общим папкам, т.е. клиент на данном компьютере увидит общую папку 1CBases с правами, описанными в данной секции.

Начнем с глобальной секции [global], параметры которой применяются для всех сервисов.

Сначала следует указать версии протокола smb, с которыми будут работать Samba-сервер (Windows7 - Windows10) и клиенты:

sever min protocol = SMB2

server max protocol = SMB3

client min protocol = SMB2

client max protocol = SMB3

Задать имя рабочей группы Windows, по умолчанию WORKGROUP.

workgroup = WORKGROUP

 

 

Следующая опция определяет интерфейсы или подсети, с которыми будет работать Samba. Допускается смешанная запись либо можно указать только интерфейсы:

 

 

Само по себе указание интерфейсов не ограничивает Samba, для ограничений нужно включить следующую опцию:

 

 

Не будем менять дефолтные настройки.

Следующая опция

server role = standalone server

обозначает простой файловый сервер, не требующий подключения к домену.

 

 

Такая опция

map to guest = bad user

определяет способ гостевого доступа. При указанном значении гостем будет любой пользователь, который отсутствует в базе Samba. Также могут использоваться значения never - не использовать гостевой доступ и bad password - гостем будет считаться в том числе и существующий пользователь, если он неправильно введет пароль. Данное значение использовать не рекомендуют, так как при ошибке в пароле пользователь все равно получит доступ с гостевыми правами.

Чтобы создать общий ресурс, доступ к которому может иметь любой пользователь, нужно добавить в конец файла /etc/samba/smb.conf следующие строки:

[1CBases]

;locking = no

;oplocks = false

;level2 oplocks = false

comment = Shared for all

path = /home/user0/1CBases

read only = no

guest ok = yes

force create mode = 0777

force directory mode = 0777

 

 

 

 

 

 

 

 

В квадратных скобках имя ресурса, все что ниже скобок - секции этого ресурса.

locking = no - сервер не будет удовлетворять запросы блокировок от клиентов: все запросы на блокирование и разблокирование будут казаться клиенту прошедшими успешно;

oplocks = false - не генерировать блокировки oplocks (гибкие блокировки) в ответ на запрос открытия файла в открытой для доступа директории, отключает беспощадную буферизацию файлов на клиентах и повышает надежность, но снижает скорость;

level2 oplocks = false - рекомендуется, чтобы этот параметр был выключен при выключенном предыдущем параметре;

comment - описание ресурса, необязательный параметр;

path - путь к директории;

read only - режим только чтения, указываем no;

guest ok - разрешен ли гостевой доступ, указываем yes;

force create mode — чтение и запуск файлов разрешены без учета прав доступа DOS;

force directory mode — то же самое для папок.

Locking, oplocks, level2 oplocks - закомментированы, чтобы быстрее работала 1С, если будут проблемы с блокировками при многопользовательской работе, то нужно убрать комментарии.

Создадим саму директорию:

mkdir /home/user0/1CBases

установим на нее необходимые права - для гостевого ресурса это 777:

chmod 777 /home/user0/1CBases

Если нужна "расшаренная" папка на отдельном диске, то следует примонтировать этот диск, например, к папке 1CBases. В большинстве случаев достаточно упрощенной команды:

sudo mount /dev/sda1 /home/user0/1CBases

 

 

Посмотреть названия дисков и uuid для разделов можно так:

blkid

 

 

Далее необходимо установить права для гостевого доступа:

chmod 777 -R /home/user0/1CBases

 

 

Если в дальнейшем 1С не будет запускаться с базой из этой папки, то нужно будет отредактировать файл /etc/fstab для автомонтирования диска к папке /home/user0/1CBases. В опциях монтирования нужно указать user - что разрешает монтирование от лица обычного пользователя:

 

 

По умолчанию (если не указано иное) Samba для записи на общий ресурс использует 0744 для файлов и 0755 для директорий. Т.е. полный доступ остается только у владельца файла, остальные получают права только на чтение. Чтобы исправить это следует явно указать режим для новых файлов и папок, для этого используются строки:

create mode = 0777

directory mode = 0777

В этом случае итоговые права с учетом отображения прав доступа DOS в разрешения UNIX имеют особенности, в частности права на файлы устанавливаются как 766 или rwx-rw-rw. Поэтому запустить исполняемый файл сможет только тот, кто является его владельцем. Остальные получат сообщение об отсутствии прав доступа:

 

 

На неисполняемые файлы это никак не влияет. Если необходимо разрешить запуск, то вместо create mode следует использовать опцию force create mode, которая будет устанавливать разрешения без учета прав доступа DOS:

force create mode = 0777

Для полного запрета запускать файлы с общего ресурса необходимо использовать:

create mode = 0666

Данная опция полностью снимет права на выполнение для всех, но оставит полный доступ к исполняемым файлам.

Для тестирования настроек нужно набрать в командной строке, находясь в директории /etc/samba:

testparm

Если все нормально, то будет выдано ok.

Далее следует перезагрузить Samba-сервер:

sudo service smbd restart

 

Чтобы доступ к общей папке был по имени узла и в дальнейшем не было замедлений работы с файлами из общей папки, необходимо в файл на Windows 7 (для другой версии Windows путь может отличаться)

c:\Windows\System32\drivers\etc\hosts

добавить строчку:

192.168.254.253          lubx64

где lubx64 — сетевое имя нашего файлового сервера.

В linux файл находится обычно в /etc/hosts. Там добавляется строка такого же формата, как и в Windows.

Для ускорения работы не должно быть файервола и антивируса на Samba-сервере.

Перед началом работы желательно протестировать сеть с сервером Samba. В Windows нужно выполнить команду в терминале:

ping lubx64 -l 4096

а в linux:

ping lubx64 -S 4096

В ответ не должно быть получено что-то вроде:

Request time out

В итоге имеем настроенный Samba-сервер на компьютере lubx64 без авторизации с доступной всем для чтения и записи в сети общей папкой 1CBases.

 

3. Тестирование работы файловых баз 1С на Samba

Для проверки работы баз 1С в файловом режиме на Samba-сервере используем тест Гилёва для платформы 8.3 http://www.gilev.ru/1c/tpc/GILV_TPC_G1C_83.dt.

Характеристики Samba-сервера:

процессор — Intel Core i5 2700 МГц, оперативка — 16 Gb, HDD — WD800AAJS 80Gb (2007 год выпуска), сеть — Realtek 1Гбит/с, ОС — Lubuntu 20.04 x64.

Характеристики клиента:

VirtualBox6.0, процессор — Intel Pentium 4415U 2300 МГц, оперативка — 3 Gb, виртуальный SSD — WD Blue 3D NAND 1 Tb, сеть — Intel Pro/1000 MT 1Гбит/с, ОС — Windows 7 x32.

Тест с локальной базой на клиенте показал результат 34.01, что хорошо:

 

 

Тест с базой на Samba-сервере выдал результат 30.86, что на 3.15 меньше предыдущего, что тоже хорошо:

 

 

Далее выполним тест на хостовой машине-клиенте Linux Ubuntu 16.04 с характеристиками:

процессор — Intel Pentium 4415U 2300 МГц, оперативка — 8 Gb, виртуальный SSD — WD Blue 3D NAND 1 Tb, сеть — Realtek 1Гбит/с, ОС — Ubuntu 16.04 x64.

Тест с локальной базой на клиенте linux показал результат 45.45, что ближе к «замечательно»:

 

 

Для подключения сетевой папки Samba-сервера на linux-клиент надо установить пакет cifs-utils:

sudo apt-get install cifs-utils

и выполнить команду подключения:

sudo mount -t cifs //lubx64/1CBases /home/user0/Samba -o username=guest,password=,iocharset=utf8,file_mode=0777,dir_mode=0777

 

 

Таким образом подключается папка /1CBases с сервера lubx64 в каталог пользователя локальной системы /home/user0/Samba.

При использовании данной команды без явного указания протокола используется версия протокола smb1, если в smb.conf указано

sever min protocol = NT1 и client min protocol = NT1 .

Естественно ip-адрес для lubx64 должен быть прописан в /etc/hosts.

В 1С примонтированную "расшаренную" папку подключаем стандартным образом:

 

 

Тест с сетевой базой на Samba-сервере выдал результат 4.51, что почти в 10 раз хуже предыдущего и это недопустимо — работа с типовыми конфигурациями, например, Бухгалтерия 3.0 будет мучительной.

 

 

Такие же неутешительные результаты показала работа с «расшаренной» на Windows папкой из клиента Linux. При этом скорости копирования файлов с клиента на сервер и обратно находятся в пределах 1Гбит/с для гигабитной сетки, т. е. работа с файлами на сетевом ресурсе на «отлично». Только 1С «тормозит».

Значит причина не в самом Samba-сервере, с которым отлично работает 1С из Windows. Причиной, на мой взгляд, является пакет cifs-utils, выполняющий подключение к «расшаренным» Windows-ресурсам, и сама платформа 1С.

Действительно, при подключении с использованием cifs-utils нужно явно указывать версию протокола SMB, желательно третью версию. Например, SMB3:

sudo mount -t cifs //comp1/1CBases /home/user0/Samba -o username=guest,password=,iocharset=utf8,file_mode=0777,dir_mode=0777,vers=3.0

 

 

Монтировать можно и проще, но лучше использовать предыдущую команду для избежания ограничений прав доступа:

sudo mount.cifs //lubx64/1CBases /home/user0/Samba -o guest,vers=3.0

 

 

 

Для размонтировния следует набрать:

sudo umount /home/user0/Samba

 

 

Результат теста Гилева при использовании smb3 - 44.64 ("замечательно"):

 

 

В итоге получили отличную работу 1С в файловом режиме из Windows 7 с базами на Samba-сервере (Lubuntu 20.04) и «расшаренными» папками на Windows 7, но «плохую с минусом» из Linux с теми же сетевыми ресурсами по протоколу smb1, но отличную по протоколу smb3.

 

Общие выводы

В linux общий доступ к сетевой папке организуется с помощью пакета samba и настройкой конфигурационного файла smb.conf.

Чтобы иметь доступ по имени сетевого узла, необходимо отредактировать файл hosts как в windows-клиенте, так и в linux-клиенте.

Работа 1С в linux-клиенте (со стандартным пакетом cifs-utils) с файловой базой на общем ресурсе «почти неудовлетворительная» по протоколу smb1, но «замечательная» на windows-клиенте и по протоколу smb3.

SAMBA cifs-utils linux windows установка настройка тестирование.

См. также

Администрирование СУБД Системный администратор Платформа 1С v8.3 Бесплатно (free)

Пользовался ранее https://infostart.ru/1c/articles/1120161/#, но она устарела, т.к. службы запускаются через systemctl, да и сами службы слегка изменились. Возможно, где-то на ИТС уже есть нужная инструкция, но мне не попалась.

15.11.2024    302    Baser    2    

1

HighLoad оптимизация Администрирование СУБД Системный администратор Программист Платформа 1С v8.3 Россия Бесплатно (free)

Мы исследуем проблему долгого выполнения запросов PostgreSQL при использовании конструкции VALUES: когда она возникает, как на нее можно повлиять, а главное, почему ее продуманная отработка важна для более быстрого функционирования решений на базе 1С

12.11.2024    831    Tantor    19    

14

HighLoad оптимизация Администрирование СУБД Механизмы платформы 1С Программист Платформа 1С v8.3 ИТ-компания Россия Бесплатно (free)

В данной статье мы рассмотрим, как работает механизм временных таблиц на postgres на платформе 8.3.23 и что изменилось в нем при добавлении новых возможностей в платформе 8.3.25. А также на примере покажу, как понимание работы платформы позволяет оптимизировать СУБД для работы с 1С.

29.10.2024    3148    Tantor    38    

34

Администрирование СУБД Системный администратор Программист Бесплатно (free)

CDC - очень мощный механизм, который можно использовать во многих сценариях, возможность развернуть его в Docker показывает простоту и лёгкость данной технологии.

08.10.2024    734    AlexSvoykin    1    

7

Администрирование СУБД Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Анализ и решение ошибок СУБД. Во время реиндексации базы Ошибка СУБД: Microsoft SQL Server Native Client 11.0: Не удалось найти объект "ИмяБазы.dbo._RefSInf21806", так как он не существует, или отсутствуют разрешения. Во время проверки целостности Ошибка СУБД: Microsoft SQL Server Native Client 11.0: Недопустимое имя объекта "dbo._RefSInf21806".

19.09.2024    4350    Xershi    10    

17

HighLoad оптимизация Администрирование СУБД Архивирование (backup) Системный администратор Программист Платформа 1С v8.3 Бесплатно (free)

Бэкап в Postgres состоит из набора граблей, которые нужно обойти для успешного восстановления. Они заложены в самых неожиданных местах от предмета резервного копирования (база или кластер) до структуры каталогов. Один неверный шаг и восстановление будет невозможным. Почему нельзя было сделать проще, как в MS SQL или Oracle? Почему бэкап в Postgres оставляет впечатление чьей-то лабораторной работы? Статья адресована прежде всего специалистам 1С, избалованным комфортом в MS SQL, в суровых буднях импортозамещения на Postgres.

13.08.2024    2972    1CUnlimited    9    

4
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. dvsidelnikov 73 25.12.21 10:17 Сейчас в теме
Спасибо за статью. Познавательно.
Думаю будет не лишним упомянуть, что одновременная работа с файловой базой линукс и windows клиента 1С невозможна. По крайней мере так было, когда я экспериментировал на этом поприще, года 2 назад.
P.S. Со статьёй ознакомился бегло, мог и пропустить что-то.
2. compil7 81 25.12.21 22:19 Сейчас в теме
(1)Тестировал: 2 клиента из ubuntu 20.04 и один клиент из windows 7 на шару ubuntu 20.04, конфа бух. 30 - работает, но производительность гораздо ниже (2 - 4 по тесту Гилева), чем с использованием web-сервера или автономного сервера. Необходимо, чтобы у клиентов версии samba были одинаковы. Работать через шару рекомендую в крайнем (очень запущенном) случае или если только один клиент. Лучше пользоваться всеми новыми возможностями платформы...
dvsidelnikov; +1 Ответить
3. dvsidelnikov 73 26.12.21 09:07 Сейчас в теме
(2) правильно ли я вас понял: одновременно/параллельно с одной файловой базой может работать и Linux и Windows клиент 1С? Давно вы проводили этот тест? Может, версию платформы получится вспомнить?
4. compil7 81 28.12.21 09:41 Сейчас в теме
(3) 8.3.17
SAMBA сервер - чистый Ubuntu 20.04
Клиент Windows 7 x32 (smb 2.1)
Клиент Ubuntu 16.04 (smb2.1)
Клиент Xubuntu 20.04 (smb2.1)
dvsidelnikov; +1 Ответить
5. gigapevt 25 29.12.21 13:12 Сейчас в теме
А не проще ли было поставить Апач и опубликовать на него базы ? и не было бы всех этих танцев с бубном. И производительность будет выше чем у Вас на скринах.
7. Baser 7 11.07.24 06:37 Сейчас в теме
(5) Конфигуратор тоже надо как-то запускать. У мну сервак без графической оболочки запущен на виртуалке. Конфигуратор приходится запускать из основной машины, цепляясь к виртуальному серверу на этой же машине
8. gigapevt 25 11.07.24 08:31 Сейчас в теме
(7) Не вижу проблемы добавить пару строк - для запуска через вэб и запуска конфигуратора.
9. Baser 7 11.07.24 11:05 Сейчас в теме
(8) я в принципе обошёлся монтированием sshfs (чтобы конфигуратор зацепился).. подскажите свои пару строк для конфигуратора через веб, я не нашёл решения, к сожалению
10. gigapevt 25 11.07.24 15:33 Сейчас в теме
(9) Конфигуратор через WEB - такого не бывает (он же ТОООЛСТЫЙ )))), хранилища через Апач - это вещь, сам пользуюсь постоянно. Через sshfs - есть подводные камни при монтировании с правами и прочей шнягой, буэээ, мне лень. В идеале - настраиваешь VPN до маршрутизатора или прям на сервер 1С - кому как проще заморочиться или зависит от политики партии сисадмина. Я чаще настраиваю VPS сервера + L2TP IPsec (раньше был WireGuard - быстрый удобный, простой в настройке, но его рубят направо и на лево - ушел на L2TP IPsec - не идеальный, но более универсальный, легко и на линукс и на винде настраивается). Когда много клиентов и серверов, нужен более гибкий инструмент с маршрутизацией и VPN здесь рулит.
11. Baser 7 11.07.24 17:00 Сейчас в теме
(10) так вы не ответили: как имея файловую базу на линуксе подключиться конфигуратором?
Для чего мне впн в локалке?
"Пару строк ... для конфигуратора" - это вы впн имели в виду?
12. gigapevt 25 12.07.24 09:51 Сейчас в теме
(11) В локалке???
1. Если база расположена на Linux, а клиент Windows - Samba
2. Если база расположена на Linux и клиент Linux - однозначно NFS.
3. В идеале - клиент сервер. Это и надежнее и практичнее, даже если просто начать с мини сервера на 5 подключений.
13. compil7 81 16.07.24 21:23 Сейчас в теме
(12) По протоколу NFS 1С не работает (всегда было так, вроде бы и в новых платформах NFS не поддерживается).
Другими словами:
если база расположена на Linux и клиент Linux - однозначно тоже Samba.
15. gigapevt 25 17.07.24 06:21 Сейчас в теме
(13) С файловыми базами последний раз работал году в 2006 (те что крутятся под виндой), в то время ещё не было нативного клиента под Linux и мало кто заморачивался твоей проблемой.
Мы тоже фигней маялись и запускали клиентов на Wine (это точно помню). Кривовато всё это работало, но работало. Зато всё стало интереснее, когда появилась первая бэта 8 под тонкий клиент. Намутили где-то мануал к ней, сами разбирались в коде. Документации толковой не было, собирали по крупицам, писали на на тонком клиенте, пусть и не официальном, зато он решал просто кучу различных задач, о которых на толстом и не мечтали. Вот только у нас всегда был "клиент-серверный" вариант. А вот сервер под Linux существует уже очень давно.
Поэтому даже работая с Linux много и долго, только года 4 назад запускал там файловый вариант (клиент сам попросил и согласовал именно его) по вот такой схеме:
Сервер VPS - Debian 10 (LXDE)+VPN+Xrdp+Samba(удаленный рабочий стол для работы с конфигуратором) + Apache (на нём были опубликованы ИМЕННО ФАЙЛОВЫЕ базы) и всё это хозяйство естественно смотрело в тырнет.
Что я могу сказать - работает до сих пор и очень даже хорошо. Так что с файловыми базами у меня нет опыта работы.

Почитал на досуге партнёрку 1С и документацию в добавок. Действительно по NSF есть куча проблем.
А вот что в официальной документации написано:

Глава 1. Требования к аппаратуре и программному обеспечению
Совместная работа с файловой информационной базой по сети поддерживается только для сетевых ресурсов, доступ к которым осуществляется по протоколу SMB (CIFS). Такие ресурсы могут располагаться как на компьютерах с ОС Windows, так и на компьютерах с ОС Linux.

Короче... вот такие вот пироги )) А документации нужно всё таки доверять. Так что ты прав... только SAMBA.
14. compil7 81 16.07.24 21:26 Сейчас в теме
(10) Идеален OpenVPN ещё с 2001 года.
6. compil7 81 29.12.21 20:18 Сейчас в теме
(5) Эта статья - как дополнение (вариант реализации) к моей статье: Xubuntu для бухгалтера 1С. , где и рассматривается настройка 1С через WEB.
Оставьте свое сообщение