drd*_*man 33 linux filesystems mount gnu fuse
我已经编写了一个基于FUSE的小文件系统,现在唯一缺少的是我想用fstab(5)注册它以在系统启动时自动挂载它和/或用它手动挂载它mount /srv/virtual-db.我怎样才能做到这一点?
我知道,我可以/usr/bin/vdbfs.py /srv/virtual-db从一些初始化脚本运行,但这并不完美.
我很抱歉,因为这可能不是一个编程问题,但它是高度相关的,因为打包和部署仍然是程序员的工作.
eph*_*ent 33
通常,通过创建可执行文件,"注册"新的安装文件系统类型mount.fstype.
$ ln -s /usr/bin/vdbfs.py /usr/sbin/mount.vdbfs
如果vdbfs.py采用mount-ish参数(即dev path [-o opts]),则mount -t vdbfs使用vdbfs第3个字段fstab将起作用.如果没有,您可以创建一个包装器,它接受该表单的参数并将它们映射到您vdbfs.py需要的任何内容.
FUSE还应安装mount.fuse可执行文件; mount.fuse 'vdbfs.py#dev' path -o opts会继续打电话vdbfs.py dev path -o opts.在这种情况下,您可以使用fuse您的文件系统类型并为您的设备添加前缀vdbfs.py#.
ejm*_*ejm 20
因此,为了澄清ephemient的答案,有两种选择:
编辑/etc/fstab如下:
# <file system> <mount point> <type> <options> <dump> <pass>
# ...
vdbfs.py#<dev> /srv/virtual-db fuse user,<other-opts> 0 0
Run Code Online (Sandbox Code Playgroud)
要么,
创建一个前缀为"mount"的可执行文件.(确保它可以与mount类似的选项一起使用):
$ ln -s /usr/bin/vdbfs.py /usr/sbin/mount.vdbfs
Run Code Online (Sandbox Code Playgroud)
并编辑/etc/fstab如下:
# <file system> <mount point> <type> <options> <dump> <pass>
# ...
<dev> /srv/virtual-db vdbfs.py user,<other-opts> 0 0
Run Code Online (Sandbox Code Playgroud)关于启动时的自动安装和手动安装mount,这些user和noauto选项是相关的,并由保险丝本身完全支持,因此您不必自己实施.该user选项允许作为"fuse"组成员的非priveleged用户使用该mount命令装入您的文件系统,并noauto指示您的文件系统不会在启动时自动挂载.如果未指定noauto,则会自动挂载.
为了澄清 @patryk.beza 对已接受答案的评论,挂载 FUSE 文件系统的正确方法是将文件系统类型设置为fuse.<subtype>.
例如,要挂载s3fs-fuse实现(它不提供特定/sbin/mount.*包装器并通常使用s3fs用户命令来挂载 S3 存储桶),可以以 root 身份使用此命令:
mount -t fuse.s3fs bucket-name /path/to/dir -o <some,options>
Run Code Online (Sandbox Code Playgroud)
或以下行/etc/fstab:
bucket-name /path/to/dir fuse.s3fs <some,options> 0 0
Run Code Online (Sandbox Code Playgroud)
或此 SystemD 安装单元(例如/etc/systemd/system/path-to-dir.mount):
[Unit]
Description=S3 Storage
After=network.target
[Mount]
What=bucket-name
Where=/path/to/dir
Type=fuse.s3fs
Options=<some,options>
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
工作原理:mount当类型使用句点(即 )进行格式化时,识别“文件系统子类型”的概念<type>.<subtype>,以便将具有该格式的类型fuse.someimpl识别为 FUSE 安装助手的职责/sbin/mount.fuse。然后,FUSE 安装帮助程序将该someimpl部分解析为 FUSE 实现,其方式与原始答案中使用的格式相同#(我认为这只是名为 的程序的路径搜索<subtype>,但我对此不是 100% 确定) )。