Детальная информация
| Название | NFS сервер в пользовательском пространстве Linux: выпускная квалификационная работа магистра: направление 09.04.04 «Программная инженерия» ; образовательная программа 09.04.04_01 «Технология разработки и сопровождения качественного программного продукта» = User-Space NFS Server in Linux |
|---|---|
| Авторы | Яровой Вадим Дмитриевич |
| Научный руководитель | Шошмина Ирина Владимировна |
| Организация | Санкт-Петербургский политехнический университет Петра Великого. Институт компьютерных наук и кибербезопасности |
| Выходные сведения | Санкт-Петербург, 2026 |
| Коллекция | Выпускные квалификационные работы ; Общая коллекция |
| Тематика | сетевая файловая система ; NFS ; user-space ; rust ; tokio ; virtual file system ; асинхронное программирование ; network file system ; asynchronous programming |
| Тип документа | Выпускная квалификационная работа магистра |
| Язык | Русский |
| Уровень высшего образования | Магистратура |
| Код специальности ФГОС | 09.04.04 |
| Группа специальностей ФГОС | 090000 - Информатика и вычислительная техника |
| DOI | 10.18720/SPBPU/3/2026/vr/vr26-4893 |
| Права доступа | Доступ по паролю из сети Интернет (чтение, печать, копирование) |
| Дополнительно | Новинка |
| Ключ записи | ru\spstu\vkr\45066 |
| Дата создания записи | 04.09.2026 |
Разрешенные действия
–
Действие 'Прочитать' будет возможно после подготовки администраторами необходимых файлов
Действие 'Загрузить' будет доступно, если вы выполните вход в систему или будете работать с сайтом на компьютере в другой сети
| Группа | Анонимные пользователи |
|---|---|
| Сеть | Интернет |
Данная работа посвящена решению проблемы создания безопасного, отказоустойчивого и удобного в поддержке сервера сетевой файловой системы (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.
| Место доступа | Группа пользователей | Действие |
|---|---|---|
| Локальная сеть ИБК СПбПУ | Все |
|
| Интернет | Авторизованные пользователи СПбПУ |
|
| Интернет | Анонимные пользователи |
|