Моделирование блочных устройств Linux и Fuse

Мой проект включает в себя моделирование блочного устройства удаленным хостом.

Для тестирования я использую FUSE, моя файловая система представляет собой простое изменение примера приложения «hello», где вместо возврата постоянной строки я просто читаю данные непосредственно из файла.

Когда я пытаюсь нормально смонтировать файл (mount -o loop=/dev/loop1 ), он работает хорошо. Когда я загружаю fuse и открываю через него этот файл, все обычные операции с файлами работают. Но установка завершается с ошибкой «Отказано в доступе».

У кого-нибудь есть идеи, откуда берется «отказано в доступе»?

Любые другие методы позволят мне создать виртуальное устройство (поддерживающее только блочный доступ) в пользовательском пространстве, которое можно будет монтировать?

заранее спасибо


person Boris    schedule 27.10.2009    source источник
comment
Какой дистрибутив вы используете для разработки? Это может быть так же просто, как добавить пользователя в группу «предохранителей».   -  person Tim Post♦    schedule 27.10.2009
comment
Ubuntu 9. Монтирование с правами root.   -  person Boris    schedule 28.10.2009


Ответы (3)


Предположительно, проблема в том, что файловая система FUSE не поддерживает функции, необходимые для ее монтирования в цикле.

Рассматривали ли вы вместо этого использование сетевого блочного устройства, такого как цель NBD или iSCSI?

person MarkR    schedule 27.10.2009
comment
К сожалению, это не подходит, поскольку NBD-сервер сам будет удовлетворять запросы на блокировку. Пока мне нужно мое приложение для предоставления блоков. - person Boris; 28.10.2009
comment
Ваше приложение может предоставлять блоки, реализуя сервер NBD или цель iscsi; затем вы можете использовать существующие драйверы ядра NBD или iscsi, чтобы сделать его доступным по сети, а затем смонтировать его. - person MarkR; 29.10.2009
comment
Я ошибочно предположил, что написать свой собственный NBD-сервер будет слишком сложно. Только что нашел черновик nbd-сервера на питоне: lists.canonical. org/pipermail/kragen-hacks/2004-May/000397.html Идеально подходит для моего прототипа в эксперименте с Python Спасибо! - person Boris; 29.10.2009

Вы выполняете с правами root. Вы можете отследить программу с помощью «strace», а затем проверить, где именно это не удается.

person subbul    schedule 27.10.2009

Команда mount — это настоящий ад, когда она начинает печатать ошибки. Попробуйте "-v", но чаще всего дополнительный вывод не поможет :(

person Aaron Digulla    schedule 27.10.2009
comment
К сожалению, -v не показывает абсолютно никаких проблем, пока не будет отказано в ужасном разрешении. - person Boris; 28.10.2009