У меня и моего коллеги есть проект по созданию драйвера, который обеспечит доступ к удаленному диску, как если бы он был локальным диском (используя SSH/SCP). Диск должен нормально восприниматься как диск, а операции могут быть ограничены простыми операциями с файлами (копировать, перемещать, удалять), без листинга файлов и т. д. Драйвер должен быть модулем ядра linux (может быть, не полностью..).
Нам удалось собрать некоторую информацию и идеи, и, может быть, кто-нибудь сможет их проверить или подтолкнуть нас в правильном направлении?
Мы подумали о том, чтобы разделить его на 2 составляющие:
- модуль ядра, реализующий виртуальный привод,
- демон пользовательского пространства, отвечающий за связь SSH/SCP,
потому что мы не можем представить реализацию SSH-связи в модуле ядра (ДА, это ВОЗМОЖНО, но ..).
Мы думаем, что для связи SSH/SCP можно использовать libssh. О реализации виртуальных дисков в модуле ядра мы нашли руководство.
Другой случай — связь между ядром и пользовательским пространством. Мы также нашли статью, в которой обсуждается это со многими возможностями, такими как сокеты UDP. или НЕТЛИНК.
С помощью этого решения мы могли бы забыть о любых вещах, связанных с SSH/SCP, в модуле ядра — это будет прозрачно для ядра.
Хорошо ли наше мышление? Может есть какие-то нюансы, которых мы не предусмотрели? Это правильный путь, или, может быть, есть лучший/более простой метод (но все еще связанный с ядром Linux, потому что это основная область проекта ;))? Какие идеи мы должны использовать? Ссылки приветствуются :)
РЕДАКТИРОВАНИЕ: это проект, который мы должны сделать для университетского класса, поэтому проблема не в том, чтобы найти уже реализованное решение, а в том, чтобы сделать свое собственное.