Как ускорить случайную инициализацию?

Конечно, ssh лучше.

Nfs использует сложный сетевой протокол с различными удаленными вызовами процедур и временем ожидания синхронизации данных. В случае ssh они не применяются.

Кроме того, здесь много замков. Удаление файлов в nfs работает так:

  1. ваша команда rmдает системный вызов unlink()
  2. Драйвер nfs преобразует его в запрос sunrpc и отправляет на сервер nfs
  3. Сервер nfs преобразует этот запрос sunrpc обратно в вызов unlink()
  4. выполняет этот unlink()вызов на удаленной стороне
  5. после успешного завершения возвращает клиенту ответное сообщение rpc, эквивалентное «все в порядке, все готово»
  6. драйвер ядра на стороне клиента -преобразует это обратно в код выхода 0 вызова unlink()исходногоrm
  7. rmпереход к следующему файлу, переход к 1

Сейчас важно:между 2 -7, rmнужно подождать. Он может отправлять следующий unlink()вызов асинхронно, но это однопоточный -, а не событийно-ориентированный инструмент -. Даже если бы это было возможно, все равно потребовались бы хитрые флаги монтирования nfs. Пока он не получит результат, он ждет.

Nfs -и любая сетевая файловая система -всегда намного медленнее.


Во многих случаях вы можете сделать рекурсивное удаление почти -бесконечной скоростью с помощью хитрости:

  1. Сначала переместите каталог на другое имя(mv -vf oldfilms oldfilms-)
  2. Удалить в фоновом режиме(rm -rf oldfilms- &)

С точки зрения многих (, но не всех )аспектов, это удаление каталога будет выглядеть так, как будто это произошло практически в нулевое время.


Расширение:Как отмечает @el.pascado в своем превосходном комментарии, на самом деле 2 -7 должно выполняться 3x для любых файлов:

  • , чтобы определить, является ли это файлом или каталогом (с системным вызовом lstat()),
  • тогда сделайте соответственно.В случаях обычных файлов unlink(), в случае каталогов opendir(), удаление всех файлов/каталогов в нем рекурсивно, затем closedir(), наконец rmdir().
  • , наконец, перейти к следующей записи каталога с вызовом readdir().

Это требует 3 RPC-команд nfs для файлов и еще 3 для каталогов.

2
30.09.2019, 17:55
1 ответ

Существует пакет под названием haveged, который служит именно этой цели.

3
27.01.2020, 22:02

Теги

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