Сервер NFS как клиент сам по себе работает очень плохо

Я настраивал сервер NFSv4. Я делюсь файлами с машинами Linux в ферме виртуальных машин и машинами с Windows 7, 8 и 10, поэтому мне нужно обмениваться файлами как с NFS, так и с Samba 1 . В прошлом,Я сделал это, настроив машину NFS с прямым доступом к базовой файловой системе ext4 и настроив отдельный сервер Samba, который монтирует экспорт NFS и делится ими 2 .

Я хотел бы унифицировать файл совместное использование на одном сервере. Крайне важно, я должен быть уверен, что NFS и Samba не наступают на файлы друг друга, блаженно игнорируя блокировки. В результате я должен продолжать использовать Samba поверх NFS, а не параллельно с NFS.

Это кажется тривиальным. Сервер NFS должен просто смонтировать свой собственный общий ресурс, как это сделал бы сервер Samba, а затем тот же самый компьютер должен запустить Samba и экспортировать этот смонтированный общий ресурс. Единственное отличие, казалось бы, заключается в том, что трафику не обязательно перемещаться по сети между двумя машинами. Я ожидал лучшей производительности.

Вместо этого сервер NFS загружает процессор на машине, давая только 2,5 МБ / с производительность!

top - 11:34:57 up 15 days,  1:18,  1 user,  load average: 32.09, 8.07, 2.74
Tasks: 101 total,  13 running,  88 sleeping,   0 stopped,   0 zombie
%Cpu(s):  5.6 us, 93.7 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.7 si,  0.0 st
KiB Mem :   899776 total,   124840 free,   184624 used,   590312 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   261184 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
11058 root      20   0       0      0      0 R 11.5  0.0   5:53.84 nfsd
11061 root      20   0       0      0      0 R 11.5  0.0   5:53.88 nfsd
11057 root      20   0       0      0      0 R 11.2  0.0   5:53.72 nfsd
11059 root      20   0       0      0      0 R 11.2  0.0   5:53.78 nfsd
11060 root      20   0       0      0      0 R 11.2  0.0   5:53.80 nfsd
11062 root      20   0       0      0      0 R 11.2  0.0   5:53.86 nfsd
11064 root      20   0       0      0      0 R 11.2  0.0   9:23.40 nfsd
11063 root      20   0       0      0      0 R 10.9  0.0   6:00.00 nfsd

Единственный другой известный мне признак того, что что-то не так, - это что в / var / log / messages записываются бесчисленные строки, которые выглядят примерно так.

