作为普通用户,我如何卸载 s3fs 挂载?

作为普通用户,我如何卸载 s3fs 挂载?

我大量使用 S3。我有超过 40 个存储桶在客户端之间流动。我喜欢在 /etc/fstab 中列出它们,而且它们可以正常工作。以下是其中一个存储桶,仅供参考。

coteyrnet /mnt/S3/coteyrnet fuse.s3fs _netdev,use_cache=/tmp,use_rrs=1,allow_other,noauto,users 0 0

它安装得很好,但我卸载它时却花了很长时间。

第一个问题是:

umount: /mnt/S3/coteyrnet mount disagrees with the fstab

mtab 的相关部分是:

s3fs /mnt/S3/coteyrnet fuse.s3fs rw,noexec,nosuid,nodev,allow_other,user=coteyr 0 0

当运行不带参数的 mount 时,它会将挂载报告为:

s3fs on /mnt/S3/coteyrnet type fuse.s3fs (rw,noexec,nosuid,nodev,allow_other,user=coteyr)

除此之外,如果我sudo umount /mnt/S3/coteyrnet总是得到

umount: /mnt/S3/coteyrnet: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))

lsof | grep coteyrnet永远不会返回任何有价值的东西,fuser 也不会。

我的目标是让用户卸载工作正常进行。

无法通过 sudo 挂载的问题已解决。通过使用“use_cache”设置,文件实际上已打开,但不在挂载点下。这是该选项的一个警告。挂载点文件已关闭,但文件尚未传输到 S3。通过等待“一段时间”并重试,sudo 可以卸载。

答案1

与 dpb 合作后,我们确定该问题是一个错误,而不是缺乏知识或配置(我们无法修复)

第 309 期已向 s3fs 维护人员提交。

答案2

我认为 /etc/fstab 需要选项user。现在你说你有:

s3fs /mnt/S3/coteyrnet fuse.s3fs rw,noexec,nosuid,nodev,allow_other,user=coteyr 0 0

尝试将其更改user=coteyruser。这对我来说有效。当我尝试使用 指定用户时=,它基本上被忽略了。

请参阅以下输出的示例:

dpb@helo:crash$ mount /mnt/foo
dpb@helo:crash$ umount /mnt/foo
dpb@helo:crash$ grep /mnt/foo /etc/fstab
/dev/vgdata/lvol0 /mnt/foo ext4 defaults,user 0 2
dpb@helo:crash$

替代解决方案

如果此方法失败,或者您想要另一种方法。您可以设置一个 sudo 规则,允许在不使用密码的情况下挂载和卸载某些挂载。有些人会声称这是一种更安全的方法,但我不是安全专家。

有关 fuse.s3fs 的更多详细信息

看起来,以非超级用户身份执行 umount 操作要成功,需要与 mount 命令显示的内容相匹配。

在这种情况下,fstab 需要看起来像

s3fs   /mnt/S3/coteyrnet  fuse.s3fs  <options> 0 0

但是,我认为您仍然需要一种方法来指定您的唯一存储桶。也许可以尝试:

s3fs#coteyrnet  /mnt/S3/coteyrnet  fuse.s3fs  <options> 0 0

这可能足以欺骗 mount (我之前在几个地方见过这种情况,现在我开始明白为什么了)

相关内容