GNU/Linux >> Linux Esercitazione >  >> Linux

Come registrare il tipo di filesystem FUSE con mount (8) e fstab?

In generale, si "registra" un nuovo tipo di filesystem di montaggio creando un eseguibile mount.fstype .

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

Se vdbfs.py prende mount -ish argomenti (ad esempio dev path [-o opts] ), quindi mount -t vdbfs e usando vdbfs come terzo campo in fstab funzionerà. In caso contrario, puoi creare un wrapper che prende gli argomenti di quella forma e li mappa a qualunque sia il tuo vdbfs.py prende.

FUSE dovrebbe anche installare un mount.fuse eseguibile; mount.fuse 'vdbfs.py#dev' path -o opts andrà avanti e chiamerà vdbfs.py dev path -o opts . In tal caso, puoi utilizzare fuse come tipo di filesystem e anteponi al tuo dispositivo vdbfs.py# .


Quindi, per chiarire la risposta di ephemient, ci sono due opzioni:

  1. Modifica /etc/fstab come questo:

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

    Oppure,

  2. Crea un eseguibile con il prefisso "mount". (assicurandosi che possa essere utilizzato con mount -like opzioni):

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

    E modifica /etc/fstab come questo:

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

Per quanto riguarda il montaggio automatico all'avvio e il montaggio manuale con mount , il user e noauto le opzioni sono rilevanti e completamente supportate da fuse stesso, quindi non devi implementarle tu stesso. Il user l'opzione consente a un utente non privilegiato che è un membro del gruppo "fuse" di montare il filesystem con mount comando e noauto ordina al tuo filesystem di non montarsi automaticamente all'avvio. Se non specifichi noauto , verrà montato automaticamente.


Per chiarire il commento di @patryk.beza sulla risposta accettata, il modo corretto montare un file system FUSE è impostare il tipo di file system su fuse.<subtype> .

Ad esempio, per montare un'implementazione s3fs-fuse, che non fornisce uno specifico /sbin/mount.* wrapper e usa normalmente s3fs comando utente per montare i bucket S3, è possibile utilizzare questo comando come root:

mount -t fuse.s3fs bucket-name /path/to/dir -o <some,options>

o questa riga in /etc/fstab :

bucket-name /path/to/dir fuse.s3fs <some,options> 0 0

o questa unità di montaggio SystemD (ad esempio, /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

Come funziona:mount riconosce il concetto di "sottotipi di filesystem" quando il tipo è formattato con un punto (ad es. <type>.<subtype> ), in modo che un tipo con il formato fuse.someimpl è riconosciuta come responsabilità dell'helper di montaggio FUSE /sbin/mount.fuse . L'helper di montaggio FUSE risolve quindi someimpl parte dell'implementazione FUSE, allo stesso modo del # format è usato nella risposta originale (penso che questa sia solo una ricerca del percorso per un programma chiamato <subtype> , ma non ne sono sicuro al 100%.


Linux
  1. Come configurare LogAnalyzer con Rsyslog e MySQL

  2. SSHFS? Cos'è e come lo uso?

  3. Come montare e smontare le unità su Linux

  4. Come montare un filesystem, mappare gli ID utente?

  5. Montare un filesystem Cifs direttamente o tramite Fstab?

Come montare e smontare i file system in Linux

Come escludere file e directory con Rsync

Come gestire i file ISO su Linux con Mount, AcetoneISO e Furious

Come verificare se una partizione è montata come "noexec"?

Linux:come montare un filesystem remoto specificando un numero di porta?

Come attivare e montare 2 gruppi di volumi con gli stessi nomi in CentOS/RHEL