Apr 25 11:35:01 nas kernel: nfsv4 compound op #4/4: 9 (OP_GETATTR)
Apr 25 11:35:01 nas kernel: nfsd: fh_verify(36: 01070001 00060001 00000000 9509b6fe 7a49ad56 5a4d5dbc)
Apr 25 11:35:01 nas kernel: nfsv4 compound op ffff88dbf606a080 opcnt 4 #4: 9: status 0
Apr 25 11:35:01 nas kernel: nfsv4 compound returned 0
Apr 25 11:35:01 nas kernel: --> nfsd4_store_cache_entry slot ffff88db7bbae000
Apr 25 11:35:01 nas kernel: nfsv4 compound op ffff88dac5072080 opcnt 4 #2: 22: status 0
Apr 25 11:35:01 nas kernel: nfsv4 compound op #3/4: 38 (OP_WRITE)
Apr 25 11:35:01 nas kernel: nfsd: write complete host_err=131072
Apr 25 11:35:01 nas kernel: nfsv4 compound op ffff88dac5072080 opcnt 4 #3: 38: status 0
Apr 25 11:35:01 nas kernel: nfsv4 compound op #4/4: 9 (OP_GETATTR)
Apr 25 11:35:01 nas kernel: nfsd: fh_verify(36: 01070001 00060001 00000000 9509b6fe 7a49ad56 5a4d5dbc)
Apr 25 11:35:01 nas kernel: nfsd_dispatch: vers 4 proc 1
Apr 25 11:35:01 nas kernel: nfsv4 compound op #1/4: 53 (OP_SEQUENCE)
Apr 25 11:35:01 nas kernel: __find_in_sessionid_hashtbl: 1555688119:2835816624:106:0
Apr 25 11:35:01 nas kernel: nfsd4_sequence: slotid 5
Apr 25 11:35:01 nas kernel: check_slot_seqid enter. seqid 9615 slot_seqid 9614
Apr 25 11:35:01 nas kernel: nfsv4 compound op ffff88dbf606a080 opcnt 4 #1: 53: status 0
Apr 25 11:35:01 nas kernel: nfsv4 compound op #2/4: 22 (OP_PUTFH)
Apr 25 11:35:01 nas kernel: nfsd: fh_verify(36: 01070001 00060001 00000000 9509b6fe 7a49ad56 5a4d5dbc)
Apr 25 11:35:01 nas kernel: nfsv4 compound op ffff88db7b529080 opcnt 4 #4: 9: status 0
Apr 25 11:35:01 nas kernel: nfsv4 compound returned 0
Apr 25 11:35:01 nas kernel: --> nfsd4_store_cache_entry slot ffff88db7bbaf000
Apr 25 11:35:01 nas kernel: nfsd_dispatch: vers 4 proc 1
Apr 25 11:35:01 nas kernel: nfsv4 compound op #1/4: 53 (OP_SEQUENCE)
Apr 25 11:35:01 nas kernel: __find_in_sessionid_hashtbl: 1555688119:2835816624:106:0
Apr 25 11:35:01 nas kernel: nfsd4_sequence: slotid 1
Apr 25 11:35:01 nas kernel: check_slot_seqid enter. seqid 9626 slot_seqid 9625
Apr 25 11:35:01 nas kernel: nfsv4 compound op ffff88db7b529080 opcnt 4 #1: 53: status 0
Apr 25 11:35:01 nas kernel: nfsv4 compound op #2/4: 22 (OP_PUTFH)
Apr 25 11:35:01 nas kernel: nfsd: fh_verify(36: 01070001 00060001 00000000 9509b6fe 7a49ad56 5a4d5dbc)
Apr 25 11:35:01 nas kernel: nfsv4 compound op ffff88dbf606f080 opcnt 4 #4: 9: status 0
Apr 25 11:35:01 nas kernel: nfsv4 compound returned 0
Apr 25 11:35:01 nas kernel: --> nfsd4_store_cache_entry slot ffff88db291eb000
Apr 25 11:35:01 nas kernel: nfsd_dispatch: vers 4 proc 1
Apr 25 11:35:01 nas kernel: nfsv4 compound op #1/4: 53 (OP_SEQUENCE)
Apr 25 11:35:01 nas kernel: __find_in_sessionid_hashtbl: 1555688119:2835816624:106:0
Apr 25 11:35:01 nas kernel: nfsd4_sequence: slotid 2
Apr 25 11:35:01 nas kernel: check_slot_seqid enter. seqid 9614 slot_seqid 9613
Apr 25 11:35:01 nas kernel: nfsv4 compound op ffff88dbf606f080 opcnt 4 #1: 53: status 0
Apr 25 11:35:01 nas kernel: nfsv4 compound op #2/4: 22 (OP_PUTFH)
Apr 25 11:35:01 nas kernel: nfsd: fh_verify(36: 01070001 00060001 00000000 9509b6fe 7a49ad56 5a4d5dbc)
Apr 25 11:35:01 nas kernel: nfsv4 compound op ffff88dac507e080 opcnt 4 #2: 22: status 0
Apr 25 11:35:01 nas kernel: nfsv4 compound op #3/4: 38 (OP_WRITE)
Apr 25 11:35:01 nas kernel: nfsd: write complete host_err=131072
Apr 25 11:35:01 nas kernel: nfsv4 compound op ffff88dac507e080 opcnt 4 #3: 38: status 0
Apr 25 11:35:01 nas kernel: nfsv4 compound op #4/4: 9 (OP_GETATTR)
Apr 25 11:35:01 nas kernel: nfsd: fh_verify(36: 01070001 00060001 00000000 9509b6fe 7a49ad56 5a4d5dbc)
Apr 25 11:35:01 nas kernel: nfsv4 compound op ffff88dac5072080 opcnt 4 #4: 9: status 0
Apr 25 11:35:01 nas kernel: nfsv4 compound returned 0
Apr 25 11:35:01 nas kernel: --> nfsd4_store_cache_entry slot ffff88dbf65cc000
Apr 25 11:35:01 nas kernel: nfsd_dispatch: vers 4 proc 1
Apr 25 11:35:01 nas kernel: nfsv4 compound op #1/4: 53 (OP_SEQUENCE)
Apr 25 11:35:01 nas kernel: __find_in_sessionid_hashtbl: 1555688119:2835816624:106:0
Apr 25 11:35:01 nas kernel: nfsd4_sequence: slotid 4
Apr 25 11:35:01 nas kernel: check_slot_seqid enter. seqid 9584 slot_seqid 9583
Apr 25 11:35:01 nas kernel: nfsv4 compound op ffff88dac5072080 opcnt 4 #1: 53: status 0
Apr 25 11:35:01 nas kernel: nfsv4 compound op #2/4: 22 (OP_PUTFH)
Apr 25 11:35:01 nas kernel: nfsd: fh_verify(36: 01070001 00060001 00000000 9509b6fe 7a49ad56 5a4d5dbc)
Apr 25 11:35:01 nas kernel: nfsv4 compound op ffff88dbf606a080 opcnt 4 #2: 22: status 0
Apr 25 11:35:01 nas kernel: nfsv4 compound op #3/4: 38 (OP_WRITE)
Apr 25 11:35:01 nas kernel: nfsd: write complete host_err=131072
Apr 25 11:35:01 nas kernel: nfsv4 compound op ffff88dbf606a080 opcnt 4 #3: 38: status 0
Apr 25 11:35:01 nas kernel: nfsv4 compound op #4/4: 9 (OP_GETATTR)
Apr 25 11:35:01 nas kernel: nfsd: fh_verify(36: 01070001 00060001 00000000 9509b6fe 7a49ad56 5a4d5dbc)

