Перечисление имен файлов происходит очень медленно при монтировании модуля K8s smb.C#

Место общения программистов C#
Anonymous
Перечисление имен файлов происходит очень медленно при монтировании модуля K8s smb.

Сообщение Anonymous »

У меня есть модуль, работающий с общим файловым ресурсом Windows при монтировании smb. Телевизор установлен со следующими опциями -

Код: Выделить всё

csi:
driver: smb.csi.k8s.io
accessModes:
- ReadWriteMany
claimRef:
kind: PersistentVolumeClaim
namespace: test
name: test-pvc
apiversion: v1
persistentVolumeReclaimPolicy: Retain
storageClassName: smb
mountOptions:
- vers=3.1.1
- dir_mode=0777
- file_mode=0777
- uid=1001
- gid=1001
- noprem
- mysymlinks
- casche=restrict
- noserverino
- actimeo=1
- rsize=1048576
- wsize=1048576
- nobrl
- noshareshock
volumeMode: Filesystem
Когда я перебираю смонтированную папку, чтобы найти файлы dll, в Pod это занимает более 30 минут, а в моем локальном — несколько секунд. Я использую следующий код C# для отображения имен файлов -

Код: Выделить всё

var files = Directory.EnumerateFiles("\mnt\test","*.dll", SearchOption.AllDirectories)
Я пробовал изменить параметры монтирования, но до сих пор ничего не помогало. Однако когда я выполняю сценарий Powershell для вывода списка того же набора файлов с помощью Cli.Wrap(), в модуле Pod это занимает секунду или две. Не знаю, почему код C# работает так медленно, тогда как Powershell так хорошо работает в модуле Pod с тем же смонтированным общим ресурсом. Мне нужно, чтобы опция С# работала. Любая помощь приветствуется.
Я попробовал изменить mountOptions и вместо этого использовал GetFiles(), но заметил ту же медлительность.

Подробнее здесь: https://stackoverflow.com/questions/791 ... -smb-mount

Вернуться в «C#»