Можно ли нескольким компьютерам записывать данные с помощью PowerShell в один файл на одном удаленном компьютере? - PullRequest
0 голосов
/ 04 ноября 2019

Я пишу некоторые сценарии powershell, работающие в кластерах Hyper-V, для получения статистики виртуальных машин на каждом хосте в кластерах и записи данных в файл HTML на главном сервере с помощью командлетов Add-Content. Исходя из количества виртуальных машин, каждому кластеру требуется от 20 до 30 минут для завершения записи.

Мне интересно, может ли главный сервер поддерживать эти несколько соединений. Получение данных само по себе не является проблемой, потому что процесс выполняется на каждом кластере. Но я боюсь возможных сбоев или чего-то еще из-за одновременных подключений с нескольких серверов к одному файлу. Разумеется, ресурсов ЦП и памяти главного сервера достаточно.

Могу ли я позволить программам в кластерах запускаться одновременно или мне нужно сделать интервалы между серверами? Заранее спасибо.

1 Ответ

0 голосов
/ 04 ноября 2019

Часто плохая идея разрешать одновременные операции записи несколькими процессами в один файл. Разрешение такого процесса требует тщательного планирования. Обычно получается блокировка записи , поэтому только один процесс может обновлять файл одновременно. Без него процессы могут записывать в файл, что приводит к большому беспорядку. Процессы P и Q записывают содержимое с блокировкой примерно так:

p p p
q q q
q q q
p p p

Все хорошо и аккуратно. Теперь давайте разрешим несколько записей, и мы могли бы - возможно, здесь нет никаких гарантий! - получить данные примерно так:

p p q q q 
p
q q q
p p p

Здесь произошло то, что после двух p записей q пишет три раза и добавляет новую строку. Теперь структура файла уже разбита с пятью записями в строке. Затем третий p пишется с новой строки. К сожалению, только одна запись в строке. Затем процессы возобновляют запись, и по чистой случайности две следующие строки записываются в правильном порядке.

Правильный способ - получить блокировку, чтобы только один процесс мог обновлять файл одновременно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...