Jak připojit NFS - distribuce Debian/Ubuntu
Úvod
NFS (Network File System) je distribuovaný protokol souborového systému, který vám umožňuje se připojovat k serveru vzdálené adresáře. To umožňuje využívat úložný prostor na jiném místě a snadno zapisovat do stejného prostoru z více serverů. Systém NFS se dobře hodí pro adresáře, ke kterým bude třeba pravidelně přistupovat.
Předpoklady:
V této příručce budeme konfigurovat sdílení adresářů mezi dvěma servery. Ty mohou mít libovolnou velikost. Pro každý z těchto serverů budete muset mít nastaven účet s právy sudo. Pro účely této příručky budeme server, který bude sdílet své adresáře, označovat jako hostitele a server, který bude tyto adresáře připojovat, jako klienta. Abychom si je v celé příručce udrželi přehledně, budu jako zástupné hodnoty pro hostitele a server používat následující IP adresy:
- Hostitel: 1.2.3.4
- Klient: 111.111.111.111
Výše uvedené hodnoty byste měli nahradit vlastními hodnotami hostitele a klienta.
Stažení a instalace
Než budeme moci začít, musíme nainstalovat potřebné komponenty na hostitelský i klientský server. Na hostitelském serveru musíme nainstalovat nfs-kernel-server:
sudo apt-get update sudo apt-get install nfs-kernel-server
Jakmile jsou tyto balíčky nainstalovány, můžete se přepnout na klientský počítač: Na klientském počítači budeme muset nainstalovat balíček s názvem "nfs-common":
sudo apt-get update sudo apt-get install nfs-common
Vytvoření sdíleného adresáře na hostitelském serveru
Během tohoto návodu budeme experimentovat se sdílením dvou samostatných adresářů. Prvním adresářem, který budeme sdílet, je adresář
/home
který obsahuje uživatelská data. Druhým je adresář pro obecné účely, který vytvoříme speciálně pro systém NFS, abychom si mohli ukázat správné postupy a nastavení. Ten bude umístěn na adrese:
/var/nfs
Vzhledem k tomu, že
/home
již existuje, začněte vytvořením adresáře:
/var/nfs
adresář:
sudo mkdir /var/nfs
Nyní máme nový adresář určený speciálně pro sdílení se vzdálenými hostiteli. Vlastnictví adresáře však není ideální. Měli bychom ho přidělit uživateli v našem systému s názvem
nobody
Vlastnictví skupiny bychom měli přidělit skupině v našem systému s názvem
nogroup
To můžeme provést zadáním tohoto příkazu:
sudo chown nobody:nogroup /var/nfs
Musíme změnit vlastnictví pouze u adresářů, které se používají speciálně pro sdílení. Nechtěli bychom měnit vlastnictví našich:
/home
protože by to způsobilo velké množství problémů všem uživatelům, které máme na našem hostitelském serveru.
Konfigurace exportů systému NFS na hostitelském serveru
Nyní, když máme vytvořeny a přiřazeny naše adresáře, můžeme se ponořit do konfiguračního souboru systému NFS a nastavit sdílení těchto prostředků. Otevřete soubor
/etc/exports
v textovém editoru s právy roota:
sudo nano /etc/exports
Soubory, které uvidíte, budou obsahovat několik komentářů, které vám ukáží obecnou strukturu jednotlivých konfiguračních řádků. Syntaxe je v podstatě následující: directory_to_share client(share_option1,...,share_optionN) Chceme tedy vytvořit řádek pro každý z adresářů, které chceme sdílet. Protože v tomto příkladu má náš klient IP adresu:
111.111.111.111
budou naše řádky vypadat takto:
/home 111.111.111.111(rw,sync,no_root_squash,no_subtree_check)
/var/nfs 111.111.111.111(rw,sync,no_subtree_check)
Vysvětlili jsme zde vše kromě konkrétních možností, které jsme povolili. Ty si nyní projdeme.
- rw: Toto nastavení umožňuje klientskému počítači přístup ke svazku jak pro čtení, tak pro zápis.
- sync: Tato volba nutí systém NFS zapisovat změny na disk předtím, než odpoví. Výsledkem je stabilnější a konzistentnější prostředí, protože odpověď odráží aktuální stav vzdáleného svazku.
- nosubtreecheck: Touto volbou se zabrání kontrole podstromů, což je proces, při kterém musí hostitel při každém požadavku zkontrolovat, zda je soubor v exportovaném stromu skutečně stále k dispozici. To může způsobit řadu problémů, pokud je soubor přejmenován v době, kdy jej má klient otevřený. Téměř ve všech případech je lepší kontrolu podstromů zakázat.
- norootsquash: Ve výchozím nastavení překládá systém NFS požadavky od uživatele root na dálku na neprivilegovaného uživatele na serveru. Mělo jít o bezpečnostní funkci, která nedovolí účtu root na klientovi používat souborový systém hostitele jako root. Tato příkaz to u některých sdílení zakazuje.
Po dokončení změn soubor uložte a zavřete. Dále byste měli vytvořit tabulku NFS, která obsahuje exporty vašich sdílených souborů, zadáním příkazu:
sudo exportfs -a
Služba NFS však ve skutečnosti ještě není spuštěna. Můžete ji spustit zadáním:
sudo service nfs-kernel-server restart
Tím zpřístupníte sdílené soubory klientům, které jste nakonfigurovali.
Vytvoření přípojných bodů a připojení vzdálených sdílených složek na klientském serveru
Nyní, když je váš hostitelský server nakonfigurován a zpřístupňuje své sdílené adresáře, musíme připravit našeho klienta. budeme muset připojit vzdálené sdílené soubory, takže vytvořme několik přípojných bodů. Použijeme tradiční
/mnt
jako výchozí bod a vytvoříme adresář s názvem:
nfs
Pod ním vytvoříme adresář nfs, aby naše sdílené složky byly konsolidované. skutečné adresáře budou odpovídat jejich umístění na hostitelském serveru. Jednotlivé adresáře a potřebné nadřazené adresáře vytvoříme zadáním tohoto příkazu:
sudo mkdir -p /mnt/nfs/home
sudo mkdir -p /mnt/nfs/var/nfs
Nyní, když máme kam umístit naše vzdálené sdílené soubory, můžeme je připojit prostřednictvím oslovení našeho hostitelského serveru, což je v tomto návodu
1.2.3.4
takto:
sudo mount 1.2.3.4:/home /mnt/nfs/home sudo mount 1.2.3.4:/var/nfs /mnt/nfs/var/nfs
Tyto příkazy by měly připojit sdílené soubory z našeho hostitelského počítače na náš klientský počítač. Můžeme to překontrolovat tak, že se podíváme na dostupné místo na disku našeho klientského serveru:
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda 59G 1.3G 55G 3% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 2.0G 12K 2.0G 1% /dev
tmpfs 396M 324K 396M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 2.0G 0 2.0G 0% /run/shm
none 100M 0 100M 0% /run/user
1.2.3.4:/home 59G 1.3G 55G 3% /mnt/nfs/home
Jak vidíte dole, zobrazil se pouze jeden z našich podílů. Je to proto, že obě sdílené složky, které jsme exportovali, se nacházejí ve stejném filesystému na vzdáleném serveru, což znamená, že sdílejí stejný úložný prostor. Aby bylo možné
Avail
a aby
Use%
sloupce zůstaly přesné, lze do výpočtů přidat pouze jednu sdílenou složku.Pokud chcete zobrazit všechny připojené sdílené složky NFS, můžete zadat:
mount -t nfs
1.2.3.4:/home on /mnt/nfs/home type nfs
(rw,vers=4,addr=1.2.3.4,clientaddr=111.111.111.111)
1.2.3.4:/var/nfs on /mnt/nfs/var/nfs type nfs
(rw,vers=4,addr=1.2.3.4,clientaddr=111.111.111.111)
Zobrazí se všechna připojení NFS, která jsou v současné době přístupná na klientském počítači.
Otestování přístupu k systému NFS
Přístup ke sdílené složce můžete otestovat tak, že do ní něco zapíšete. Do jedné ze sdílených složek můžete zapsat testovací soubor takto:
sudo touch /mnt/nfs/home/test_home
Zapíšeme testovací soubor i do druhého sdílení, abychom demonstrovali důležitý rozdíl:
sudo touch /mnt/nfs/var/nfs/test_var_nfs
Podívejte se na vlastnictví souboru v připojeném domovském adresáři:
ls -l /mnt/nfs/home/test_home
-rw-r--r-- 1 root root 0 Apr 30 14:43 test_home
Jak vidíte, vlastníkem souboru je root. Je to proto, že jsme zakázali
root_squash
která by soubor zapsala jako anonymní uživatel, který není rootem.V našem druhém testovacím souboru, který byl připojen pomocí příkazu
root_squash
uvidíme něco jiného:
ls -l /mnt/nfs/var/nfs/test_var_nfs
-rw-r--r-- 1 nobody nogroup 0 Apr 30 14:44 test_var_nfs
Jak vidíte, tento soubor byl přiřazen uživateli "nobody" a skupině "nogroup". To odpovídá naší konfiguraci.
Automatické připojování vzdálených adresářů NFS
Připojování našich vzdálených sdílených adresářů NFS můžeme učinit automatickým přidáním do našeho adresáře
fstab
v klientovi. Tento soubor otevřete s právy roota v textovém editoru:
sudo nano /etc/fstab
Na konec souboru přidáme řádek pro každou z našich sdílených složek. Budou vypadat takto:
1.2.3.4:/home /mnt/nfs/home nfs auto,noatime,nolock,bg,nfsvers=4,intr,tcp,actimeo=1800 0 0
1.2.3.4:/var/nfs /mnt/nfs/var/nfs nfs auto,noatime,nolock,bg,nfsvers=4,sec=krb5p,intr,tcp,actimeo=1800 0 0
Volby, které zde zadáváme, lze nalézt v manuálové stránce, která popisuje připojování NFS v souboru
fstab
soubor:
man nfs
Tím se vzdálené oddíly automaticky připojí při spuštění systému (může chvíli trvat, než se vytvoří spojení a zpřístupní se sdílené oddíly).
Odpojení vzdáleného úložiště NFS
Pokud již nechcete, aby byl vzdálený adresář v systému připojen, můžete jej snadno odpojit tak, že se přesunete z adresářové struktury sdílené složky a odpojíte ji takto:
cd ~
sudo umount /mnt/nfs/home
sudo umount /mnt/nfs/var/nfs
Tím odstraníte vzdálené úložiště a zůstane přístupné pouze místní úložiště:
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda 59G 1.3G 55G 3% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 2.0G 12K 2.0G 1% /dev
tmpfs 396M 320K 396M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 2.0G 0 2.0G 0% /run/shm
none 100M 0 100M 0% /run/user
Jak vidíte, naše sdílené soubory NFS již nejsou k dispozici jako úložný prostor.
Závěr
Systém NFS poskytuje rychlý a snadný způsob přístupu ke vzdáleným systémům prostřednictvím sítě. Samotný protokol však není šifrovaný. Pokud jej používáte v produkčním prostředí, zvažte směrování systému NFS přes SSH nebo připojení VPN, abyste vytvořili bezpečnější prostředí.