Я не монтирую общие ресурсы NFS локально через 127.0.0.1. При локальном монтировании NFS используется частный IP-адрес самой машины. Я мог бы это изменить, но это потребовало бы дополнительной сложности в определении экспорта NFS, и я бы предпочел, чтобы эта машина видела себя точно так же, как другие машины, которые будут монтировать общие ресурсы NFS 3 .

Сноски

  1. Я знаю способы использования клиентов NFS в Windows и клиентов Samba в Linux. В данном случае такие параметры не работают.
  2. Мне известны предупреждения о реэкспорте общих ресурсов NFS с Samba, но я и многие другие системные администраторы, которых я знаю, регулярно делаю это без проблем. Проблема, похоже, возникла здесь скорее потому, что сервер NFS монтирует свой собственный общий ресурс. Тем не менее, мне любопытны точные причины таких предупреждений, так что если вы знаете, пожалуйста, поделитесь.
  3. Если у кого-то есть причина, по которой вся эта архитектура в корне ошибочна, я готов это услышать. У меня есть многолетний опыт обслуживания Samba поверх NFS на двух машинах, поэтому я предположил, что могу вырезать машину Samba и перенести Samba на сервер NFS с самонастраивающейся NFS.
3
задан 25 April 2019 в 18:44
1 ответ

Очень вероятно, что ваша рабочая нагрузка умирает от планирования. Вы запрашиваете тонну на переключение контекста в той же системе при экспорте файловой системы обратно в себя и последующем экспорте этого экспорта снова.

Вы можете увидеть, что эта рабочая нагрузка распределяется между более чем одним ядром. (ядра, которые не используют одно и то же ядро ​​ЦП) приводит к увеличению производительности, несмотря на задействование сетевого канала между этими системами.

Это легко может быть достигнуто с помощью совместно размещенного набора виртуальных машин; один работает с NFS, другой - с Samba. Размещение их на одном гипервизоре должно устранить большинство сетевых задержек и должно хорошо работать при условии, что эти виртуальные машины не используют одни и те же ядра ЦП.

Существуют также реализации в пользовательском пространстве для NFS - NFS Ganesha является очень распространенной. Однако Samba также будет нести ответственность за нетривиальное количество этих повторяющихся переключений между пользовательским пространством и ядром. Возможно, стоит протестировать NFS Ganesha, если эти рабочие нагрузки по какой-то причине абсолютно должны совместно использовать ядро.

Короче говоря, сокращение переключения контекста в одной системе должно значительно помочь в этом.

3
ответ дан 3 December 2019 в 06:26

Теги

Похожие вопросы