我已经编写了一个基于FUSE的小文件系统,现在唯一缺少的是我想用fstab(5)注册它以在系统启动时自动挂载它和/或用{{1}手动挂载它}}。我怎样才能做到这一点?
我知道,我可以从一些初始化脚本运行mount /srv/virtual-db
,但这并不完全正常。
我很抱歉,因为这可能不是一个编程问题,但它是高度相关的,因为打包和部署仍然是程序员的工作。
答案 0 :(得分:31)
通常,通过创建可执行文件mount.fstype
来“注册”新的安装文件系统类型。
$ ln -s /usr/bin/vdbfs.py /usr/sbin/mount.vdbfs
如果vdbfs.py
需要mount
- ish参数(即dev path [-o opts]
),那么mount -t vdbfs
并使用vdbfs
作为fstab
中的第3个字段将工作。如果没有,您可以创建一个包装器,它接受该表单的参数并将它们映射到vdbfs.py
所需的任何内容。
FUSE还应安装mount.fuse
可执行文件; mount.fuse 'vdbfs.py#dev' path -o opts
会继续拨打vdbfs.py dev path -o opts
。在这种情况下,您可以使用fuse
作为文件系统类型,并使用vdbfs.py#
为设备添加前缀。
答案 1 :(得分:19)
因此,为了澄清ephemient的答案,有两种选择:
像这样编辑/etc/fstab
:
# <file system> <mount point> <type> <options> <dump> <pass>
# ...
vdbfs.py#<dev> /srv/virtual-db fuse user,<other-opts> 0 0
或者,
创建一个前缀为“mount”的可执行文件。 (确保它可以使用
与mount
- 类似选项):
$ ln -s /usr/bin/vdbfs.py /usr/sbin/mount.vdbfs
并像这样编辑/etc/fstab
:
# <file system> <mount point> <type> <options> <dump> <pass>
# ...
<dev> /srv/virtual-db vdbfs.py user,<other-opts> 0 0
关于启动时自动安装和使用mount
手动安装,user
和noauto
选项是相关的,并且完全由保险丝支持,因此您不必自己实现它们。 user
选项允许作为“fuse”组成员的非priveleged用户使用mount
命令装入您的文件系统,noauto
指示您的文件系统不会在启动时自动挂载。如果您未指定noauto
,它将自动挂载。
答案 2 :(得分:3)
要弄清@ patryk.beza对已接受答案的评论,挂载FUSE文件系统的正确方法是通过将文件系统类型设置为fuse.<subtype>
。
例如,要挂载s3fs-fuse实现,该实现不提供特定的/sbin/mount.*
包装器,并且通常使用s3fs
用户命令来挂载S3存储桶,则可以将该命令用作根:
mount -t fuse.s3fs bucket-name /path/to/dir -o <some,options>
或/etc/fstab
中的这一行:
bucket-name /path/to/dir fuse.s3fs <some,options> 0 0
或此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
这是如何工作的:mount
在使用句点(即<type>.<subtype>
)对类型进行格式化时认识到“文件系统子类型”的概念,从而使格式为fuse.someimpl
的类型为被认为是FUSE挂载助手/sbin/mount.fuse
的责任。然后,FUSE安装帮助程序将someimpl
部分解析为FUSE实现,就像在原始答案中使用#
格式一样(我认为这只是对名为{的程序的路径搜索{1}},但我不确定100%。
答案 3 :(得分:1)
您可以使用fuse文件系统类型。以下适用于我的系统:
smbnetfs /media/netbios fuse defaults,allow_other 0 0
另一个例子:
sshfs#user@example.com:/ /mnt fuse user,noauto 0 0
答案 4 :(得分:0)
经过大量研究后,发现此解决方案可通过输入fstab
来装入保险丝文件系统。我正在使用s3bucket的保险丝来安装在本地linux机器上。
.passwd-s3fs
:包含用于访问aws帐户1]密钥和2]访问密钥的凭据。uid
:用户ID。您可以输入linux命令id
并获得uid 语法:
s3fs#<Bucket_Name> <Mounted_Direcotry_Path> fuse _netdev,allow_other,passwd_file=/home/ubuntu/.passwd-s3fs,use_cache=/tmp,umask=002,uid=<User_Id> 0 0
示例:
s3fs#myawsbucket /home/ubuntu/s3bucket/mys3bucket fuse _netdev,allow_other,passwd_file=/home/ubuntu/.passwd-s3fs,use_cache=/tmp,umask=002,uid=1000 0 0
要安装,需要运行以下命令。
mount -a
要检查铲斗是否已正确安装,请使用以下命令来检查其中是否显示了所有安装点。
df -h