Ошибка FUSE: конечная точка транспортного средства не подключена
Я пытаюсь реализовать файловую систему FUSE. Я получаю эту ошибку:
не удается получить доступ к MountDir: конечная точка транспорта не подключена.
Это соответствующие части программы. Существует два каталога MirrorDir
и MountDir
, которые существуют с тем же каталогом, что и весь код. Я вызываю программу следующим образом:
./myFS -o nonempty -o allow_other MirrorDir MountDir
Может ли кто-нибудь увидеть, что я делаю неправильно?
static struct fuse_operations xmp_oper = {
.getattr = xmp_getattr,
.readdir = xmp_readdir,
.open = xmp_open,
.read = xmp_read,
};
int main(int argc, char *argv[]) {
int fuse_stat;
char* mirrorDir;
mirrorDir = malloc(sizeof(strlen(argv[argc-2]+1)));
if (mirrorDir == NULL) {
perror("main calloc");
abort();
}
// Pull the rootdir out of the argument list and save it in my internal data
mirrorDir = realpath(argv[argc-2], NULL);
argv[argc-2] = argv[argc-1];
argv[argc-1] = NULL;
argc--;
// turn over control to fuse
fprintf(stderr, "about to call fuse_main\n");
fuse_stat = fuse_main(argc, argv, &xmp_oper, mirrorDir);
fprintf(stderr, "fuse_main returned %d\n", fuse_stat);
return fuse_stat;
}
Ответы
Ответ 1
Это обычно вызвано тем, что каталог монтирования остается установленным из-за сбоя вашей файловой системы. Перейдите в родительский каталог точки монтирования и введите fusermount -u YOUR_MNT_DIR
.
Если это не делает трюк, сделайте sudo umount -l YOUR_MNT_DIR
.
Ответ 2
Я установил файловую систему ssh (командная строка sshfs) и оставил ее установленной, и у меня была та же проблема, fusermount -u
решил мою проблему. Благодаря
Ответ 3
Вы можете проверить свой /etc/hosts, чтобы убедиться, что мастер node имеет полное имя. Подробнее в https://community.cloudera.com/t5/CDH-Manual-Installation/Setting-the-NameNode-port-8020-to-listen-outside-of-localhost/td-p/2257 и в Как настроить файл хостов для экосистемы Hadoop
Ответ 4
Перейдите в родительский каталог и обратно. Работал для меня.