Позволяет ли NFS отключать / удалять открытые файлы, как в случае с локальными файловыми системами?
Причина, по которой я спрашиваю, заключается в том, что я разрабатываю что-то, что работает на нескольких серверах и может обращаться к NFS в качестве серверной части. Это несколько упрощает, если я могу удалить ссылку на открытый файл.
Это хорошая особенность файловых систем linux (unix?), Что вы можете отменить связь с открытым файлом. Он просто удаляет запись в каталоге. Файл по-прежнему доступен процессу, который держит его открытым, пока он открыт. После закрытия индексный дескриптор уничтожается.
Верна ли та же функциональность для файлов, открытых при монтировании NFS?
Короткий ответ да с оговорками.
Поскольку NFSv3 не имеет состояния, драйвер клиента NFS выполняет это с помощью так называемого «глупого переименования», когда удаленный файл переименовывается в нечто вроде .nfsXXXXXXXXXX. Обычно это работает, но есть несколько предостережений по сравнению с локальной файловой системой. Например, если клиент выйдет из строя, эти файлы .nfsXXXX не будут удалены, и вам придется очистить их вручную.
Я думаю, что с NFSv4.1 протокол имеет необходимые функции для реализации удаления при последнем закрытии без глупого переименования, но я не знаю, реализуют ли это какие-либо клиенты / серверы.