· 14 мин чтения

NFS-клиент на Windows: правильное подключение Linux-шар

Меня зовут Семёнов Евгений Сергеевич, директор АйТи Фреш. За 15+ лет в ИТ-аутсорсинге через мои руки прошли сотни гибридных инфраструктур: Linux-серверы под базы и файлы, Windows — на рабочих местах и серверах приложений. И каждый второй раз возникает вопрос — как Windows-машине увидеть Linux-шару через NFS. Тема простая, но с подводными камнями: UID/GID, права, squashing. Разберу всё, что знаю, с рабочими командами.

Когда NFS на Windows — правильное решение

Microsoft много лет держит Services for NFS как «не главный» способ работы с файлами. Понятно: есть SMB, который роднее. Но NFS остаётся живым и местами незаменимым:

У нас на практике NFS-клиент в Windows нужен плюс-минус в 20% проектов смешанной инфраструктуры. Не супер-часто, но регулярно.

В каких Windows есть штатный NFS-клиент

Вопрос важный, потому что его нет везде. Раньше NFS-клиент был во всех Pro-редакциях, потом Microsoft порезал:

РедакцияNFS-клиент
Windows 11/10 HomeНет
Windows 11/10 ProНет (с Win10 1803 убрали)
Windows 11/10 Pro for WorkstationsДа
Windows 11/10 Enterprise / EducationДа
Windows Server 2016–2025Да, во всех редакциях

Если у вас Windows 10/11 Pro без Workstations — штатного клиента нет. Варианты: обновиться до Enterprise, поставить бесплатный Allegro NFS Client или переходить на SMB. Я всегда сначала предлагаю заказчику SMB, если такая возможность есть.

Установка Services for NFS

На Windows Server — через роль, на Windows 10/11 Enterprise — через «Компоненты Windows».

Windows Server 2019/2022/2025:

Install-WindowsFeature NFS-Client -IncludeManagementTools
# или полный пакет с сервером
Install-WindowsFeature FS-NFS-Service, NFS-Client -IncludeManagementTools

Windows 10/11 Enterprise:

# PowerShell от администратора
Enable-WindowsOptionalFeature -Online -FeatureName "ServicesForNFS-ClientOnly","ClientForNFS-Infrastructure"

Либо через GUI: «Панель управления → Программы и компоненты → Включение или отключение компонентов Windows → Службы для NFS → Клиент для NFS». Перезагрузка не требуется. Проверка установки:

Get-Service NfsClnt
# Статус должен быть Running, StartType Automatic

Настройка NFS-сервера на Linux

Чтобы подключиться — нужно, чтобы на другой стороне была настроена экспортируемая шара. Минимальный /etc/exports для отдачи Windows-клиентам:

# /etc/exports на Linux-сервере
/srv/share 10.10.10.0/24(rw,sync,no_subtree_check,no_root_squash,insecure)
/srv/ro    10.10.10.0/24(ro,sync,no_subtree_check,insecure)

Опция insecure обязательна для Windows-клиента — он подключается с порта выше 1024, и без этой опции сервер откажет. no_root_squash нужен, если Windows будет писать от административных операций. После правки:

exportfs -rav
systemctl restart nfs-server
showmount -e localhost

Монтирование шары на Windows

Простой вариант — из командной строки:

mount -o anon \\10.10.10.50\srv\share Z:
# или с параметрами производительности
mount -o anon,nolock,rsize=65536,wsize=65536,mtype=hard \\10.10.10.50\srv\share Z:

Что означают ключи:

Просмотр смонтированных шар:

mount
showmount -e 10.10.10.50

Отключение:

umount Z:
umount -f Z:   # принудительно

Маппинг пользователей: UID/GID

Главная боль NFS между Linux и Windows — несовместимость моделей прав. Linux оперирует UID/GID, Windows — SID. Services for NFS решают это через «маппинг», но на практике я всегда делаю проще — прописываю фиксированные AnonymousUid/Gid:

Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default" `
  -Name AnonymousUid -Value 1000 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default" `
  -Name AnonymousGid -Value 1000 -Type DWord

Restart-Service NfsClnt

Теперь Windows всегда ходит на NFS-шару с UID=1000, GID=1000. На Linux-стороне делаете владельцем каталога соответствующего пользователя:

chown -R 1000:1000 /srv/share
chmod -R 775 /srv/share

