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

Ошибка ввода / вывода при чтении через шлюз HDFS NFS

Я включил шлюз HDFS NFSv3 в нашем кластере HDFS через официальную документацию. Все работает хорошо, за исключением одного сервера Ubuntu 16.04. Следующее - ядро, mount и машины sysctl -a выводить информацию.

root@Linux:~$ uname -a
Linux xxx-server-001 4.15.0-46-generic #49~16.04.1-Ubuntu SMP Tue Feb 12 17:45:24 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

root@Linux:~$ mount | grep hdfs
10.30.200.100:/ on /hdfs type nfs (rw,relatime,sync,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,noacl,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=10.30.200.100,mountvers=3,mountport=4242,mountproto=tcp,local_lock=all,addr=10.30.200.100)

root@Linux:~$ sysctl -a | grep nfs
fs.nfs.idmap_cache_timeout = 2
fs.nfs.nfs_callback_tcpport = 0
fs.nfs.nfs_congestion_kb = 259136
fs.nfs.nfs_mountpoint_timeout = 500
fs.nfs.nlm_grace_period = 0
fs.nfs.nlm_tcpport = 0
fs.nfs.nlm_timeout = 10
fs.nfs.nlm_udpport = 0
fs.nfs.nsm_local_state = 3
fs.nfs.nsm_use_hostnames = 0
sunrpc.nfs_debug = 0xffff
sunrpc.nfsd_debug = 0x0000

Симптомы следующие:

  1. Это могло бы ls /hdfs папки с очень небольшим количеством файлов без ошибок, но это не удалось с Input/output error когда папка, из которой он пытался читать, содержит много файлов (более 100 или около того).

  2. При включении отладочной информации NFS через sudo rpcdebug -m nfs -c all на машине я заметил следующие журналы ошибок в dmesg когда я попал в Input/ouput error через ls в дальнейшем. Я проверил исходный код Вот, и это похоже на проблему с переполнением буфера. Означает ли это, что это ошибка ядра NFS?

[2538707.003904] NFS: dentry_delete(1232344325/sss.123.txt, 4808cc)
[2538707.003907] NFS: decode_fattr3 prematurely hit the end of our receive buffer. Remaining buffer length is 0 words.
[2538707.003914] NFS: readdir(b200/095900) returns -5
  1. При использовании других ноутбуков или серверов для монтирования шлюза HDFS NFS через sudo mount -t nfs -o vers=3,proto=tcp,nolock,noacl,sync 10.30.200.100:/ /hdfs, это не проблема. Это означает, что проблема не в самом сервере шлюза NFS. Однако я попытался установить 4.15.0-46-generic Ядро на моем ноутбуке, но мне не удалось воспроизвести эту проблему.

  2. Эта проблема не воспроизводится постоянно, и иногда она срабатывает во второй или третий раз после того, как шлюз только что смонтирован. Однако частота отказов будет 90% +, поэтому его по-прежнему нельзя использовать.

Пожалуйста, дайте мне знать, есть ли какое-нибудь направление, в котором я мог бы отладить эту странную ситуацию. Заранее спасибо!