Сетевая файловая система


Сетевая файловая система ( NFS ) — это протокол распределенной файловой системы, первоначально разработанный Sun Microsystems (Sun) в 1984 году [1], позволяющий пользователю клиентского компьютера получать доступ к файлам через компьютерную сеть, подобно тому, как осуществляется доступ к локальному хранилищу. NFS, как и многие другие протоколы, основан на системе удаленного вызова процедур открытых сетевых вычислений (ONC RPC). NFS — это открытый стандарт IETF, определенный в запросе комментариев (RFC), позволяющий любому реализовать этот протокол.

Sun использовала версию 1 только для собственных экспериментальных целей. Когда команда разработчиков внесла существенные изменения в NFS версии 1 и выпустила ее за пределами Sun, они решили выпустить новую версию как v2, чтобы можно было протестировать взаимодействие версий и откат версии RPC. [2] [3]

Версия 2 протокола (определенная в RFC 1094, март 1989 г.) первоначально работала только через протокол пользовательских дейтаграмм (UDP). Его разработчики намеревались сохранить серверную часть без сохранения состояния , с блокировкой (например), реализованной вне основного протокола. В создании NFS версии 2 участвовали Рассел Сэндберг , Боб Лайон , Билл Джой , Стив Клейман и другие. [1] [4]

Интерфейс виртуальной файловой системы допускает модульную реализацию, отраженную в простом протоколе. К февралю 1986 года были продемонстрированы реализации для таких операционных систем, как System V Release 2, DOS и VAX/VMS с использованием Eunice . [4]NFSv2 позволяет читать только первые 2 ГБ файла из-за 32-битных ограничений.

Первое предложение NFS версии 3 в компании Sun Microsystems было создано вскоре после выпуска NFS версии 2. Основной мотивацией была попытка смягчить проблему производительности операции синхронной записи в NFS версии 2. [6] К июлю 1992 года реализация была реализована . практика устранила многие недостатки NFS версии 2, оставив насущной проблемой только отсутствие поддержки больших файлов (64-битные размеры файлов и смещения). Это стало острой проблемой для Digital Equipment Corporation с появлением 64-битной версии Ultrix для поддержки их недавно выпущенного 64-битного RISC- процессора Alpha 21064 . На момент выпуска версии 3 поставщики поддерживали TCP какПротокол транспортного уровня начал расти. Хотя несколько поставщиков уже добавили поддержку NFS версии 2 с TCP в качестве транспорта, Sun Microsystems добавила поддержку TCP в качестве транспорта для NFS и в то же время добавила поддержку версии 3. Использование TCP в качестве транспорта с использованием NFS через глобальную сеть . более осуществимо и позволяло использовать большие размеры передачи для чтения и записи, превышающие предел в 8 КБ, установленный протоколом пользовательских дейтаграмм .

WebNFS был расширением NFSv2 и NFSv3, позволяющим ему работать за ограничительными брандмауэрами без сложностей протоколов Portmap и MOUNT. WebNFS имел фиксированный номер порта TCP/UDP (2049), и вместо того, чтобы требовать от клиента связываться со службой MOUNT RPC для определения начального дескриптора файла каждой файловой системы, он ввел концепцию общедоступного дескриптора файла ( нулевой для NFSv2, нулевой длины). для NFSv3), который можно использовать в качестве отправной точки. Оба эти изменения позже были включены в NFSv4.