Как зарегистрировать тип файловой системы FUSE с помощью mount (8) и fstab? - PullRequest
30 голосов
/ 12 октября 2009

Я написал небольшую файловую систему на основе FUSE, и теперь единственная часть отсутствует: я хочу зарегистрировать ее с помощью fstab (5), чтобы автоматически смонтировать ее при запуске системы и / или вручную смонтировать с помощью mount /srv/virtual-db,Как я могу добиться этого?

Я знаю, я могу просто запустить /usr/bin/vdbfs.py /srv/virtual-db из некоторого сценария инициализации, но это не совсем красиво.

Извините, потому что это может быть не совсемвопрос программирования, но он тесно связан, так как упаковка и развертывание все еще является задачей программиста.

Ответы [ 4 ]

31 голосов
/ 12 октября 2009

Как правило, «регистрируется» новый тип файловой системы монтирования путем создания исполняемого файла mount.fstype.

$ ln -s /usr/bin/vdbfs.py /usr/sbin/mount.vdbfs

Если vdbfs.py принимает mount -иши аргументов (т.е. 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#.

19 голосов
/ 13 ноября 2011

Итак, чтобы уточнить ответ эфимента, есть два варианта:

  1. Редактировать /etc/fstab как это:

    # <file system>   <mount point>      <type>  <options>         <dump>  <pass>
    # ...
    vdbfs.py#<dev>    /srv/virtual-db    fuse    user,<other-opts>    0    0
    

    Или,

  2. Создайте исполняемый файл с префиксом «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», монтировать вашу файловую систему с помощью команды mount, а noauto указывает вашей файловой системе не монтировать автоматически при запуске. Если вы не укажете noauto, он будет автоматически подключен.

1 голос
/ 22 декабря 2012

Вы можете просто использовать тип файловой системы fuse. В моей системе работает:

smbnetfs    /media/netbios    fuse    defaults,allow_other    0    0

Другой пример:

sshfs#user@example.com:/    /mnt    fuse    user,noauto    0    0
0 голосов
/ 27 мая 2019

После многих исследований было найдено это решение для монтирования файловой системы fuse с регистрацией fstab. Я использовал fuse для s3bucket для монтирования на локальной машине с Linux.

  • .passwd-s3fs: содержит учетные данные для доступа к вашей учетной записи aws 1] Секретный ключ и 2] Ключ доступа.
  • uid: идентификатор пользователя. Вы можете набрать команду 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
...