Если нужен доменный маппинг — ставите на Linux-сервере nfs-idmapd и IDMU на Windows. Но для 9 из 10 задач хватает anonuid/anongid.

Постоянное монтирование при входе

Флаг -p у mount давно сломан. Я всегда пишу батник и вешаю его в Task Scheduler на событие «At log on»:

@echo off
rem nfs-mount.cmd
mount -o anon,nolock,rsize=65536,wsize=65536 \\10.10.10.50\srv\share Z:
mount -o anon,nolock                          \\10.10.10.50\srv\ro    Y:
exit /b 0

Создаём задачу:

schtasks /Create /TN "NFS-AutoMount" /TR "C:\Scripts\nfs-mount.cmd" /SC ONLOGON /RL HIGHEST /F

Реальный кейс: CAD-бюро и ZFS-сервер

В октябре 2025 клиент — инженерное бюро на 24 рабочих места — пожаловался, что у них «тормозит общий проектный диск». Пришёл смотреть: стоит Linux-сервер с ZFS, 24 ТБ, отдаёт через Samba. 20 инженеров одновременно работают с AutoCAD и Revit. Средняя операция «открыть файл» занимала 40–60 секунд.

Переключил шары с SMB на NFSv3 (у клиентов были Windows 10 Enterprise). Настроил AnonymousUid/Gid через GPO для всего OU с рабочими местами, увеличил rsize/wsize до 65536. Сервер — Dell с Xeon Platinum 8280, 128 ГБ RAM, 40G Mellanox до свича. После переключения «открыть файл» стало 3–6 секунд. Инженеры заметили сразу.

Работа заняла 2 дня: день на тест, день на раскатку. Стоимость — 48 000 руб. за внедрение, ежемесячное обслуживание 15 000 руб. Клиент доволен до сих пор.

Типичные ошибки и диагностика

Когда лучше отказаться от NFS в пользу SMB

Я честно говорю клиентам: если нет специфических требований, SMB на Windows удобнее. Интегрируется с AD, видит права через ACL, не требует возни с UID/GID. NFS беру в двух случаях: когда на Linux-стороне производительность SMB просаживается и когда сервисы (Hyper-V, Oracle DB) явно просят NFS.

Настроим NFS и гибридное хранилище

Я лично настраиваю NFS-экспорт на Linux-серверах и клиентов на Windows — от 1 шары до целого гибридного файл-сервера на 100+ пользователей. Подскажу, когда лучше NFS, а когда SMB. Первичная консультация — бесплатно.

Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш

FAQ — частые вопросы

В какой редакции Windows есть NFS-клиент?
В Windows 10/11 Pro for Workstations и Enterprise, а также во всех редакциях Windows Server. На Home — штатного клиента нет, нужны сторонние решения.
NFSv3 или NFSv4 выбирать?
Встроенный клиент Microsoft поддерживает только NFSv3. Для NFSv4.1 на Windows нужны сторонние клиенты. На практике для Linux-шар использую v3 с anonuid/anongid.
Как задать UID/GID для Windows-пользователя?
Через реестр HKLM\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default параметры AnonymousUid и AnonymousGid. После этого Windows-клиент всегда ходит на шару с указанными UID/GID.
Почему не сохраняется Z: после перезагрузки?
Потому что у mount -p флаг persistent не всегда переживает отзывы kerberos/credentials. Я обычно ставлю mount в батник на автозапуск или создаю задачу в Task Scheduler at logon.
Access denied при попытке записи — что делать?
Причина почти всегда в несовпадающих UID/GID. Проверьте на Linux ls -lan и сравните с тем, что возвращает Windows showmount. Выставьте AnonymousUid/Gid равными владельцу каталога или используйте no_root_squash.

Подпишитесь на рассылку ITfresh

Раз в неделю — практические гайды для руководителя IT и сисадмина: безопасность, 1С, миграции, резервные копии, лайфхаки из реальных проектов.

Реквизиты оператора персональных данных

ООО «АЙТИ-ФРЕШ», ИНН 7719418495, КПП 771901001. Юридический адрес: 105523, г. Москва, Щёлковское шоссе, д. 92, корп. 7. Контакт: info@itfresh.ru, +7 903 729-62-41. Оператор обрабатывает e-mail подписчика в целях рассылки информационных и рекламных материалов до момента отзыва согласия.