Cíl
Naučte se, jak využít démona autofs k automatickému připojení zařízení a vzdálených sdílených složek.
Požadavky
- Oprávnění uživatele root k instalaci balíčku autofs a úpravě konfiguračních souborů
Obtížnost
SNADNÉ
Úvod
Ruční připojení a odpojení zařízení, jako jsou externí jednotky USB nebo vzdálené NFS
nebo Samba
sdílení může být únavné úkoly při správě počítače. autofs
démon nám může pomoci automaticky připojit souborový systém v případě potřeby a odpojit jej po určité době. V tomto tutoriálu uvidíme základní koncept související s automounterem a jak jej nakonfigurovat.
Instalace Autofs
První věc, kterou musíte udělat, je nainstalovat autofs
balík. Je k dispozici v oficiálních repozitářích CentOS7 a Rhel7, proto stačí použít yum
správce balíků, jak jej získat:
$ sudo yum install autofs
Dalším krokem je spuštění autofs
démona a povolte jej při spouštění:
$ sudo systemctl enable --now autofs
Konfigurace démona autofs
Démon autofs se konfiguruje manipulací s některými soubory, z nichž každý má svůj vlastní specifický účel. V zásadě musíme dát démonovi nějaké instrukce, abychom mu dali vědět, jak by měl spravovat přípojné body a zařízení (to je to, čemu říkáme map
) a volitelně sadu možností, které lze použít ke změně jeho chování. Podívejme se, co jsou tyto konfigurační soubory a jaká je jejich role.
Soubor /etc/sysconfig/autofs
Soubor /etc/sysconfig/autofs
file je hlavní konfigurační soubor pro autofs
démona a obsahuje jeho globální nastavení. Toto je obsah souboru ve výchozí instalaci CentOS 7.5:
# # Init syatem options # # If the kernel supports using the autofs miscellanous device # and you wish to use it you must set this configuration option # to "yes" otherwise it will not be used. # USE_MISC_DEVICE="yes" # # Use OPTIONS to add automount(8) command line options that # will be used when the daemon is started. # #OPTIONS="" #
Chování démona můžeme upravit odstraněním komentáře na řádku 13 a předáním argumentů příkazového řádku ve formě řetězce jako hodnotu OPTIONS
proměnná.
Udělejme příklad:řekněme, že chceme změnit výchozí časový interval, po kterém by měl démon automaticky odpojit souborový systém:výchozí hodnota je 300
sekund nebo 5 minut. Přečtěte si manuál autofs (automount(8)
), vidíme, že ke změně tohoto parametru bychom měli použít --timeout
volba, která bere jako parametr časový interval vyjádřený v seconds
:
-t , --timeout Set the global minimum timeout, in seconds, until directories are unmounted. The default is 10 minutes. Setting the timeout to zero disables umounts completely. The internal program default is 10 minutes, but the default installed configuration overrides this and sets the timeout to 5 minutes to be consistent with earlier autofs releases.
Řekněme například, že chceme změnit výchozí časový limit pro odpojení na 10 minut, takto bychom měli změnit /etc/sysconfig/autofs
soubor:
OPTIONS="--timeout=600"
Po uložení změn bychom měli restartovat démona, aby se nová konfigurace projevila. Můžeme vidět, jak byla nová možnost časového limitu přijata, když zkontrolujeme stav démona pomocí systemctl
:
$ systemctl status autofs autofs.service - Automounts filesystems on demand [...] CGroup: /system.slice/autofs.service └─6452 /usr/sbin/automount --timeout=600 --foreground --dont-check-daemon [...]
Soubor /etc/auto.master
auto.master
soubor je velmi důležitý, protože obsahuje automounter master map
. Každá mapa spojuje bod připojení s konfiguračním souborem, kde jsou popsány souborové systémy, které se mají připojit, takže v podstatě popisuje jinou mapu. Mapa je vytvořena pomocí následující syntaxe:
<mountpoint> <configuration file> <options>
Konfigurace říká démonovi, že daný mountpoint
je spravováno mapami nastavenými v daném configuration file
, použitím poskytnutých voleb, které mohou přepsat ty globální (to může být užitečné například pro poskytnutí specifického časového limitu odpojení pro každý přípojný bod). Podívejme se na konkrétní příklad:když se podíváme na řádek 7 souboru, můžeme vidět následující mapu:
/misc /etc/auto.misc
Tato konfigurace určuje, že /misc
mountpoint zajímá mapování popsaná v /etc/auto.misc
soubor. Podívejme se, jak jsou tyto mapy nakonfigurovány, když se na to podíváme.
Soubor /etc/auto.misc
Jak jsme viděli v /etc/auto.master
soubor, /misc
přípojný bod je spojen s /etc/auto.misc
konfigurační soubor. Nyní to prozkoumáme, abychom pochopili, jak je definována mapa pro zařízení. Toto je výchozí obsah souboru:
# # This is an automounter map and it has the following format # key [ -mount-options-separated-by-comma ] location # Details may be found in the autofs(5) manpage cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom [...]
Syntaxe použitá pro konfiguraci je následující:
<key> <mount options> <filesystem>
První věc, kterou musíme specifikovat, je key
. Hodnota tohoto parametru bude použita v případě indirect maps
(za minutu vytvoříme jiný typ map) jako název podadresáře, který bude vytvořen, pokud neexistuje, pod hlavním přípojným bodem, což je v tomto případě /misc
. /dev/cdrom
zařízení, bude proto automaticky připojeno k /misc/cd
adresář.
Druhým prvkem, který je třeba poskytnout, je seznam možností připojení, které by měly být použity:v tomto příkladu -fstype
volba byla použita k určení typu souborového systému spolu s ro
, nosuid
a nodev
.
Nakonec musíme určit umístění souborového systému. V tomto případě, protože se jedná o místní cestu, musí mít předponu :
znak (dvojtečka).
V případě vzdáleného NFS
sdílet, napsali bychom 192.168.1.39:/srv/nfs_share
místo toho, kde 192.168.1.39
je adresa vzdáleného počítače (lze použít i název hostitele) a /srv/nfs_share
je cesta ke sdílenému adresáři na něm.
Když odkazujeme na sdílení samby, měli bychom místo toho uvést -fstype=cifs
jako volbu specifikující ip vzdáleného počítače a cestu ke sdílenému adresáři v následujícím formátu:
://192.168.1.39/srv/samba_share
Nepřímé, přímé a hostitelské mapy
Zmínili jsme indirect map
dříve, podívejme se nyní podrobně na různé typy map. Můžeme použít tři druhy map:direct
, indirect
a hostitelské mapy:příklad indirect map
je to, co jsme právě viděli v souboru /etc/auto.master pro /misc
bod připojení.
Mapa se nazývá nepřímá, protože key
parametr zadaný v konfiguračním souboru (/etc/auto.misc
v tomto případě) spojený s bodem připojení (/etc/misc
), bude použit jako název adresáře vzhledem k tomuto bodu připojení, kde je souborový systém (:/dev/cdrom
v našem příkladu) bude připojen.
direct map
, je v souboru auto.master vždy specifikován s následující syntaxí:
/- /etc/auto.misc
Když /-
se používá jako přípojný bod v mapě, to znamená, že používáme přímou mapu. V tomto případě key
prvek syntaxe použité v konfiguračním souboru spojeném s bodem připojení, musí být absolutní cesta. Proto bychom ve výše uvedeném příkladu napsali:
/cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
Konečně můžeme najít host map
příklad v souboru /etc/auto.master na řádku 13:
/net -hosts
Taková mapa je definována standardně; jak to funguje? Když je zadána mapa hostitelů, automounter vytvoří podadresář pod zadaným bodem připojení (/net
v tomto případě) pro každý počítač uvedený v /etc/hosts
který exportuje NFS
podíl. To je možné díky /etc/auto.net
skript, který nyní prozkoumáme. Každý ze sdílených adresářů bude standardně připojen s nosuid
a nodev
možnosti.
Skripty /etc/auto.net a /etc/auto.smb
autofs
obsahuje dva velmi užitečné skripty instalace:/etc/auto.net
a /etc/auto.smb
. Tyto skripty jsou v podstatě obaly kolem, respektive showmount
a smbclient
programy, které se používají k objevování dostupných sdílení NFS a samba. Budou produkovat výsledky ve formátu, který může použít automounter.
/etc/auto.net
skript lze použít k získání přehledu a čtení sdílených položek NFS. Skript můžeme vyvolat zadáním názvu hostitele nebo IP adresy serveru, který chceme hledat jako argument:
$ sudo /etc/auto.net 192.168.1.39
Nyní si představte, že se najde podíl. Příkaz vrátí výstup podobný tomuto:
/shared 192.168.1.39:/shared
To by znamenalo, že na počítači s IP 192.168.1.39 by /shared
adresář je sdílen přes NFS. Na základě hosts map
našli jsme v souboru /etc/auto.master, že budeme mít přístup ke sdílené složce na adrese /net/192.168.1.39/shared
. Je to proto, jak jsme si řekli dříve, při použití mapy hostitelů je pro každý počítač v souboru /etc/hosts exportující sdílenou složku NFS vytvořen podadresář pod /net.
Soubor /etc/auto.smb
funguje podobným způsobem. Pokud chceme, aby byly sdílené položky samby v naší síti automaticky připojeny pomocí automatického připojovače, stejně jako se to děje u sdílených složek NFS, první věc, kterou musíme udělat, je přidat tuto mapu do /etc/auto.master
soubor:
/cifs /etc/auto.smb
Po přidání mapy bychom měli restartovat démona:
sudo systemctl restart autofs
V tuto chvíli díky /etc/auto.smb
skript, pro každý počítač exportující jeden nebo více sdílených smb v naší síti bude vytvořen adresář pod /cifs
. Představte si například, že na počítači s IP 192.168.122.32 máme /srv/samba
adresář sdílený přes sambu. Pokud to chceme ověřit, můžeme spustit /etc/auto.smb
skript proti ip toho stroje. Zde je výstup:
$ /etc/auto.smb 192.168.122.32 -fstype=cifs,guest \ "/sambadir" "://192.168.122.32/sambadir"
Jak již bylo řečeno, skript je obalem smbclient
, a vytváří výstup, který může být použit automounterem. Sdílený adresář bude dostupný v našem lokálním souborovém systému v automaticky vytvořeném /cifs/192.168.122.32/
adresář:
$ ls /cifs/192.168.122.32 sambadir
Léné připojování a odpojování
K optimalizaci počtu vytvořených přípojných bodů používá automounter techniku, která se nazývá lazy mounting
. Místo toho, aby bylo zařízení připojováno, jakmile bude dostupné nebo objeveno, počká, dokud se uživatel nepokusí o přístup k souborovému systému:teprve potom se provede operace připojení. Totéž se stane pro proces odpojení:zařízení se automaticky odpojí po zadaném časovém limitu.