Este é um bug estranho e eu não tenho certeza de onde ele está vindo. Aqui está uma rápida descrição do que estou fazendo.
Estou tentando montar uma unidade FUSE em uma instância do Amazon EC2 executando o Ubuntu 10.10 usando s3fs (FUSE over Amazon). O s3fs é compilado da fonte de acordo com as instruções, etc. Eu também adicionei uma entrada ao / etc / fstab para que a unidade seja montada na inicialização. Veja como é o /etc/fstab
:
# /etc/fstab: static file system information.
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
LABEL=uec-rootfs / ext4 defaults 0 0
/dev/sda2 /mnt auto defaults,nobootwait,comment=cloudconfig 0 2
/dev/sda3 none swap sw,comment=cloudconfig 0 0
s3fs#mybucket /mnt/s3/mybucket fuse default_acl=public-read,use_cache=/tmp,allow_other 0 0
A boa notícia é que isso funciona bem. Na reinicialização, a conexão é montada corretamente. Eu também posso fazer:
$ sudo umount /mnt/s3/mybucket
$ sudo mount -a
$ mountpoint /mnt/s3/mybucket
/mnt/s3/mybucket is a mountpoint
Ótimo, certo?
Bem, aqui está o problema. Estou usando o Fabric para automatizar o processo de criação e gerenciamento dessa instância. Percebi que estava recebendo essa mensagem de erro ao usar o Fabric para construir o s3fs e configurar o processo de montagem:
mountpoint: /mnt/s3/mybucket: Transport endpoint is not connected
Eu o isolei do problema e criei uma tarefa de malha que reproduz o problema:
def remount_s3fs():
sudo("mount -a")
O que faz:
[ec2-xx-xx-xx-xx.compute-1.amazonaws.com] Executing task 'remount_s3fs'
[ec2-xx-xx-xx-xx.compute-1.amazonaws.com] sudo: mount -a
[E sim, eu tinha certeza de desmontá-lo antes de executar esta tarefa.] Quando eu verifico a montagem usando o ponto de montagem, fico:
$ mountpoint /mnt/s3/mybucket
mountpoint: /mnt/s3/mybucket: Transport endpoint is not connected
Done.
Mas se eu executar sudo mount -a
na linha de comando, isso funciona. Hrm.
Aqui está a saída da tarefa fab novamente, desta vez no modo de depuração completo:
[ec2-xx-xx-xx-xx.compute-1.amazonaws.com] Executing task 'remount_s3fs'
[ec2-xx-xx-xx-xx.compute-1.amazonaws.com] sudo: sudo -S -p 'sudo password:' /bin/bash -l -c "mount -a"
Novamente, obtenho esse nó de extremidade de transporte não conectado ao erro. Eu também tentei copiar e colar o comando exato executado na minha sessão ssh (ou seja, sudo -S -p 'sudo password:' /bin/bash -l -c "mount -a"
) e funciona bem.
Então ... esse é o meu problema. Alguma idéia?