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

Как определить, какой клиент NFS генерирует дисковый ввод-вывод?

Диск нашего сервера пула занят на 100%.

Я проверил с iotop и определил, что nfsd это верхний процесс, который потребляет дисковый ввод-вывод.

Мне нужно сузить это еще больше и я хочу определить, какой из клиентов NFS, использующих сервер, несет ответственность за это узкое место ввода-вывода диска. Как мне продолжить?

iotop а потом o - вы увидите, какой процесс читает и / или пишет и сколько на жесткий диск.

Проверьте pid этого процесса и выполните netstat -entp | grep <pid> - таким образом вы увидите установленное TCP-соединение и с какого адреса оно идет. Использовать enp для проверки сессий tcp и udp.

Вы также можете сделать netstat -anp | grep 2049 - таким образом получая ip-адрес и pid, а затем соотносите pid с тем из iotop.

Обычно клиент, использующий большую часть операций ввода-вывода, также выполняет большую часть сетевого трафика, поэтому я делаю следующее: сбрасываю весь трафик в течение нескольких секунд, а затем создаю отсортированный список хостов (ограниченный хостами nfs), которые использовали большую часть трафика:

tcpdump > dump.cap  # (30 secs should be enought), press ctr+ c
grep -o "<something iding an nfs client>" dump.cap | sort | uniq -c | sort -n