GNU/Linux >> Znalost Linux >  >> Cent OS

Průvodce pro začátečníky NFS v CentOS / RHEL

Úvod do NFS

Systém NFS (Network File system) umožňuje serveru sdílet hierarchie adresářů (systémy souborů) se vzdálenými systémy přes síť. Servery NFS exportují adresář a klienti NFS připojují exportovaný adresář. Adresář serveru se pak klientským systémům jeví, jako by to byly místní adresáře. NFS snižuje nároky na úložiště a zlepšuje konzistenci a spolehlivost dat, protože uživatelé přistupují k souborům, které jsou uloženy na centralizovaném serveru.

RedHat Linux 7 nepodporuje NFS verze 2 (NFSv2). Podporovány jsou následující dvě verze:
NFS verze 3 (NFSv3).
NFS verze 4 (NFSv4).

NFS se spoléhá na vzdálená volání procedur (RPC) mezi klienty a servery. Služby RPC jsou řízeny službou rpcbind. Služba rpcbind nahrazuje mapu portů, která se používala v předchozích verzích Linuxu k mapování čísel programů RPC na kombinace čísel portů IP adres. rpcbind odpovídá na požadavky na služby RPC a nastavuje připojení k požadované službě RPC. rpcbind se nepoužívá s NFSv4, protože server naslouchá na dobře známém portu TCP 2049. Protokoly pro připojení a zamykání byly také začleněny do protokolu NFSv4, takže NFSv4 neinteraguje ani s démony lockd a rpc.statd.

Procesy serveru NFS a 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.

Konfigurace serveru NFS

Chcete-li začít konfigurovat systém jako server NFS, nainstalujte balíček nfs-utils:

# yum install nfs-utils

Hlavní konfigurační soubor pro NFS server je /etc/exports . Tento soubor ukládá seznam exportovaných hierarchií adresářů, které mohou vzdálené systémy připojit. Formát záznamů je:

export-point client1(options) [client2(options) ... ]

Exportní bod je absolutní název cesty k hierarchii adresářů, která má být exportována. Jeden nebo více klientských systémů, každý se specifickými možnostmi, může připojit exportní bod. Mezi atributem client a otevřenou závorkou nejsou žádné mezery. Pokud nejsou zadány žádné možnosti klienta, platí následující výchozí nastavení:

  • ro:Pouze pro čtení . Klientští hostitelé nemohou měnit data sdílená v systému souborů. Chcete-li klientským hostitelům umožnit provádět změny v systému souborů, zadejte možnost rw (čtení/zápis).
  • synchronizovat :NFS server odpovídá na požadavky pouze po zapsání změn provedených předchozími požadavky na disk. async určuje, že server nemusí čekat.
  • wdelay :Server NFS zpožďuje potvrzení požadavků na zápis, když má podezření, že hrozí další požadavek na zápis. Chcete-li zpoždění zakázat, použijte volbu no_wdelay. no_wdelay je k dispozici pouze v případě, že je také zadána výchozí možnost synchronizace.
  • root_squash :Zabraňuje vzdáleně připojeným uživatelům root v tom, aby měli oprávnění root, čímž účinně „zmačkají“ moc vzdáleného uživatele root. Zdá se, že požadavky pocházejí od uživatele nfsnobody, neprivilegovaného uživatele v místním systému nebo podle specifikace anonuid. Chcete-li zakázat squash root, zadejte volbu no_root_squash.
  • no_all_squash :Nemění mapování vzdálených uživatelů. Chcete-li squash každého vzdáleného uživatele (včetně root), použijte volbu all_squash.

Chcete-li zadat ID uživatele (UID) a ID skupiny (GID), které server NFS přiřadí vzdáleným uživatelům, použijte možnosti anonuid a anongid takto:

export-point client(anonuid=uid,anongid=gid)

Možnosti anonuid a anongid vám umožňují vytvořit speciální uživatelský a skupinový účet, který mohou vzdálení uživatelé NFS sdílet. Ve výchozím nastavení jsou seznamy řízení přístupu (ACL) podporovány systémem NFS. Chcete-li tuto funkci zakázat, zadejte při exportu systému souborů volbu no_acl.

Ve jménech klientů můžete použít zástupné znaky, například (*) a (?). Můžete také exportovat adresáře do všech hostitelů v síti IP. Chcete-li to provést, zadejte pár IP adresy a masky sítě jako adresa/maska ​​sítě. Platí kterýkoli z následujících formulářů:

192.168.1.0/24
192.168.1.0/255.255.255.0

/etc/exports Příklady

V následujícím příkladu může klientský systém s IP adresou 192.0.2.102 připojit adresář /export/s oprávněními pro čtení/zápis. Všechny zápisy na disk jsou asynchronní:

/export/directory 192.0.2.102(rw,async)

Následující příklad exportuje adresář /exports/apps do všech klientů, převede všechny připojující se uživatele na místního anonymního uživatele nfsnobody a učiní adresář pouze pro čtení:

/exports/apps *(all_squash, ro)

Následující příklad exportuje adresář /spreadsheets/proj1 s oprávněními pouze pro čtení všem klientům v podsíti 192.168.1.0 a oprávněními pro čtení/zápis do klientského systému s názvem mgmtpc:

/spreadsheets/proj1 192.168.1.0/24(ro) mgmtpc(rw)

Spuštění služby NFS

Služba rpcbind musí být spuštěna před spuštěním nfs. Následující příkaz zkontroluje, zda je služba rpcbind povolena a spuštěna.

# systemctl status rpcbind

Pokud je spuštěna služba rpcbind, lze spustit službu nfs. Po provedení jakýchkoli změn konfigurace v /etc/exports restartujte nfs nebo spusťte příkaz exportfs -a.

# systemctl start nfs

Zkontrolujte, zda je povolena a spuštěna služba nfslock. Spuštěním této služby se spustí procesy RPC, které klientům NFS umožňují uzamknout soubory na serveru.

# systemctl status nfslock

Použijte příkaz systemctl enable k automatickému spuštění služeb při spouštění. Při povolování služby NFS použijte celý název nfs-server.

# systemctl enable nfs-server

Zadejte možnosti konfigurace a argumenty jejich umístěním do /etc/sysconfig/nfs . Tento soubor obsahuje několik komentářů, které vám pomohou určit možnosti jsou argumenty. Pro zobrazení exportovaných systémů souborů použijte příkaz showmount –e:

# showmount –e

nástroj pro export

Server NFS můžete také nakonfigurovat z příkazového řádku pomocí exportfs. Tento příkaz umožňuje uživateli root selektivně exportovat nebo zrušit export adresářů bez změny /etc/exports a bez restartování služby NFS. Syntaxe příkazu je:

# exportfs [options] [client:dir ...]

Argument klienta je název klientského systému, do kterého je adresář exportován. Argument dir je název absolutní cesty k exportovanému adresáři. Následuje seznam některých možností:

  • -r :Znovu exportujte položky v /etc/exports a synchronizujte /var/lib/nfs/etab s /etc/exports. Soubor /var/lib/nfs/etab je hlavní exportní tabulkou. rpc.mountd čte tento soubor, když klient odešle příkaz pro připojení NFS.
  • -a :Exportujte položky v /etc/exports, ale nesynchronizujte /var/lib/nfs/etab. Po provedení jakýchkoli změn konfigurace spusťte exportfs –a.
  • -i :Ignorujte položky v /etc/exports a používejte pouze argumenty příkazového řádku.
  • -u :Zrušte export jednoho nebo více adresářů.
  • -o :Zadejte možnosti klienta, jak je uvedeno v /etc/exports.

Konfigurace klienta NFS

Chcete-li začít konfigurovat systém jako klienta NFS, nainstalujte balíček nfs-utils:

# yum install nfs-utils

Pomocí příkazu mount připojte exportované systémy souborů (sdílené složky NFS) na straně klienta. Syntaxe příkazu je:

# mount -t nfs -o options host:/remote/export /local/directory

Následují popisy argumentů:

  • -t nfs :Označuje, že typ systému souborů je nfs. S touto volbou mount používá NFSv4, pokud jej server podporuje; jinak používá NFSv3.
  • -o možnosti :Čárkami oddělený seznam možností připojení
  • hostitel :/remote/export:Název hostitele exportujícího souborový systém, za nímž následuje dvojtečka a za ním absolutní cesta ke sdílené složce NFS
  • /local/directory :Přípojný bod na klientském systému

Chcete-li například připojit adresář /home exportovaný z hostitele abc s oprávněním pouze pro čtení (volba ro) na místní přípojný bod /abc_home a zabránit vzdáleným uživatelům získat vyšší oprávnění spuštěním programu setuid (volba nosuid):

# mount -t nfs -o ro,nosuid abc:/home /abc_home

Chcete-li připojit sdílené složky NFS při zavádění, přidejte položky do tabulky připojení systému souborů /etc/fstab. Záznamy jsou v následujícím formátu:

# vi /etc/fstab
server:/exported-filesystem    local_mount_point   nfs   options   0 0

Například položka /etc/fstab, která replikuje příkaz mount na předchozí stránce, je:

# vi /etc/fstab
abc:/home    /abc_home    nfs    ro,nosuid    0 0

Příkaz df zobrazí připojené systémy souborů, včetně systémů souborů připojených přes NFS. U připojení NFS se ve sloupci „Systém souborů“ zobrazují informace o server:/exported-filesystem. Použijte -T možnost zahrnout sloupec „Typ“:

# df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
host03:/Dev    nfs4      976M  2.5M 907M  1%   /remote_dev
CentOS / RHEL 7 :Konfigurace serveru NFS a klienta NFS


Cent OS
  1. Nainstalujte Webmin na CentOS 7 / RHEL 7

  2. CentOS / RHEL 7:Průvodce pro začátečníky systemd

  3. Průvodce pro začátečníky laděním profilů v CentOS/RHEL

  1. Jak nastavit server NFS na CentOS 7 / RHEL 7

  2. Průvodce pro začátečníky ke správě streamů modulů balíčků v CentOS/RHEL 8

  3. CentOS / RHEL:Průvodce řešením problémů s iptables

  1. Konečný průvodce upgradem jádra na CentOS/RHEL/Fedora

  2. CentOS / RHEL 7 :Konfigurace serveru NFS a klienta NFS

  3. CentOS / RHEL 7:Průvodce firewallem pro začátečníky