При переносе информационной базы 1С с файлового варианта работы на клиент-серверную архитектуру (Linux + SQL) часто возникает задача настройки томов для хранения присоединенных файлов на диске. Хранение файлов вне базы данных позволяет существенно уменьшить ее объем, ускорить создание резервных копий и снизить нагрузку на СУБД. Давайте подробно рассмотрим, как правильно организовать такие тома, примонтировать сетевые папки и настроить корректные права доступа. Для оценки объема хранимых файлов и структуры таблиц можно использовать инструмент для анализа распределения дискового пространства в базе 1С.
Часто в корпоративной сети уже существует выделенный файловый сервер на базе Windows, и администраторы хотят использовать его для хранения файлов 1С. Поскольку сервер 1С работает на Linux, нам необходимо "объяснить" системе, как получить доступ к Windows-шаре. Для этого мы смонтируем сетевую папку в локальную директорию Linux.
Посмотрим на пример консольной команды для ручного монтирования такой папки:
mount -t cifs //192.168.0.4/1CBase/FilesWorkingBase /mnt -o user=admin1c,dir_mode=0777,file_mode=0777,uid=995,gid=1002
Проанализируем параметры, которые мы передаем в команду:
-t cifs — указывает тип файловой системы (Common Internet File System), используемой для доступа к общим ресурсам Windows.//192.168.0.4/... — сетевой путь до расшаренной папки./mnt — локальная точка монтирования (каталог на сервере Linux, куда будет подключена папка).user=admin1c — имя пользователя Windows, от имени которого осуществляется подключение.dir_mode и file_mode — права доступа по умолчанию к директориям и файлам.uid и gid — идентификаторы пользователя и группы в Linux, которые станут владельцами примонтированных файлов. Крайне важно указать здесь реквизиты пользователя службы 1С (обычно это usr1cv8 и группа grp1cv8).После ввода этой команды система предложит ввести пароль от учетной записи Windows.
Чтобы после перезагрузки сервера Linux тома не отваливались и файлы 1С оставались доступны, пропишем параметры монтирования в конфигурационный файл /etc/fstab. Разберем по шагам, какую строку туда нужно добавить:
//192.168.0.4/1CBase/FilesWorkingBase /mnt cifs dir_mode=0777,file_mode=0777,uid=995,gid=1002,credentials=/home/admin1c/wincred,iocharset=utf8,nofail,_netdev,vers=3.0 0 0 0 0
Особое внимание уделим параметру credentials=/home/admin1c/wincred. Хранить пароль открытым текстом в fstab небезопасно. Поэтому мы создаем отдельный скрытый текстовый файл (например, wincred), в котором указываем логин и пароль в следующем формате:
username=admin1c
password=ВашСекретныйПароль
domain=ИмяДоменаЕслиЕсть
Для этого файла необходимо ограничить права доступа, чтобы его мог прочитать только суперпользователь.
В среде системных администраторов использование Windows-шар (SMB/CIFS) для высоконагруженных серверов Linux часто критикуется. Выясним причину такого отношения и проанализируем ситуацию.
Использование протокола CIFS/SMB часто сопровождается следующими проблемами:
Альтернативные, более надежные решения:
Если вы перешли на Linux, используйте "нативные" подходы. Более надежным сетевым решением является использование протокола NFS (Network File System). Однако идеальный вариант — выделить под хранилище отдельный жесткий диск (или подключить LUN по протоколу iSCSI), отформатировать его в родную для Linux файловую систему (например, ext4 или xfs) и примонтировать локально. Это обеспечит максимальную скорость и стабильность работы сервера 1С.
Рассмотрим подробнее вопрос безопасности. В примерах выше использовались параметры dir_mode=0777 и file_mode=0777. С точки зрения администрирования это грубая ошибка, так как права 0777 разрешают чтение, запись и удаление файлов абсолютно всем пользователям операционной системы.
Правильнее монтировать каталог с более строгими правами, например, 0700 или 0750. При этом владельцем директории должен быть жестко закреплен пользователь, от имени которого запускается служба сервера 1С (как правило, это usr1cv8). Это гарантирует, что сторонние процессы и пользователи не смогут вмешаться в работу файлового хранилища.
Когда сетевая папка или диск успешно примонтированы в Linux, необходимо корректно прописать путь к ним в самой информационной базе. Перейдем в настройки программы и найдем поле "Полный путь для сервера 1С:Предприятия под управлением Linux".
При заполнении этого поля строго соблюдайте следующие правила:
/mnt/files/. Использовать сетевые UNC-пути формата \\server\share, как это делается в Windows, на Linux-сервере нельзя./. Если слеш не указать, 1С может выдать ошибку при попытке сохранить первый же файл.В настройках тома хранения файлов в 1С мы можем задать параметры Предел, МБ и Порядок. Посмотрим на пример их использования. Если место на физическом диске ограничено, вы можете создать несколько томов. Программа будет заполнять их согласно установленному порядку: если первый том достигает указанного предела размера, 1С автоматически начнет сохранять новые файлы в следующий доступный том.
Важно понимать: сама по себе настройка нового тома не приведет к тому, что старые файлы, которые уже лежат внутри базы данных (в SQL), автоматически переместятся на диск. В новый том будут сохраняться только вновь добавляемые документы и картинки.
Чтобы разгрузить базу данных и перенести исторические данные, нам необходимо запустить специальную обработку, которая обычно называется "Перенос файлов в тома". Разберем нюансы этой операции:
Следуя этим правилам и рекомендациям, мы сможем построить надежную, быструю и безопасную систему хранения файлов для 1С на базе ОС Linux.