[NFS] часто бывает ошибка staled file handler

Maurog

после установке на кластере из 8 линуксов (двухпроцессорные + гипертрединг на 4 процессора)
возникли проблемы на нфс.
в нфс втянуты солярки и эти линуксы.
часто бывает ошибка staled file handler, ну или типа того.
я так понимаю, что файл, записанный с одного компа не успевает синхронизироваться при обращении с другого компа. при чем сколько не жди, а на другом хосте хендлер постоянно потеряный и ошибка выдается (к примеру если файл давно открыт на чтение, а с другого компа он аппендится)
короче траблы какие-то на этом ебанном нфс ;(
как эту проблему можно решить?

sergey_m

Ты не указал какая операционная система на NFS сервере, и какая на NFS клиенте. Это важно.

sergey_m

Кстати ты еще не указал где возникает эта самая ошибка.

Maurog

нфс сервер не в курсе, но уверен, что это солярка.
нфс клиентов я описал уже- это линукс и солярка.
насчет "где возникает эта ошибка" очень тяжело понять, что ты хочешь знать.
есть станция1 и станция2..станция-n, которая запускает екзешники и те пишут в один и тот же файл.
на станции1 возникают проблемы stale handler при чтении этого файла.

sergey_m

> насчет "где возникает эта ошибка" очень тяжело понять, что ты хочешь знать.
Ну что здесь сложного? Тебе MessageBox вылазит с этой ошибкой? Или может ядро её печатает и она оказывается в /var/log/messages? Или может системный вызов возвращает ошибку, и номер errno говорит о этой ошибке? Или может быть ошибка возвращается из плюсовой библиотеки?
"Когда я запускаю программу, то происходит ошибка XXX" - вот это совсем не понятно.

shlyumper

только stalled file handle
на линуксе обычно означает, что примонтированная система отвалилась от сервера. проверь, есть ли PL, если есть - то чинить сеть и можно попробовать перевестись временно на NFS по TCP.

Papazyan

Такая фигня возникает, когда компьютер долгое время был вне сети. В результате NFS отваливается полностью и даже перезапуски соответствующих сервисов не помогают. Мало того, перезагрузиться тоже нормально нельзя, поскольку NFS каталоги не хотят отмаунтиваться. С этим можно как-то бороться?

Maurog

я не админ, а глупый юзер
сам понимаешь, как докладывают юзеры об ошибках
эта ошибка выдается в двух абсолютно разных местах:
1) при выполнении bash-script типа:
echo 1 > file.txt
где file.txt был создан с одной станции, а баш запустился на другой.
2) в Tcl, когда я пытаюсь сделать "seek $g [tell $g]"
где $g дескриптор на давно открытый файл, который дописывается с разных станций.
за вариант про ПЛ спасибо. самая здравая мысль тут.
то есть если у меня есть дескриптор на давно открытый файл и возникло ПЛ в сети (почему бы и не возникнуть за долгое время?) то может образоваться недоделанность этого файла? и тогда stalled?
собственно ошибка не частая ведь, но критическая...после ее возникновения дескриптор в tcl никогда не починится ;(
есть смысл сделать по TCP ? то есть у нас по удп что ли происходит сейчас? что улучшится\ухудшится при таком маневре?

shlyumper

stalled - это означает, что NFS уже отвалился, и дальше ты будешь висеть ждать его возвращения, пока он не появится назад (т.к. файловая система примонтирована с опцией hard, что by default, и что вообще говоря правильно). что при этом произошло с файлом - зависит от того, когда именно он отвалился, но если он вернется таки назад, а вероятность этого есть, то с файлом будет все 100%-ок. Если очень нужно убить процессы, которые из-за NFS подвисли, то обычно помогает такая последовательность: umount -f на твой nfs, потом kill -9 на процессы. через некоторое время умирают.
переход на tcp c udp даст меньше глюков, если они были вызваны хреновой сетью, но немного уменьшит скорость работы файловой системы.

Maurog

у меня ничего не зависает и ничего не отваливается - у меня выскакивают ошибки.
файловая система работает нормально за исключением, возможно, маленьких лагов.
никаких умаунтов я делать не могу, да и не требуется.
у меня дескриптор портится по ходу почему-то. а с файлом все ок всегда.
попробую на тцп уломать админа.
посмотрим на результаты.

Maurog

"переход на tcp c udp даст меньше глюков"
за счет чего?
во время лага запрос будет ждать, когда этот лаг закончится и он получит то, что требует?
все же мне кажется проблема в другом....в нфс есть понятие синхронизации. возможно с двух станций одновременно идет запись и чтение. и нфс не в состоянии дать читателю то, что записалось, ибо нужно все синхронизировать сначала...
так что лаги могут быть не при чем.

shlyumper

короче, мой тебе совет: почитай документацию. все объяснять лень, а там это описано.

Maurog

спасибо, я уж как-нить обойдусь.
если не способны объяснить-значит проблема нетривиальная, значит оно глючить и должно.

shlyumper

пиздец, о каком объяснении может идти речь если даже
нфс сервер не в курсе, но уверен, что это солярка.
у тебя есть рут на сервере? можешь показать диагностику с сервера?

rosali

Наши админы даже слышать не хотят про nfs в продакшене...

ava3443

спасибо, я уж как-нить обойдусь.
если не способны объяснить-значит проблема нетривиальная, значит оно глючить и должно
LOL
чувствуешь разницу между "не способны объяснить" и "лень"?
P.S. Как раньше было принято говорить в подобных случаях в ru.perl, зачитывание документации вслух с выражением - $50/час

ava3443

Наши админы даже слышать не хотят про nfs в продакшене...
А как ваши админы решают задачи, для которых предназначена nfs?

rosali

А для каких задач он предназначен?

ava3443

Я имею ввиду, предназначен не по задумке, а де-факто.
Насколько я знаю, NFS отлично решает некоторые частные задачи администрирования - такие, в которых изменения идут из одного источника.

sergey_m

> Наши админы даже слышать не хотят про nfs в продакшене...
Любое безаппеляционное заявление может на самом деле быть разумным и подкреплённым какими-то соображениями. Точно также оно может и не быть таковым.

rosali

такие, в которых изменения идут из одного источника
Коммитишь, собираешь пакет, ставишь его кругОм. Считается что другим способом изменения в продакшн не должны попадать. Разумеется это все "официально" и бывают исключения, но тем не менее.

sergey_m

Коммитишь, собираешь пакет, ставишь его кругОм. Считается что другим способом изменения в продакшн не должны попадать. Разумеется это все "официально" и бывают исключения, но тем не менее.
Это если речь о исполняемых файлах, которые меняются только руками человека. А если речь о данных, которые изменяются по ходу процесса?

rosali

А если речь о данных, которые изменяются по ходу процесса
scp, что тут еще придумаешь

shlyumper

что тут еще придумаешь
сетевые файловые системы, например тот же NFS.
Типичный пример использования NFS в продакшн: у нас на работе есть некоторое кол-во рабочих мест (пара десятков все под Linux, все сидят в одном NIS-домене, и home всех пользователей лежит на NFS. В результате любой пользователь может сесть за любое рабочее место и получить более-менее свое родное окружение (более-менее - с точностью до установленного на машине нестандартного софта). Не тормозит, не виснет, но дальше 30-40 мест судя по всему масштабируется плохо. Альтернативные решения - например AFS. Сложнее в реализации и поддержке, но масштабируются до 5000 рабочих мест без проблем.

rosali

NFS в продакшн: у нас на работе есть некоторое кол-во рабочих мест
NFS среди _рабочих мест_ какой же это продакшн? Там то конечно можно...

shlyumper

продакшн
а что такое по-твоему продакшн?

rosali

Ну те сервера куда клиенты ходят. Под большой нагрузкой, где нужно решать задачу надежности. А какая с nfs надежность...

ava3443

где нужно решать задачу надежности. А какая с nfs надежность...
А какие методы решения задачи надёжности ты знаешь, которые нельзя применить к NFS?

shlyumper

если продакшном в применении к НФС считать раздачу файловой системы на много клиентов - то да, НФС сливает под большой нагрузкой.

shlyumper

А какие методы решения задачи надёжности ты знаешь, которые нельзя применить к NFS?
Кеширование, зеркалирование томов между серверами, и много чего еще. Посмотри, например, возможности AFS

sergey_m

если продакшном в применении к НФС считать раздачу файловой системы на много клиентов - то да, НФС сливает под большой нагрузкой.
Не NFS сливает, а некоторые её реализации.

sergey_m

>> А если речь о данных, которые изменяются по ходу процесса
> scp, что тут еще придумаешь
Это неприемлимо дорого. Количество scp транзакций в секунду наверное раз в 500 меньше, чем NFS. Не говоря уж о том, что это не масшатабируется - чем больше клиентов, тем больше scp транзакций на одно изменение.

rosali

 
чем больше клиентов, тем больше scp транзакций
Вы чего то все не туда завернули. Имеется в виду, что есть десяток машин, которые работают под нагрузкой и на них на всех нужны одни и те же данные. Так вот эти данные нужно раскопировать через scp, вместо того чтобы расшарить их по nfs. Потому что если ляжет nfs сервер то ляжет всё, а этого нельзя допускать, а если делать 2 nfs сервера то какая уж разница, проще раскопировать везде.
PS. проблема nfs не в том, что она не держит нагрузку, а в том что она неадекватна по отношению к сетевым проблемам, в том числе физическим. Ну это мнение наших админом, к которому я тоже все больше склоняюсь.

amkharchenko

А как обеспечивается безопасность такого решения? Невозможностью подключить свою машину или модифицировать стоящую? Или используется версия NFS с нормальной системой безопасности?

sergey_m

Вы чего то все не туда завернули. Имеется в виду, что есть десяток машин, которые работают под нагрузкой и на них на всех нужны одни и те же данные. Так вот этиданные нужно раскопировать через scp, вместо того чтобы расшарить их по nfs.
Вот я и говорю, что когда будет 50 машин, а изменения будут происходить каждую секунду, то scp не будет успевать.

shlyumper

А как обеспечивается безопасность такого решения?
Административными методами (не компьютерными).

shlyumper

сливает сливает, почему - уже написал: неадекватное (с точки зрения многих разработчиков прикладного ПО) поведение в случае малейшей нестабильности сети.
Оставить комментарий
Имя или ник:
Комментарий: