Co je to NFS?
Network File System (NFS) je jedním z nejstarších produktů pro sdílení počítačových souborů, které dnes existují. Stále je nejoblíbenější pro sdílení adresářů souborů mezi systémy UNIX a Linux. NFS umožňuje serverům určit konkrétní adresáře, které je zpřístupní určeným hostitelům, a poté umožňuje klientským systémům připojit se k těmto adresářům jejich místním připojením.
NFS může být zabezpečeno pomocí pravidel firewallu (iptables), TCP wrapperů (pro povolení a odepření přístupu hostitele) a SELinux (pro omezení toho, jak mohou protokoly pro sdílení souborů sdílet prostředky NFS). Ačkoli byl NFS ve své podstatě nezabezpečený, když byl vytvořen (data jsou sdílena nešifrovaná a přístup uživatelů je poměrně otevřený), funkce NFS verze 4 pomohly zlepšit celkové zabezpečení NFS.
Co jsou NFS Server a procesy RPC
Spuštěním služby nfs-server se spustí server NFS a další procesy RPC potřebné ke zpracování požadavků na sdílené systémy souborů NFS. Můžete použít krátký název „nfs “ spíše než „nfs-server “ při spuštění služby. Příklad:
# systemctl start nfs
Toto je proces serveru NFS, který implementuje část služby NFS na úrovni uživatele. Hlavní funkcionalitu má na starosti modul jádra nfsd. Program uživatelského prostoru pouze specifikuje, na jakém druhu soketů server jádra naslouchá, jaké verze NFS podporuje a kolik vláken jádra nfsd používá. Pomocí příkazu ps –e zobrazíte počet běžících vláken.
# ps -ef | grep nfs root 9093 2 0 11:21 ? 00:00:00 [nfsd4_callbacks] root 9099 2 0 11:21 ? 00:00:00 [nfsd] root 9100 2 0 11:21 ? 00:00:00 [nfsd] root 9101 2 0 11:21 ? 00:00:00 [nfsd] root 9102 2 0 11:21 ? 00:00:00 [nfsd] root 9103 2 0 11:21 ? 00:00:00 [nfsd] root 9104 2 0 11:21 ? 00:00:00 [nfsd] root 9105 2 0 11:21 ? 00:00:00 [nfsd] root 9106 2 0 11:21 ? 00:00:00 [nfsd]
Počet vláken nfsd ke spuštění je definován v /proc/fs/nfsd/threads soubor. V tomto příkladu je zadáno 8 vláken nfsd:
# cat /proc/fs/nfsd/threads 8
Spuštění služby nfs-server také spustí procesy RPC. K zobrazení názvů procesů RPC můžete použít příkaz ps –e.
# ps -e | grep -i rpc 177 ? 00:00:00 rpciod 9080 ? 00:00:00 rpc.statd 9081 ? 00:00:00 rpc.idmapd 9082 ? 00:00:00 rpcbind 9083 ? 00:00:00 rpc.mountd 9084 ? 00:00:00 rpc.rquotad
rpc.statd
Tento proces implementuje protokol RPC Network Status Monitor (NSM), který klienty NFS upozorní, když je server NFS restartován, aniž by byl řádně spuštěn. Toto se nepoužívá s NFSv4.
rpc.mountd
Toto je démon připojení NFS, který implementuje požadavky na připojení od klientů NFSv3 na straně serveru. Zkontroluje, zda je požadovaná sdílená složka NFS aktuálně exportována serverem NFS a zda k ní má klient povolen přístup. Pro NFSv4 je k nastavení exportů vyžadován démon rpc.mountd pouze na serveru NFS.
rpc.idmapd
To poskytuje NFSv4 klienta a server upcalls, která mapují mezi on-the-wire názvy NFSv4 (což jsou řetězce ve tvaru uživatel@doména) a místní UID a GID. Aby idmapd fungoval s NFSv4, musí být nakonfigurován /etc/idmapd.conf. Tato služba je vyžadována pro použití s NFSv4, i když ne v případě, že všichni hostitelé sdílejí stejný název domény DNS.
rpc.rquotad
Tento proces poskytuje informace o uživatelských kvótách pro vzdálené uživatele. Spouští se automaticky službou nfs a nevyžaduje uživatelskou konfiguraci. Výsledky jsou používány příkazem kvóty k zobrazení uživatelských kvót pro vzdálené systémy souborů a příkazem edquota k nastavení kvót pro vzdálené systémy souborů.
uzamčeno
Toto je vlákno jádra, které běží na klientech i serverech. Implementuje protokol Network Lock Manager (NLM), který umožňuje klientům NFSv3 zamykat soubory na serveru. Spouští se automaticky při každém spuštění serveru NFS a při každém připojení souborového systému NFS.
nfslock
Spuštěním této služby se spustí procesy RPC, které klientům NFS umožňují uzamknout soubory na serveru.
Jak nakonfigurovat server NFS a klienta NFS v CentOS/RHEL?
Přečtěte si prosím níže uvedené příspěvky pro konfiguraci serverů NFS a klientských počítačů.
Průvodce NFS pro začátečníky v CentOS / RHELCentOS / RHEL 7 :Konfigurace serveru NFS a klienta NFS
Co jsou konfigurační soubory pro NFS server?
Primární konfigurace serveru NFS je soubor /etc/exports. Toto je soubor, který používáte k určení, které adresáře chcete sdílet s klienty NFS. Syntaxe tohoto souboru je:
Directory hostname(options)
Hodnota Directory by měla být nahrazena názvem adresáře, který chcete sdílet (například /usr/share/doc). Hodnota hostname by měla být název hostitele klienta, který lze přeložit na adresu IP. Hodnota options se používá k určení, jak má být prostředek sdílen.
Například následující záznam v souboru /etc/exports by sdílel adresář /usr/share/doc s klientem NFS client01 (s možnostmi čtení-zápis) a klientem NFS client02 (s možností pouze pro čtení ):
# vi /etc/exports /usr/share/doc client01(rw) client02(ro)
Všimněte si, že mezi názvem/volbami client01 a client02 je mezera, ale žádná mezera mezi názvem hostitele a jeho odpovídající volbou.
Pochopení souboru /etc/exportsJaké jsou nejběžněji používané možnosti sdílení NFS v /etc/exports
Existuje mnoho různých možností sdílení NFS, včetně těchto:
- rw :Sdílet jako čtení i zápis. Mějte na paměti, že stále platí normální oprávnění systému Linux. (Všimněte si, že toto je výchozí možnost.)
- ro :Sdílet pouze pro čtení.
- synchronizovat :Změny dat souborů se na disku provádějí okamžitě, což má dopad na výkon, ale je méně pravděpodobné, že povede ke ztrátě dat. U některých distribucí je to výchozí.
- asynchronní :opak synchronizace; změny dat souboru se zpočátku provádějí v paměti. To zrychlí výkon, ale pravděpodobněji to povede ke ztrátě dat. U některých distribucí je to výchozí.
- root_squash :Mapujte účet uživatele root a účet skupiny z klienta NFS na anonymní účty, obvykle buď účet Nobody, nebo účet nfsnobody. Další podrobnosti naleznete v další části „Mapování ID uživatele“. (Všimněte si, že toto je výchozí možnost.)
- no_root_squash :Mapujte účet uživatele root a skupiny z klienta NFS na místní účty root a skupiny.
Jak získat informace o výkonu sdílených složek NFS?
Příkaz nfsiostat funguje jako příkaz iostat s výjimkou pouze přípojných bodů NFS. Nfsiostat získává vstup z /proc/self/mountstats a poskytuje informace o vstupním/výstupním výkonu sdílených složek NFS nainstalovaných v systému. Příkaz nfsiostat poskytuje nfs-utils balíček.
Níže je ukázkový výstup z příkazu nfsiostat.
Níže uvedená tabulka zobrazuje krátký popis každého sloupce ve výstupu about.
Pole | Popis |
---|---|
op/s | Toto je počet operací za sekundu. |
rpc bklog | Toto je délka fronty nevyřízených záležitostí. |
kB/s | Toto je počet kB zapsaných/přečtených za sekundu. |
kB/op | Toto je počet kB zapsaných/přečtených na každou operaci. |
retrans | Toto je počet opakovaných přenosů. |
prům. RTT (ms) | Toto je doba od okamžiku, kdy jádro klienta odešle požadavek RPC, do okamžiku, kdy obdrží odpověď. |
avg exe (ms) | Jedná se o dobu od okamžiku, kdy klient NFS odešle požadavek RPC svému jádru, až do dokončení požadavku RPC, včetně výše uvedeného času RTT. |
Níže je uvedena syntaxe pro použití příkazu nfsiostat.
# nfsiostat --help Usage: nfsiostat [interval] [count] [options] [mount point] Options: --version show program's version number and exit -h, --help show this help message and exit Statistics Options: File I/O is displayed unless one of the following is specified: -a, --attr displays statistics related to the attribute cache -d, --dir displays statistics related to directory operations -p, --page displays statistics related to the page cache Display Options: Options affecting display format: -s, --sort Sort NFS mount points by ops/second -l LIST, --list=LIST only print stats for first LIST mount points
Zde,
interval – čas v sekundách mezi jednotlivými zprávami.
počet – počet zpráv, které mají být vygenerovány v intervalu [interval] sekund od sebe. Pokud zde počet neuvedete, přehled se bude generovat průběžně v zadaném intervalu.
možnosti – Různé možnosti jsou vysvětleny v příkladech níže.
mount_point – můžete určit konkrétní bod připojení NFS, pro který se mají zobrazit statistiky. V tomto případě se generuje zpráva pouze pro zadaný bod připojení.
Jak zobrazit aktuálně sdílené sdílení NFS?
Příkaz exportfs lze na serveru NFS použít k zobrazení toho, co je aktuálně sdíleno:
# exportfs /share [world]
Jak sdílet prostředek NFS pomocí příkazového řádku?
Příkaz exportfs lze také použít k dočasnému sdílení prostředku za předpokladu, že služby NFS již byly spuštěny:
# exportfs -o ro 192.168.1.100:/usr/share/doc # exportfs /usr/share/doc 192.168.1.100 /share [world]
-o volba se používá k určení možností sdílení. Argument obsahuje název systémů, se kterými chcete sdílet, a také adresář, který chcete sdílet, oddělené dvojtečkou (:).
Pokud provedete změny v souboru /etc/exports, bude po restartu povolena jakákoli nově přidaná sdílená položka. Pokud chcete tyto změny povolit okamžitě, proveďte následující příkaz:
# exportfs –a
Jak připojit sdílenou složku NFS na klientské systémy?
Jakmile je sdílená složka NFS exportována ze serveru NFS, lze ji připojit ke způsobilým klientům pomocí níže uvedené syntaxe příkazu:
# mount [NFS server IP or hostname]:/share/path /client/path
Pokud je například /exports/downloads sdílen ze serveru NFS 10.10.10.100, můžeme jej připojit na klientský server jako adresář /mnt/downloads pomocí níže uvedeného příkazu:
# mount 10.10.10.100:/exports/downloads /mnt/downloads
Jak odpojit souborový systém NFS?
Po připojení souborového systému NFS je jeho odpojení jednoduché. Příkaz umount použijete buď s místním bodem připojení, nebo se jménem vzdáleného souborového systému. Například:
# umount /mnt/nfs_mnt
nebo:
# umount 10.10.10.100:/nfs_share
Jak získat seznam klientů připojených k serveru NFS?
Chcete-li získat seznam klientů připojených k serveru NFS, použijte příkaz showmount z příkazového řádku terminálu. Chcete-li také zobrazit adresáře, ke kterým jsou klienti připojeni, použijte:
# showmount -a
Jaký je výchozí port používaný serverem NFS?
Ve výchozím nastavení server NFS používá port 2049.
Jaké porty musí být otevřené ve firewallu, aby NFS fungovalo?
Aby server NFS správně fungoval, musí být otevřeny porty TCP a UDP 2049 (nfs) a 111 (rpcbind). Server musí také otevřít porty TCP a UDP 20048, aby příkaz showmount mohl vyhledávat dostupné sdílené adresáře NFS z rpc.mountd na serveru.
Jak zobrazit sdílené položky NFS z klientských systémů?
V klientském systému Linux můžete pomocí příkazu showmount zjistit, jaké sdílené adresáře jsou dostupné na vybraném počítači, jako v tomto příkladu:
$ showmount -e server.example.com /export/myshare client.example.com /mnt/public *
Výstup showmount ukazuje, že sdílený adresář s názvem /export/myshare je dostupný pouze hostiteli client.example.com. Sdílený adresář /mnt/public je však dostupný komukoli.
Jak zobrazit připojené body připojení NFS na klientovi NFS?
Pomocí níže uvedeného příkazu zobrazíte připojené body připojení NFS na klientském serveru NFS:
# mount -t nfs4
Příklad výstupu:
# mount -t nfs4 10.10.10.100:/mnt on /mnt/fed type nfs4 (rw,relatime,vers=4.2,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.10.20.200,local_lock=none,addr=10.10.20.200)
Výstup příkazu mount -t nfs4 zobrazuje pouze ty souborové systémy připojené ze souborových serverů NFS.
Jak připojit souborové systémy NFS při spouštění?
Chcete-li nastavit souborový systém NFS tak, aby se automaticky připojoval k určenému bodu připojení při každém spuštění systému Linux, musíte do souboru /etc/fstab přidat položku pro tento souborový systém NFS.
Zde je formát pro přidání souborového systému NFS do vašeho místního systému:
host:directory mountpoint nfs options 0 0
První položka (host:directory) identifikuje počítač serveru NFS a sdílený adresář. bod připojení je místní bod připojení, ke kterému je připojen adresář NFS. Za ním následuje typ souborového systému (nfs). Jakékoli možnosti související s připojením se zobrazí jako další v seznamu odděleném čárkami. (Poslední dvě nuly konfigurují systém tak, aby nevypisoval obsah souborového systému a nespouštěl fsck na souborovém systému.)
Níže jsou uvedeny příklady položek NFS v /etc/fstab:
# vi /etc/fstab nfs_server01:/data /mnt/data nfs bg,rsize=8192,wsize=8192 0 0
Jak používat autofs k připojení souborových systémů NFS na vyžádání?
Zařízení autofs připojí síťové souborové systémy na vyžádání, když se někdo pokusí použít souborové systémy. S konfigurací a zapnutou funkcí autofs můžete na požádání zařídit připojení všech dostupných sdílených adresářů NFS. Chcete-li použít funkci autofs, musíte mít nainstalovaný balíček autofs.
S povoleným autofs, pokud znáte název hostitele a adresář sdílený jiným hostitelským počítačem, jednoduše změňte (cd) na adresář autofs (standardně /net nebo /var/autofs). To způsobí, že sdílený prostředek bude automaticky připojen a zpřístupněn vám. Následující kroky vysvětlují, jak zapnout funkci autofs ve Fedoře nebo RHEL:
1. Jako uživatel root otevřete soubor /etc/auto.master soubor a vyhledejte následující řádek:
# vi /etc/auto.master /net -hosts
To způsobí, že adresář /net bude fungovat jako přípojný bod pro sdílené adresáře NFS, ke kterým chcete v síti přistupovat.
2. Chcete-li spustit službu autofs v systému CentOS/RHEL 7 nebo novějším, zadejte jako uživatel root následující:
# systemctl start autofs.service
3. V systému CentOS/RHEL 7 nebo novějším nastavte službu autofs tak, aby se restartovala při každém spuštění systému:
# systemctl enable autofs
Jak nakonfigurovat firewall na serveru NFS?
Aby server NFS fungoval, povolte služby nfs, mountd a rpc-bind v příslušné zóně v aplikaci firewall-config nebo pomocí firewall-cmd :
# firewall-cmd --add-service=nfs --zone=internal --permanent # firewall-cmd --add-service=mountd --zone=internal --permanent # firewall-cmd --add-service=rpc-bind --zone=internal --permanent