Гайд 1С: Тюнинг SSD/NVMe хранилищ и файловых систем под СУБД (ext4, XFS, NTFS)
- Длительное время выполнения транзакций и записи в журнал транзакций (WAL / LDF).
- Высокие значения счетчиков ожидания
PAGEIOLATCH_SH,PAGEIOLATCH_EXв MS SQL илиIO:DataFileRead,IO:WALWriteв PostgreSQL. - Дисковая очередь (Average Disk Queue Length) превышает нормативные показатели (> 2 на физический накопитель).
- Задержки физического дискового ввода-вывода (Latency) более 5–10 мс на операциях случайной записи.
1. Тюнинг файловых систем Linux (ext4 / XFS) под PostgreSQL
Для разделов с базами данных PostgreSQL и каталогами WAL используйте файловые системы ext4 или XFS со следующими опциями монтирования в /etc/fstab:
# Оптимальные параметры для ext4 (каталог данных СУБД)
UUID=xxxx-xxxx /var/lib/postgresql/data ext4 noatime,nodiratime,data=writeback,barrier=0,nobh,commit=60 0 0
# Оптимальные параметры для XFS (каталог данных СУБД)
UUID=yyyy-yyyy /var/lib/postgresql/data xfs noatime,nodiratime,logbufs=8,logbsize=256k,allocsize=64M 0 0Внимание: Опцию barrier=0 (отключение барьеров записи) допустимо применять исключительно на дисковых массивах с контроллерами, оснащенными энергонезависимым кэшем (BBU/NVDIMM) или на надежных корпоративных ИБП.
2. Тюнинг NTFS под MS SQL Server (Windows Server)
- Размер кластера (Allocation Unit Size): При форматировании дисков под файлы данных (
.mdf,.ndf) и журналы транзакций (.ldf) обязательно задавайте размер кластера 64 КБ:Format-Volume -DriveLetter D -FileSystem NTFS -AllocationUnitSize 64KB -NewFileSystemLabel "SQL_DATA" -Confirm:$false - Instant File Initialization (Мгновенная инициализация файлов): Предоставьте сервисной учетной записи SQL Server право
Perform Volume Maintenance Tasks(Выполнение задач по обслуживанию томов) в локальной политике безопасности (secpol.msc).
3. Оптимизация дисковых очередей и планировщика NVMe
Для NVMe накопителей в Linux переключите планировщик на none (без задержек на переупорядочивание запросов):
echo none > /sys/block/nvme0n1/queue/scheduler
echo 1024 > /sys/block/nvme0n1/queue/nr_requests Частые вопросы (FAQ)
Почему для баз 1С на NTFS критичен размер кластера 64 КБ?
СУБД MS SQL Server считывает и записывает данные экстентами (Extents) размером по 8 страниц (8 x 8 КБ = 64 КБ). Размер кластера файловой системы 64 КБ исключает расщепление операций ввода-вывода (I/O Split), повышая производительность дисковой подсистемы на 15–30%.
Нужно ли разделять файлы данных и журналы транзакций на разные физические NVMe накопители?
Да. Журнал транзакций (WAL в PG / LDF в MSSQL) пишется строго последовательно с требованием мгновенного fsync/flush, тогда как файлы данных читаются и модифицируются случайным образом. Разнесение их на разные физические NVMe контроллеры устраняет конкуренцию за шину и кэш контроллера.
Безопасно ли использовать noatime при монтировании дисков под 1С?
Да, абсолютно безопасно. Опция noatime отключает запись времени последнего чтения файла при каждом обращении, что кардинально снижает паразитный трафик записи метаданных при интенсивной работе СУБД с тысячами таблиц 1С.
Как проверить текущий размер кластера NTFS на боевом сервере?
Запустите командную строку с правами администратора и выполните: fsutil fsinfo ntfsinfo D: — найдите строку 'Bytes Per Cluster' (должно быть 65536 для 64KB).