Консоль замораживает на автоматическом заполнении/mnt/folder (CIFS) долю

У меня есть сервер Ubuntu 14.04, который запрется после неопределенного количества времени, когда Вы делаете попытку к tab-auto-complete пути доли CIFS в/mnt каталоге. Я монтирую долю, и это, кажется, хорошо работает для неопределенного количества времени. Я могу сделать ls или выполнить du на папках в смонтированной доле. Затем я перейду к вкладке, путь к папке и моя консоль запираются. Я могу запустить новую сессию, но она заблокирует, как только я пытаюсь смешать со смонтированной долей; это даже происходит с другими пользователями, если я сделал, чтобы они попробовали также. Я понятия не имею, почему это происходит? Я никогда не видел эту проблему.

4
задан 23 May 2014 в 02:19

1 ответ

Это имеет отношение и к пути работы завершения удара и к пути cifs работы как протокол.

завершение удара работает таким образом:

  1. readline сообщает удару введенной в настоящее время строки, и нажатия клавиши вкладки.
  2. удар работает Поиск в глубину из файловой системы, корень которой в наиболее подобранной части иерархии файловой системы. Каждый шаг этого поиска является на самом деле многими запросами - запросом на список - от файловой системы.
  3. readline блоки - ожидающий ответа от удара со списком возможных исходов для отображения.
  4. , что список прибывает, readline отображает его и возвращает элемент управления вводом пользователю.

На блочном уровне или локальной или в других отношениях обоснованно быстрой файловой системе, это все происходит невероятно быстро.

CIFS, к сожалению, не является файловой системой блочного уровня. Вместо этого CIFS является основанным на команде транзакционным протоколом. Каждый запрос, выполненный против CIFS:

  • транзакционный, требуя запроса, подтверждения и подтверждения подтверждения,
  • представленный несколькими отдельными блоками команды CIFS/SMB
  • осмотренный для аутентификации

Короче говоря, CIFS/SMB (по крайней мере, в SMB1, который почти конечно является тем, что Вы используете для монтирования этой доли CIFS), чрезвычайно болтливый.

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

В случае заполнения клавишей Tab, тот цикл умножается на количество файлов в конкретном каталоге, возможно времена два (или больше!), если это разыменовывает Windows Shortcut.

На всем протяжении сети.

Это - рецепт для значительного замедления, поскольку readline ожидает удара, кто в свою очередь ожидает драйвера файловой системы для согласования с сервером CIFS.

можно хотеть работать вокруг этой проблемы путем выполнения вещей как выполнение сессии из screen, тот путь, если сессия удара запирается, Вы можете ctrl-A-c и получать бренд s, шлепающий новый терминал, таким образом, можно продолжить работать или даже уничтожать другой.

1
ответ дан 17 November 2019 в 15:49

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

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