Можно ли отсоединить открытые файлы на подключенных томах NFS, в то время как приложения, в которых они по-прежнему открыты для чтения / записи?


9

Позволяет ли NFS отсоединять / удалять открытые файлы, как я могу это делать с локальными файловыми системами?

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

Это хорошая особенность файловых систем linux (unix?), Позволяющая отсоединить открытый файл. Это просто удаляет запись каталога. Файл все еще доступен для процесса, который держит его открытым, пока он открыт. После закрытия инод уничтожается.

Применима ли та же функциональность к файлам, открытым на монтируемых NFS?


Вы можете перефразировать (чтобы не понизить число голосов), на первый взгляд кажется, что вы спрашиваете, можете ли вы удалить файлы, используя NFS, что меня весьма озадачило, почему вы задаете такой простой вопрос с количеством баллов, которые вы иметь. :-)
Red Tux

Ответы:


9

Краткий ответ - да с оговорками.

Поскольку NFSv3 не имеет состояния, драйвер клиента NFS выполняет это с помощью так называемого «глупого переименования», когда удаленный файл переименовывается во что-то вроде .nfsXXXXXXXXXX. Это обычно работает, но есть несколько предостережений по сравнению с локальной файловой системой. Например, в случае сбоя клиента эти файлы .nfsXXXX не будут удалены, и вам придется их очистить вручную.

Я думаю, что в NFSv4.1 протокол обладает необходимыми функциями для реализации delete-on-last-close без глупого переименования, но я не знаю, реализуют ли еще клиенты / сервер это.


Следует отметить, что это работает только тогда, когда файл открывается на том же клиенте, который его отменяет, поскольку NFS не имеет состояния.
Квентин Касасновас
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.