Можно ли держать базы 1С на сетевом хранилище и не потерять данные
Содержание
NAS подходит для 1С в двух ролях: как сетевая папка для файловой базы на 3–5 пользователей и как хранилище резервных копий. Полноценный клиент-серверный вариант (сервер 1С:Предприятия плюс СУБД) на NAS тоже запускается, но только на модели с процессором x86-64, 16 ГБ памяти и больше, и лучше в виртуальной машине, чем прямо в системе хранилища.
Дальше всё упирается в три вещи: как NAS отдаёт файлы по SMB, на каких дисках лежит база и как вы её копируете. Ошибка в любой из них превращает удобное хранилище в источник повреждённых баз.
Какие схемы работы 1С с NAS реально работают
Сначала определитесь со схемой. От неё зависят требования к железу и весь остальной порядок настройки.
| Схема | Сколько пользователей | Что работает на NAS | Главный риск |
|---|---|---|---|
| Файловая база в сетевой папке | 1–5, ориентир | только хранение файла 1Cv8.1CD | повреждение базы при сбое сети или кешировании SMB |
| Сервер 1С и PostgreSQL в Docker | 5–15 | рабочие процессы 1С и СУБД | лицензия слетает при пересоздании контейнера, нехватка памяти |
| Виртуальная машина Linux на NAS | 5–20 | полноценный сервер 1С внутри ВМ | процессор NAS не тянет пиковые нагрузки |
| Отдельный сервер, NAS для копий | любое | только архивы .dt и дампы | практически нет |
Почему файловый режим капризен на сетевой папке
В файловом режиме вся база — один файл 1Cv8.1CD. Каждый клиент сам читает и пишет его по сети, а блокировки строк держатся через блокировки участков файла. Сервера, который бы следил за целостностью, нет.
Поэтому качество SMB-реализации на NAS критично. Сетевые хранилища работают на Samba, и её настройки по умолчанию рассчитаны на документы и фото, а не на файл, который одновременно меняют пять человек.
Если пользователей больше пяти, а в базе ведётся торговля с резервированием или проводится много документов одновременно, файловый режим начнёт тормозить при любом железе. Это ограничение самой архитектуры, а не NAS.
Когда сервер 1С на NAS — плохая идея
- ❌ NAS на ARM-процессоре. Дистрибутивы сервера 1С и сборки PostgreSQL для 1С ориентированы на x86-64 Linux, запускать их на ARM не стоит.
- ❌ 4 ГБ памяти без возможности расширения. Сервер 1С и СУБД вместе съедят её сразу.
- ❌ Только жёсткие диски без SSD. Случайная запись СУБД упрётся в механику.
- ❌ Хранилище одновременно служит видеорегистратором, торрент-клиентом и медиасервером.
Железо NAS под сервер 1С: на что смотреть при выборе
Для файловой базы хватит почти любой модели с гигабитной сетью. Для клиент-серверного варианта требования другие.
| Параметр | Файловая база | Сервер 1С + PostgreSQL |
|---|---|---|
| Процессор | любой | x86-64, 4 ядра и больше |
| Оперативная память | от 2 ГБ | от 16 ГБ, лучше 32 ГБ |
| Диски под базу | HDD в зеркале или SSD | SSD, только SSD |
| Сеть | 1 Гбит/с | 2,5 или 10 Гбит/с, либо агрегация портов |
| Поддержка Docker или ВМ | не нужна | обязательна |
| ИБП | обязателен | обязателен |
Процессор важнее, чем кажется. Сервер 1С однопоточно выполняет многие операции: проведение документа, расчёт отчёта, закрытие месяца . Четыре слабых ядра энергоэффективного процессора дают заметно меньше, чем два ядра настольного.
Память делится между сервером 1С (рабочие процессы rphost), PostgreSQL и самой системой NAS. На 16 ГБ комфортно живут одна-две базы до 10–20 ГБ.
ИБП с подключением к NAS по USB или по сети — не роскошь. Внезапное отключение питания во время записи — самый частый путь к повреждённому файлу 1Cv8.1CD и к ошибкам в таблицах PostgreSQL.
Диски и RAID-массивы для баз 1С на сетевом хранилище
Базе 1С нужна быстрая случайная запись мелкими блоками. Отсюда выбор уровня RAID.
| Уровень | Минимум дисков | Для базы 1С | Комментарий |
|---|---|---|---|
| RAID 1 | 2 | ✅ хорошо | зеркало, простое восстановление |
| RAID 10 | 4 | ✅ лучший вариант | скорость записи и отказоустойчивость |
| RAID 5 | 3 | ⚠️ терпимо на SSD | штраф на запись, долгая перестройка |
| RAID 6 | 4 | ❌ для СУБД плохо | двойной штраф на запись |
| Без RAID | 1 | ❌ | один сбой диска — и база потеряна |
Практичная схема для небольшой фирмы: два SSD в RAID 1 под базы и СУБД, два больших HDD в RAID 1 под архивы и общие документы. Так копии физически лежат на других дисках, чем рабочие данные.
Файловая система и кеш
- 📁 Btrfs и другие файловые системы с копированием при записи фрагментируют файлы баз данных. Для каталога с данными PostgreSQL на Btrfs отключите CoW командой
chattr +Cна пустой папке до того, как в неё попадут файлы. - 💾 SSD-кеш поверх HDD помогает файловой базе на чтении, но кеш на запись без защиты от сбоя питания опасен. Если включаете кеш записи, ставьте два SSD в зеркало.
- 🌙 Отключите засыпание дисков для тома с базами. Первое обращение после простоя растягивается на 10–20 секунд, и 1С успевает выдать ошибку доступа к файлу.
RAID не заменяет резервную копию. Он спасает от поломки диска, но не от удалённого по ошибке документа, шифровальщика или неудачного обновления конфигурации.
Сервер 1С и PostgreSQL в Docker на NAS
Если на хранилище есть Docker (Container Manager у Synology, Container Station у QNAP), сервер 1С и СУБД можно поднять в контейнерах. Готовых официальных образов фирма 1С не выпускает, поэтому образ собирают сами из дистрибутивов с портала поддержки.
Какой PostgreSQL нужен
Обычный PostgreSQL из официального образа для 1С не подходит. Платформе нужна сборка с доработками под 1С: её выпускает фирма 1С, есть и Postgres Pro. Версию СУБД подбирайте по списку, который поддерживает ваша версия платформы.
Пример docker-compose.yml для СУБД. Имя образа условное: это ваш собственный образ, собранный из дистрибутива PostgreSQL для 1С.
services:
pg1c:
image: local/postgres-1c:latest
container_name: pg1c
restart: unless-stopped
shm_size: 2g
environment:
POSTGRES_PASSWORD: "сложный_пароль"
volumes:
- /volume1/ssd/pgdata:/var/lib/postgresql/data
ports:
- "5432:5432"
Строка shm_size — тот приём, который чаще всего забывают. По умолчанию Docker даёт контейнеру 64 МБ разделяемой памяти, и PostgreSQL на тяжёлых запросах 1С падает с ошибкой could not resize shared memory segment.
Стартовые параметры СУБД для 16 ГБ памяти
shared_buffers = 4GB
effective_cache_size = 8GB
work_mem = 64MB
maintenance_work_mem = 512MB
max_connections = 200
Если на этом же NAS работает сервер 1С, не отдавайте СУБД больше половины памяти. Остальное нужно рабочим процессам 1С и системе хранилища.
Контейнер с сервером 1С и лицензия
Сервер 1С в контейнере ставится из deb-пакетов платформы для Linux. Здесь две ловушки:
- Программная лицензия. Она привязывается к параметрам оборудования и окружения. Пересобрали контейнер с новым идентификатором — лицензия может перестать подходить. Каталог
/var/1C/licensesвынесите в постоянный том и не меняйте имя хоста контейнера. - Порты. Клиент сначала обращается к агенту сервера на 1540, затем к менеджеру кластера на 1541, а потом к рабочим процессам из диапазона, который задан в свойствах рабочего сервера (по умолчанию 1560–1591). Пробросьте весь диапазон, иначе клиент найдёт сервер, но не подключится к базе.
Виртуальная машина с Ubuntu или Debian внутри NAS (Virtual Machine Manager у Synology, Virtualization Station у QNAP) часто проще контейнера. Сервер 1С ставится как на обычный Linux-сервер, а лицензия живёт в стабильном окружении.
Каталог данных PostgreSQL держите на локальном томе NAS, а не в сетевой папке, смонтированной по SMB или NFS. СУБД на сетевой файловой системе — прямой путь к повреждённым таблицам.
Сетевые папки, права SMB и подключение клиентов 1С
Для файловой базы это главный раздел. Для клиент-серверной — второстепенный: там пользователи работают через сервер 1С и к файлам не обращаются.
Настройка общей папки
- Создайте отдельную общую папку, например
1c-bases, на томе с SSD или зеркалом. - Заведите группу пользователей 1С и дайте ей права на чтение и запись. 1С создаёт рядом с базой служебные файлы, поэтому прав только на чтение не хватит.
- Включите SMB2 и SMB3, отключите SMB1. Минимальную версию протокола задают в настройках файловых служб NAS.
- Отключите для этой папки корзину. Иначе удалённые 1С временные файлы будут копиться годами.
- Выключите на клиентах автономные файлы Windows для этой папки.
Oplocks — ключевая настройка Samba для 1С
Механизм oplocks разрешает клиенту кешировать файл у себя. Для документов это ускорение, для файла 1Cv8.1CD, который одновременно меняют несколько клиентов, — риск расхождения данных.
Если NAS позволяет править конфигурацию Samba (через SSH или раздел дополнительных настроек SMB), отключите кеширование для папки с базами:
[1c-bases]
path = /volume1/1c-bases
oplocks = no
level2 oplocks = no
strict locking = yes
После правки перезапустите службу SMB. Все открытые сеансы 1С при этом оборвутся, поэтому делайте это вне рабочего времени.
На многих NAS ручные правки smb.conf перезаписываются при обновлении прошивки. После каждого обновления проверяйте, что параметры на месте.
Как добавить базу в список у пользователей
В окне запуска 1С нажмите Добавить, выберите создание новой или добавление существующей базы, тип «На данном компьютере или на компьютере в локальной сети» и укажите путь в формате UNC:
\\nas\1c-bases\buh
Не используйте подключённую букву диска вроде Z:\buh. У разных пользователей буквы различаются, а после перезагрузки диск иногда не успевает подключиться к
старту 1С.
Добавьте папку с базами в исключения антивируса на каждом рабочем месте. Проверка каждого обращения к 1Cv8.1CD замедляет работу в разы.
Резервное копирование баз 1С с NAS и восстановление
Снимки (snapshots) и резервные копии NAS удобны, но для баз 1С у них есть оговорка. Снимок фиксирует файлы в момент, когда пользователь мог проводить документ. Такая копия соответствует состоянию после отключения питания: обычно открывается, но гарантии нет.
| Что копируем | Правильный способ | Когда |
|---|---|---|
| Файловая база | выгрузка .dt или копия файла, когда в базе никого нет | ночью, по расписанию |
| База PostgreSQL | pg_dump в формате custom | ночью, плюс перед обновлениями |
| Весь том | снимок NAS как дополнительная страховка | каждый час или день |
| Копия вне офиса | Hyper Backup, rsync или облако | ежедневно |
Пример ночного дампа из контейнера:
docker exec pg1c pg_dump -U postgres -Fc buh > /volume2/backup/buh_$(date +%F).dump
Восстанавливают такой дамп через pg_restore в пустую базу. Копирование каталога данных PostgreSQL на лету корректной копией не является.
Для файловой базы ночную выгрузку можно запускать пакетным файлом с рабочей станции через планировщик Windows. Параметр /DumpIB выполняет выгрузку в .dt, а /Out пишет журнал:
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F"\\nas\1c-bases\buh" /N"Администратор" /P"пароль" /DumpIB"\\nas\backup\buh.dt" /Out"\\nas\backup\buh.log"
Номер версии в пути замените на свой. Если в базе кто-то работает, выгрузка не выполнится, причина будет в журнале.
Правило 3-2-1 и проверка восстановления
- 3️⃣ три копии данных: рабочая база и две резервные;
- 2️⃣ на двух разных носителях: SSD-массив и HDD-массив или внешний диск;
- 1️⃣ одна копия вне офиса.
Раз в месяц разворачивайте копию в тестовую базу и открывайте её. Копия, которую ни разу не восстанавливали, — это надежда, а не резервная копия.
Сбои 1С на NAS: симптомы, причины и проверка
Большая часть проблем связана с сетью, питанием и кешированием, а не с самой 1С.
chdbfl.exe из каталога bin платформы или «Тестирование и исправление» в Конфигураторе. Ищите причину: отключение питания, обрыв Wi-Fi у клиента, кеширование SMB.shm_size и пересоздайте контейнер.Что проверить в первую очередь при медленной работе
- Скорость сети у пользователя. Клиент по Wi-Fi работает с файловой базой медленно и рискованно, переводите его на кабель.
- Нагрузку на процессор и диски NAS в его мониторе ресурсов в момент торможения. Если в это время идёт индексация медиа или проверка RAID, перенесите её на ночь.
- Шифрование и подписание SMB. Они нагружают слабый процессор хранилища; в закрытой офисной сети их иногда можно ослабить, но решение принимает администратор с учётом политики безопасности.
- Размер файла базы. Файловая база больше 10–15 ГБ на сетевой папке — повод переходить на клиент-серверный вариант.
Перезапуск SMB, контейнера с сервером 1С или СУБД рвёт все открытые сеансы пользователей. Несохранённые документы будут потеряны. Предупредите сотрудников или дождитесь конца рабочего дня.