У меня есть виртуальная машина Ubuntu 11.10, настроенная в VMSphere. Я храню некоторые данные на монтировке nfs. ВМ часто выходила из строя. Мне не удалось выяснить причину, но я думаю, что это связано с этой ошибкой:
Jan 19 09:53:07 ws-test-moodlearchive-01 kernel: [ 384.523617] nfs4_reclaim_open_state: Lock reclaim failed!
Он появляется в / var / log / syslog тысячи раз. Чаще всего после запуска cron.
Изначально я сохранял вывод одного задания cron в текстовый файл, хранящийся на монтировании NFS. Переключение на локальный диск, похоже, уменьшило количество ошибок, но оно все еще появляется.
Google был очень бесполезен, я не нашел ничего подходящего. Не нашел ничего даже близкого ни на этом сайте, ни на StackOverflow.
Итак, что означает эта ошибка? И как я могу предотвратить это?
На самом деле это не будет отображаться в NFS3, потому что это только код NFS4, NFS3 не имеет этой функции :) NFS3 имеет другое восстановление ошибок, и это может просто скрывать проблему.
Это может произойти, когда клиент NFS4 завершит действие с некоторой ошибкой и попытается восстановить ее. При восстановлении эта ошибка будет отображаться, если NFS попытался восстановить блокировку и потерпел неудачу.
Существует множество причин, по которым восстановление блокировки не удается, от некоторых ошибок или скачков на сервере nfs до сетевых проблем. Если вы думаете, что это проблема, вам придется выполнить tcpdump, чтобы поймать трафик NFS (предпочтительно на стороне клиента) и попытаться понять поток запроса до появления ошибки, чтобы сначала понять, почему какое-то неизвестное действие NFS4 было неудачным, а затем что происходит во время восстановления замка
Итак, первое, что нужно проверить, это, вероятно, сеть, проверить кабели, ошибки коммутатора и порта, дублированные IP-адреса, плохие границы / LACP, потерю пакетов и т. Д.
На сервере NFS, к которому я подключался, была запущена версия 3. Я подключался к версии 4. Переход на версию 3, похоже, устранил проблему. Я больше не вижу ошибку nfs4_reclaim_open_state в моем системном журнале.
Чтобы NFS использовала версию 3 при подключении, я добавил nfsvers = 3 в свой файл fstab. Итак, запись вроде этого:
nfsserverip:/export/homes /home nfs rw 0 0
Изменился на:
nfsserverip:/export/homes /home nfs nfsvers=3,rw 0 0
Я до сих пор не понял, о чем мне говорилось в сообщении об ошибке. Но по крайней мере я это исправил.