Низкая производительность записи на сервере Debian, работающем по NFS, с экспортированной файловой системой JFS 22 ТБ

В настоящее время я использую сервер Debian, который экспортирует большую файловую систему JFS (22 ТБ) через NFS (nfs-kernel-server.) При попытке записи в общий ресурс NFS производительность очень низкая. Диск 22 ТБ находится на NAS, смонтированном с использованием iSCSI.

  • Он будет на мгновение приближаться к ожидаемой скорости линии, а затем простаивать несколько секунд. Очень низкий трафик измеряется при низкой скорости передачи данных.
  • Ожидание заглядывает на запись.
  • При чтении с монтирования NFS система работает с ожидаемой скоростью (11 МБ / с).
  • Эта проблема не возникает при использовании SFTP, rsync или локального копирования (не nfs).
  • Проблема сохраняется между стабильными и тестовыми выпусками.
  • На той же машине у меня есть файловая система ext4 14 ТБ, использующая точно такую ​​же конфигурацию экспорта, которая не разделяет проблему. Эта доля не используется регулярно и, следовательно, не потребляет ресурсы.

NFS сервер:

cat /etc/exports
/data2      10.1.20.86(rw,no_subtree_check,async,all_squash)

cat /sys/block/sdb/queue/scheduler
noop [deadline] cfq

cat /etc/default/nfs-kernel-server 
RPCNFSDCOUNT=8
RPCNFSDPRIORITY=0
RPCMOUNTDOPTS=--manage-gids
NEED_SVCGSSD=
RPCSVCGSSDOPTS=

Клиент NFS:

cat /etc/fstab
10.1.20.100:/data2  /root/incoming  nfs     rw,noatime,soft,intr,noacl 0 2

cat /sys/block/sdb/queue/scheduler
noop [deadline] cfq

cat /proc/mounts
10.1.20.100:/data2/ /root/incoming nfs4 rw,noatime,vers=4,rsize=262144,wsize=262144,namlen=255,soft,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.1.20.86,minorversion=0,addr=10.1.20.100 0 0

Эта проблема меня довольно озадачила. Любая помощь будет приветствоваться. Благодарю.

3 ответа

Я предполагаю, что число потоков NFS-сервера слишком мало. Вместо 8 число должно быть намного выше.

8 потоков, вероятно, будет достаточно для общих ресурсов, которые содержат только небольшие файлы и к которым обращается очень небольшое количество пользователей (например, в домашней сети) или в медленных сетях (10 Мбит).

Попробуйте определить значение retrans на вашем NFS-сервере во время записи:

nsstat -r

Если вы получаете повторные попытки передачи, увеличьте количество потоков сервера.

И я думаю, было бы неплохо удалить настройки rsize/wsize/tcp из ваших параметров монтирования. В любом случае, TCP является протоколом по умолчанию, и для TCP нет необходимости ограничивать размер передачи.

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

sudo ethtool -k your_nic

а также попробуйте прослушать провода, используя wireshark. Вы можете найти несколько неупорядоченных пакетов, дупс, ...

Может быть, это несовместимость с блокировкой nfs, используемой для записи и jfs. Я нашел ошибку в Ubuntu: https://bugs.launchpad.net/ubuntu/+source/jfsutils/+bug/754495

Другие вопросы по тегам