Я размещаю сервер NFS на Synology NAS. Он настраивается через встроенный сервер NFS в файловых службах. Параметры конфигурации несколько ограничены, и я установил размер пакета чтения/записи 32 КБ, а максимальная версия NFS — 4.1.
Запись /etc/exports:
/volume1/NAS_Andrew 192.168.0.0/24(rw,async,no_wdelay,crossmnt,insecure,all_squash,insecure_locks,sec=sys,anonuid=1024,anongid=100)
Мой клиент Ubuntu имеет следующую запись fstab:
192.168.0.219:/volume1/NAS_Andrew /mnt/nas nfs nofail,nconnect=16,rsize=32000,wsize=32000,жесткий 0 0
Это разрешается следующей записью в /proc/mounts при монтировании:
192.168.0.219:/volume1/NAS_Andrew /mnt/nas nfs4 rw,relatime,vers=4.1,rsize=32000,wsize=32000,namlen=255,hard,proto=tcp,nconnect=16,timeo=600,retrans=2 ,sec=sys,clientaddr=192.168.0.220,local_lock=none,addr=192.168.0.219 0 0
Проблема в том, что когда я записываю большой файл в монтирование NFS, все остальные операции файловой системы в пределах монтирования зависают.
Например, если я запускаю следующее в терминале 1:
время dd if=/dev/zero of=/mnt/nas/testfile bs=16k count=128k
а затем запустить лс -ла
в терминале 2; в лс
процесс зависает до тех пор, пока дд
запись завершена.
Я считаю, что проблема ограничена локальным клиентом NFS, потому что, если я запускаю тот же лс -ла
на другом сервере, на котором также смонтирован общий ресурс NFS - он работает без каких-либо зависаний или проблем.
Я надеюсь, что кто-то может пролить свет на то, почему операция записи блокируется.
Я попытался установить нконнект=16
в попытке увеличить TCP-соединения и разрешить более одной операции - однако это не сработало, и я подозреваю неподключение
может быть ограничено случаями, когда доступно несколько сетевых интерфейсов.
Я использую Ubuntu 20.04.3 LTS.
Любой вклад приветствуется.