J'essaie d'implémenter le système de fichiers Fuse. Je reçois cette erreur:
impossible d'accéder à MountDir: le noeud final de transport n'est pas connecté
Ce sont les parties pertinentes du programme. Il existe deux répertoires, MirrorDir
et MountDir
, qui existent avec le même répertoire que tout le code. J'appelle le programme comme ceci:
./myFS -o nonempty -o allow_other MirrorDir MountDir
Quelqu'un peut-il voir ce que je fais mal?
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;
}
Cela est généralement dû au fait que le répertoire de montage est laissé monté en raison d'un crash de votre système de fichiers. Accédez au répertoire parent du point de montage et entrez fusermount -u YOUR_MNT_DIR
.
Si cela ne fait pas l'affaire, faites Sudo umount -l YOUR_MNT_DIR
.
J'ai monté un système de fichiers ssh (ligne de commande sshfs) et l'ai laissé monté et j'ai eu le même problème, fusermount -u YOUR_MNT_DIR
a résolu mon problème. Merci
Vous pouvez vérifier votre/etc/hosts pour vous assurer que le nœud maître porte un nom complet. Plus de détails dans https://community.cloudera.com/t5/CDH-Manuel-Installation/Setting-the-NameNode-port-8020-to-listen-outen- of-localhost/td-p/2257 et dans Comment configurer le fichier hosts pour l'écosystème Hadoop
Aller au répertoire parent et revenir. Travaillé pour moi.