Назад | Перейти на главную страницу

Сервер NFS на Cygwin медленно

Настройка:

Мы запускаем экземпляр cygwin nfsd на сервере Windows 2008 (Xeon 3,2 ГГц). Есть несколько машин Sun Solaris и SunOS, обращающихся к общим ресурсам.

Это файл экспорта:

/disk3    (rw,all_squash)
/disk2    (rw,all_squash)  

Эти пути мягко связаны с соответствующими путями cygdrive / d / path / to / dir. Некоторые папки содержат до 10к файлов.

Эта проблема:

ls -la

на смонтированной папке на солнечных ящиках занимает 2 - 3 минуты и общая скорость чтения очень плохая.

cat filename

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

Загрузка процессора не является проблемой, сервер nfs большую часть времени простаивает, задачи cygwin никогда не загружаются более чем на 1%.

Недавно была проведена некоторая работа по ускорению доступа к каталогам, которая будет в Cygwin 1.7.8. Ожидается, что он будет выпущен где-то в январе, но вы можете попробовать последние снимки на сайте http://www.cygwin.com/snapshots.

Кроме того, вы можете захотеть избежать символических ссылок в пути, поскольку они вызывают дополнительные накладные расходы. Вы можете смонтировать нужные каталоги прямо в /etc/fstab, вот так:

c:/path/to/dir /disk3 ntfs binary 0 0

Вы также можете попробовать отключить сопоставление разрешений POSIX с ACL Windows (что означает, что разрешения будут подделаны):

c:/path/to/dir /disk3 ntfs binary,noacl 0 0

Видеть http://cygwin.com/cygwin-ug-net/using.html#mount-table для получения дополнительной информации об этом.

В конце концов, однако, Cygwin / Windows просто не очень хорошая серверная система.

Это вполне нормально, вы запускаете NFS-сервер в пользовательском режиме поверх уровня Unix поверх другой операционной системы.

Было бы намного лучше использовать сервер GNU / Linux.

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

/ disk3 (rw, all_squash, anonuid = xxx, anongid = yyy)