Details

Title NFS сервер в пользовательском пространстве Linux: выпускная квалификационная работа магистра: направление 09.04.04 «Программная инженерия» ; образовательная программа 09.04.04_01 «Технология разработки и сопровождения качественного программного продукта» = User-Space NFS Server in Linux
Creators Яровой Вадим Дмитриевич
Scientific adviser Шошмина Ирина Владимировна
Organization Санкт-Петербургский политехнический университет Петра Великого. Институт компьютерных наук и кибербезопасности
Imprint Санкт-Петербург, 2026
Collection Выпускные квалификационные работы ; Общая коллекция
Subjects сетевая файловая система ; NFS ; user-space ; rust ; tokio ; virtual file system ; асинхронное программирование ; network file system ; asynchronous programming
Document type Master graduation qualification work
Language Russian
Level of education Master
Speciality code (FGOS) 09.04.04
Speciality group (FGOS) 090000 - Информатика и вычислительная техника
DOI 10.18720/SPBPU/3/2026/vr/vr26-4893
Rights Доступ по паролю из сети Интернет (чтение, печать, копирование)
Additionally New arrival
Record key ru\spstu\vkr\45066
Record create date 9/4/2026

Allowed Actions

Action 'Read' will be available if administrator prepare required files

Action 'Download' will be available if you login or access site from another network

Group Anonymous
Network Internet

Данная работа посвящена решению проблемы создания безопасного, отказоустойчивого и удобного в поддержке сервера сетевой файловой системы (NFS). Существующие решения обладают рядом критических недостатков. Референсные реализации на уровне ядра операционной системы, такие как knfsd, обеспечивают высокую производительность, однако очень сложны в разработке и сопровождении, а любая программная ошибка в их сетевом стеке может привести к критическому сбою --- kernel panic всей системы. Альтернативные серверы, работающие в пользовательском пространстве, например, NFS-Ganesha, написаны на языке C, слабо поддерживаются, их код монолитен, обладает низким уровнем тестового покрытия, что ведёт к большому числу накопившихся ошибок. В рамках данной работы предложена новая реализация NFS-сервера в пользовательском пространстве, разработанная на системном языке программирования Rust. Использование Rust позволяет обеспечить скорость работы, исключив при этом целый класс уязвимостей, связанных с ручным управлением памятью, а также снизить сложность поддержки кодовой базы. Проект обладает модульной архитектурой и высоким покрытием тестами, включая методы фаззинг-тестирования. В ходе практической реализации был создан полностью асинхронный сервер протокола NFS версии 3 на базе фреймворка Tokio. Разработаны модули для парсинга пакетов RPC и XDR методом нулевого копирования данных, созданы интерфейсы абстрактной виртуальной файловой системы и протокола монтирования MOUNT, предоставлены их эталонные реализации. Кроме того, проведены нагрузочные испытания полученной программы в сравнении с существующим сервером NFS-Ganesha при работе поверх базовой локальной файловой системы ext4. Результаты сравнительного анализа позволили выявить узкие места при обработке данных малого объема и сформулировать конкретные пути для дальнейшей оптимизации проекта.

This work addresses the problem of creating a secure, fault-tolerant, and highly maintainable NFS server. Existing solutions possess significant drawbacks. Kernel-space implementations, such as knfsd, offer high performance but are notoriously difficult to develop and maintain; moreover, any software bug in the network protocol can cause a fatal crash (kernel panic) of the entire operating system, which is unacceptable in enterprise storage environments. On the other hand, existing user-space alternatives, like NFS-Ganesha, are written in C, suffer from stagnant active development, monolithic architecture, poor test coverage, and a large number of unresolved bugs. To overcome these limitations, this thesis presents the development of a novel user-space NFS server written in the Rust systems programming language. The use of Rust eliminates entire classes of memory-safety vulnerabilities, ensures high performance, and dramatically reduces codebase maintenance complexity. The formulated solution emphasizes reliability through a highly modular architecture and robust test coverage, augmented by fuzz testing techniques. The practical implementation resulted in a fully asynchronous NFS version 3 server powered by the Tokio framework. Efficient zero-copy mechanisms for parsing RPC and XDR packets were developed, alongside a generic Virtual File System abstraction layer and the MOUNT protocol with their respective implementations. Finally, comprehensive load testing was conducted to evaluate the performance of the developed application against the existing NFS-Ganesha server running on a base local ext4 file system. The comparative analysis provided insights into the systems behavior, identified bottlenecks in processing small data blocks, and outlined practical strategies for future performance optimization.

Network User group Action
ILC SPbPU Local Network All
Download
Internet Authorized users SPbPU
Download
Internet Anonymous
...