Что происходит в NFS, если 2 или более серверов пытаются одновременно написать один и тот же файл?

StackOverflow https://stackoverflow.com/questions/3832646

  •  26-09-2019
  •  | 
  •  

Вопрос

Я работаю над PHP WebApp, который делает автоматическое изменение размера изображений, и я думаю, о хранении кэшированных копий на установленном NFS NAS, поэтому для меня легко промыть кеш при обновлении изображений.

Единственное, что я беспокоюсь о том, это то, что происходит в целом с NFS, если 2 или более серверов в кластере пытаются создать один и тот же файл кэша изображения одновременно?

Существует довольно хороший шанс, что когда кэш получает покраснение для обновлений контента, что они могут столкнуться такими, но у меня нет большого способа проверить этот сценарий в разработке, потому что я работаю только на одной коробке.

Кто-нибудь с опытом на этом?

Это было полезно?

Решение

Это зависит от того, как вы открываете файл. Если вы откроете файл в режиме «Добавить», то UNIX / Linux фактически записан содержимое в кеш, пока не создаст символ нового строки, то он придерживается новой линии до конца файла (по записи Конец файла «Байтовый шаблон) и записывает новый« конец файла ». В этом случае, если два человека пытаются одновременно написать в тот же файл, то обе линии записи будут проходить, прикрепление одной строки за раз в том порядке, что они были получены. Таким образом, вы могли бы ожидать чего-то вроде:

This was the old contents
of the file
The first script added
The second script added
this line (script 1)
this line (script 2)

В редких шансах, что две команды «Write» приходят в одно и то же время (до наносекундной точности), то операционная система фактически создает состояние прерывания. Это зависит от ОС, как это обрабатывает это, но большинство только что создаст два случайных числа, чтобы решить, кто идет первым.

Если вы откроете файл в режиме «Написать» (скажем, вы хотите добавить контент до середины), то вам действительно нужно заблокировать файл для этого. Второй сценарий PHP бросит ошибку, говорящую, что она не может открыть файл.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top