NFS-Root-kliens Mini HOGYAN


Ofer Maor,ofer@hadar.co.il

1997, Július 1. Verziószám: 4

E Mini-Hogyan szándéka, hogy elmagyarázza, miként hozzuk létre a kliens root könyvtárakat azon a szerveren, amelyet az NFS Root mountolt kliensek használnak. Ennek a Hogyan-nak az utolsó, legfrissebb (HTML vagy Text) verziója hozzáférhető a következő URL címen: http://www.hadar.co.il/ofer/nfs-root-client/


    1. Szerzői jog

    (c) 1996 Ofer Maor (ofer@hadar.co.il)

    Hacsak a dolog másképp nem áll, a Linux HOGYAN dokumentumok szerzői joga mindíg a szerzőket illeti meg. Bár a Linux HOGYAN dokumentumok másolása, illetve terjesztése teljes egészében vagy részlegesen is történhet - bármilyen fizikai vagy elektronikus adatközvetítő eszközön -, ám ezen szerzői jogot tartalmazó megjegyzést is tartalmaznia kell valamennyi másolatnak. Kereskedelmi viszontterjesztése is engedélyezett, illetve támogatott; mindemellet a szerzőt valamennyi disztribúcióban fel kell tüntetni.

    Valamennyi fordításnak, ezen dokumentum felhasználásával készült egyéb dokumentációnak, vagy kiegészítő anyagnak - értve itt bármilyen Linux HOGYAN dokumentumot - biztosítania kell ezen szerzői jog megjegyzést. Ez az, amit egy a HOGYAN-ból származtatott munkában nem írhatsz a magad nevére. Bizonyos körülmények esetén engedélyezett az e szabályok alóli kívétel: kérjük, hogy az ilyen ügyekben lépj kapcsolatba a Linux HOGYAN koordinátorával az alábbi címen.

    Röviden, mi elő kívánjuk segíteni ezen információk terjesztését a lehetséges legtöbb csatornán keresztül. Ám mindezek mellet e dokumentumok szerzői jogát is meg kívánjuk tartani, és szeretnénk azt, hogy ez bármely viszontterjesztett HOGYAN-ban fel legyen tüntetve.

    Ha kérdéseid merülnének fel, kérjük lépj kapcsolatba Ofer Maor-ral (ofer@hadar.co.il), e Mini-HOGYAN szerzőjével, vagy Greg Hankins-val, a Linux HOGYAN koordinátorával a greg@sunsite.unc.edu email címen, vagy a következő telefonszámon: +1 404 853 9989.

    Ha bármilyen kiegészítésed lenne ezen Mini-HOGYAN-nal kapcsolatban, kérjük küldj emailt a szerzőnek (Ofer Maor, ofer@hadar.co.il) a kapcsolt információval . Bármilyen új és a tárgyhoz tartozó információt méltányolunk.


    Copyright
    (c) 1996 Ofer Maor (ofer@hadar.co.il)

    Unless otherwise stated, Linux HOWTO documents are copyrighted by their respective authors. Linux HOWTO documents may be reproduced and distributed in whole or in part, in any medium physical or electronic, as long as this copyright notice is retained on all copies. Commercial redistribution is allowed and encouraged; however, the author would like to be notified of any such distributions.

    All translations, derivative works, or aggregate works incorporating any Linux HOWTO documents must be covered under this copyright notice. That is, you may not produce a derivative work from a HOWTO and impose additional restrictions on its distribution. Exceptions to these rules may be granted under certain conditions; please contact the Linux HOWTO coordinator at the address given below.

    In short, we wish to promote dissemination of this information through as many channels as possible. However, we do wish to retain copyright on the HOWTO documents, and would like to be notified of any plans to redistribute the HOWTOs.

    If you have questions, please contact Ofer Maor (ofer@hadar.co.il), the author of this mini-HOWTO, or Greg Hankins, the Linux HOWTO coordinator, at gregh@sunsite.unc.edu via email, or at +1 404 853 9989.

    If you have anything to add to this Mini-Howto, Please mail the author (Ofer Maor, ofer@hadar.co.il), with the information. Any new relevant information would be appreciated.


    1.1. Köszönetnyilvánítások

    Itt kívánom kifejezni hálámat az NFS-Root HOGYAN szerzőjének, Andreas Kostyrca-nak (andreas@medman.ag.or.at). Az Ő Mini-HOGYAN leírása segített az NFS Root Mountolt kliensek létrehozásának első lépései közben. A Mini-HOGYAN dokumentumom nem csak úgy a levegőben lóg, hanem megpróbáltam hozzáfűzni az ö munkájához, de úgy, hogy kihangsúlyozzam azt - felhasználva az e folyamat közben megszerzett tapasztalataimat.

    Köszönetet kívánok még mondani Mark Kushinsky-nek (mark026@imb.net) angol tudásom csiszolásáért és e HOGYAN nyelvtani hibáinak javításáért, miáltal még érthetőbbé vált.


    2. Előszó

    Ez a Mini-Hogyan azért íródott, hogy segítséget nyújtson azoknak, akik az NFS Root mountolást kívánják használni a kliens gépeik könyvtárainak létrehozására. Azt azonban jegyezzük meg, hogy ennek véghezviteléhez igen sok út létezik attól függően, hogy mit szeretnénk elérni és hogy mire van szükségünk egyáltalán. Amennyiben a kliensek mind különálló gépek, és valamennyinek megvannak a saját felhasználói, illetve van külön rendszergazdája, szükséges lehet, hogy néhány alavető kliens könyvtárat ne osszunk meg más kliensekkel. Másrészről, ha a kliens előreláthatólag sok felhasználót fog kiszolgálni és valamennyit egyazon személy fogja adminisztrálni (egy számítógéposztály esetén például), érdemes minél több fájlt egymás között megosztottá tenni, még könnyebbé téve ezzel az adminisztációt. Ezen HOGYAN a másodjára megemlített témára fog összpontosítani.


    2.1. Általános áttekintés

    Amikor felépítjük egy kliens /root könyvtárat és megpróbáljuk korlátozni magunkat, hogy minimalizáljuk ezáltal a kliens méretét, főként azokra a fájlokra összpontosítunk, amelyeket meg tudunk osztani, vagy mountolhatunk a szervertől. Ebben a HOGYAN-ban a saját tapasztalataimon alapuló kliens konfigurációját fogom javasolni. De mielőtt elkezdeném, engedtessék meg néhány megjegyzés:

    • Ez a Mini-Hogyan nem magyarázza el az NFS Root mountolás valódi folyamatát. Fordulj az NFS-Root Mini-Hogyanhoz, amennyiben több információra van szükséged a témában.

    • A legtöbb kliensem konfigurációját a mountolásokra és a szimbolikus linkekre alapoztam. A szimbolikus linkek közül viszont jónéhány helyettesíthatő hardlinkkel. Válassz közülük szem előtt tartva választottad előnyeit. Egy hardlink, de egy szimbolikus link a mountolásnak is megvannak az előnyei éppúgy, mint a hátrányai. Egy fájl egészen addig nem kerül ténylegesen törlésre, míg a valamennyi rámutató hardlinket le nem töröljük. Ezért, hogy elkerüld az olyan eseteket, amikor - bizonyos fájlok frissítésénél - a hardlinkek még a régi verziójú fájlokra mutatnak, légy körültekintő és figyelj valamennyi linked útvonalára.

    • A szervertől való mountolás folyamatára két elnevezés is használatos. Az egyik (az általánosabb eset), mountolni a szerver teljes root fájlrendszerének könyvtárait egy helyi könyvtár alá és csak az itteni megfelelő könyvtárak elérési útját vagy linkeit megváltoztatni. Én személy szerint nem szeretem a szerver root partícióját a kliensen mountolni. Ezért ez a Hogyan azt az utat javasolja, hogy egy arra megfelelő helyre - az adott rendszeren - csak a szerver fontosabb könyvtárait mountoljuk.

    • Ez a Hogyan dokumentum a saját tapasztalataimon alapul (Slackware 3.1-es verziójú Linuxon teszteltem a kliens könyvtárak felépítését). Némely dolog természetesen különbözhet (különösen az rc* fájlok) más felhasználóknál, de a tartalom mindenképpen ugyanaz.


    3. A kliens root könyvtárának létrehozása


    3.1 A könyvtárfa létrehozása

    Mindenekelőtt létre kell hoznod magát a könyvtárstruktúrát. Én valamennyi kliensen a /kliens/számítógépnév alatt hozom létre a könyvtárfa struktúrát és az alábbiakban felsorolt példákban is ezt fogom alkalmazni. Ezt természetesen akármi másra is megváltoztathatod. Az első lépés után létrehozzuk a /root könyvtárban a lényeges könyvtárakat. A következő könyvtárakat kellene létrehozni:

      bin, dev, etc, home, lib, mnt, proc, sbin, szerver, tmp, usr, var

    és persze bármilyen egyéb könyvtárat, amelyet még a rendszered számára használni akarsz.

    A helyi, /proc és /dev könyvtárakat valamennyi gép külön-külön fogja használni, míg a teljes könyvtárstruktúrát részlegesen, vagy teljesen megosztjuk valamennyi kliens között.


    3.2 A bootolás számára szükséges minimális fájlrendszer létrehozása


    3.2.1 A /dev könyvtár létrehozása.

    Habár a /dev könyvtár megosztható, ám jobb megoldás, ha valamennyi kliens részére létrehozunk egyet-egyet. A kliens /dev könyvtára létrehozható a megfelelő MAKEDEV script segítségével is, de a legtöbb esetben egyszerűbb csak átmásolni a szervertől:

      cp -a /dev /kliens/számítógépnév

    Azt azért tartsd észben, hogy a /dev/mouse, a /dev/cdrom és a /dev/modem mind csak egy-egy szimbolikus link a valódi meghajtókra, és emiatt bizonyosodj meg arról, hogy ezek a linkek megfelelnek-e a kliens hardverén.

    3.2.2 A szükséges binárisok másolása.

    Bár mindent a szervertől mountolunk, van egy minimum, amit szükséges minden kliensre átmásolni. Először is kell az ,,init'', hiszen a rendszerünk semmit sem képes futtatni addig, amíg nem ,,inicializálták'' (ahogy erre a szerző is csak nehezen jött rá ;-). Tehát előszőr a /sbin/init -et kell átmásolni a kliens /sbin könyvtárába; és mivel ez majd az rc.S -t fogja lefuttani, a /bin/sh fájlt is át kell másolnunk a kliens /bin könyvtárába. A mountoláshoz pedig elengedhetetlen a /sbin/mount parancs, amit szintén másoljunk a kliens /sbin könyvtárába. Nos, ez a minimum; feltételezve, hogy az rc.S fájlod első sora amount -av. Ettől függetlenül javaslom még néhány olyan fájl másolását, mint például az uptade, ls, rm, cp és az umount, mert így rendelkezel majd egy alap segédeszköztárral arra az esetre, ha a kliensnek problémái adódnának a mountolással kapcsolatban. Amennyiben a swap területedet még a mountolás előtt használni szeretnéd, úgy a swapon binárist is át kell másolnod.

    Mióta a legtöbb bináris alapértelmezésben dinamikusan linkelt, elég csak a /lib könyvtár egy megfelelő részét átmásolni:

      cp -a /lib/ld* /lib/libc.* /lib/libcursses.* /kliens/számítógépnév/lib

    A hardlinkek maguk is binárisok és másolásukat meg kell fontolni. Kérlek olvasd el ezzel kapcsolatosan a 2.1-es pontban tett megjegyzéseimet.

    Kérlek, azt jegyezd meg, hogy valamennyi információ azt feltételezi, hogy a kernel megkapta a hálózati paramétereket a bootolás ideje alatt. Amennyiben tervezed a rarp vagy a bootp használatát, úgy valószínűleg a hozzájuk tartozó binárisokra is szükséged lesz.

    Általában szükséges egy minimális fájlmennyiség ahhoz, hogy konfigurálni lehessen a hálózatot és az rc.S futása eljusson addig a pontig, amikor mountolja a teljes fájlrendszert. Kukkants bele a /etc/init és az rc.S fájlokba és bizonyosodj meg arról, hogy nincs bennük egyéb ,,meglepetés'', amely számára esetleg még szükség lehet további fájlok hozzáférésére, mielőtt még az első mountolás megtörténik. Ha tényleg ez a helyzet és találsz még néhány fájlt, akkor vagy másold át azokat is, vagy töröld ki a megfeleő sorokat az init, illetve az rc.S fájlodból.

    3.2.3. A /var könyvtár

    A /var könyvtárat - a legtöbb esetben - szükséges elkülöníteni valamennyi kliens számára. Viszont egy csomó adatát meg tudjuk osztani. Hozz létre a szerver könyvtár alatt egy /var nevű könyvtárat. Ide fogjuk mountolni a szerver /var könyvtárát. A helyi /var könyvtár létrehozásához egyszerűen csak gépeld be azt, hogy:

      cp -a /var /kliens/számítógépnév/

    Most lehetőségünk van arra, hogy eldöntsük, mit akarunk különválasztani és mit akarunk megosztani. A megosztani kívánt könyvtárakat egyszerűen csak töröljük le a kliens /var könyvtárából és készítsük rá egy szimbolikus linket a /szerver/var könyvtárban. Azt azért jegyezd meg, hogy a szimbolikus linket vagy a /szerver/var, vagy a ../szerver/var könyvtárra készítsd és ne a /kliens/számítógépnév/szerver/var könyvtárra, mert egyébként a root megváltozása után már nem fog működni.

    Általánosan javasolható, hogy a /var/run, /var/lock, /var/spool és a /var/log könyvtárakat különítsük el.

    3.2.4. A maradék könyvtárak

    • Az /etc könyvtár teljes magyarázatára a következő részben kerül sor.

    • Az /mnt és a /proc könyvtárak a helyi viszonyoknak megfelelően hozzuk létre.

    • Az /usr és a /home könyvtárak pusztán csak mountolási pontok.

    • A /tmp könyvtár viszont pont neked való. Hozhatsz létre valamennyi kliensed részére különálló /tmp könyvtárt, vagy létrehozhatsz néhány /kliens/tmp könyvtárt, majd valamennyi kliens számára mountolod a /tmp könyvtár alatt. Javaslom, inkább legyen valamennyi kliensnek önálló /tmp könyvtára.


    3.3. Az /etc könyvtár felépítése és a kliensek konfigurálása

    Ez a rész főként az olyan /etc könyvtár felépítésére utal, amely megosztott a kliensek között. Amennyiben a merevlemez nélküli klienseidnek önálló rendszeradminisztrátorai vannak, úgy a legjobb, ha valamennyi kliens részére különálló /etc könyvtárt hozol létre.

    3.3.1. Nagyszámú kliens /etc könyvtárának a felépítése

    Habár elkülönítjük a kliensek /etc könyvtárait, az itt taláható fájlok jelentős részét meg szeretnénk megosztani. A szerver /etc könyvtárának fájljait általában nem jó ötlet megosztani. Ezért javaslom inkább, hogy hozzunk létre egy /kliens/etc könyvtárat, amely majd a kliens részére szükséges információkat fogja tárolni. Kezdetnek egyszerűen csak másoljuk át a szerver /etc könyvtárának tartalmát a /kliens/etc könyvtárba.

    Valamennyi nem gépspecifikus konfigurációs fájl szükséges e könyvtár számára (ilyenek például a motd, issue, ..., stb) és még néhány nem kliensspecifikus fájl is kell (mint például az inittab vagy az fstab fájl).

    A legfontosabb változások az rc.d könyvtáradban fognak történni. Először is a helyi beállításaid szerint meg kell változtatnod az rc.init1 fájlt. Én valamennyi hálózati paraméteremet a LILO/Loadlin-en keresztül adom meg a kernel részére, ezért majdnem mindent kitörlök az rc.inet1 fájlból. Az egyetlen dolog, amit itt meghagyok, helyi gép (localhost) ifconfig és route parancsai. Amennyiben használsz rarp-ot vagy bootp-t, akkor ennek megfelelően építsd fel a fájl tartalmát.

    Másodszor, át kell szerkesztened az rc.S fájlod tartalmát, kitörölve onnan minden olyan részt, amely az fsck ellenőrzésekkel kapcsolatos, hiszen az fsck elindul, mihelyt a szerver bootol. Ezután keresd meg azt a sort, amely mountolja az fstab-odat. Ez valahogy úgy néz ki, hogy:

      mount -avt nonfs

    A -t nonfs amiatt van, hogy a normál kliensek előszőr az rc.S-t futtatják és csak később - az rc.inet1 használata alatt - történik meg az Ethernet konfigurálása. Ez viszont azt fogja okozni, hogy amíg ezt a sort nem töröljük, addig nem lehet NFS partíciókat mountolni. Ezért változtassuk meg ezt a sort a következőképpen: mount -av . Ha szükséges a rarp/bootp -t futtatnod a hálózatod konfigurálására, akkor ezt a rc.S fájlból tedd meg (vagy hivd meg a megfelelő scriptet ebből a fájlból), de még a mountolás előtt, és bizonyosodj meg arról, hogy a /bin és az /sbin könyvtáraidban a szükséges fájlok a rendelkezésre állnak.

    Miután a mount -av végbement, egy kis dolgod van még a fájlrendszerrel. Írj meg egy hétköznapi fstab fájlt, hogy át tudd másolni valamennyi kliensre. Az fstab fájlodnak valahogy így kell kinéznie:

      szerver:/kliens/számítógépnév   /                nfs     default  1 1
      szerver:/bin                    /bin             nfs     default  1 1
      szerver:/usr                    /usr             nfs     default  1 1
      szerver:/sbin                   /sbin            nfs     default  1 1
      szerver:/home                   /home            nfs     default  1 1
      szerver:/lib                    /lib             nfs     default  1 1
      szerver:/kliens/etc             /szerver/etc     nfs     default  1 1
      szerver:/kliens/var             /szerver/var     nfs     default  1 1
      none                            /proc            proc    default  1 1
      

    Arra figyelj, hogy az ,,alapértelmezett'' (default) kulcsszó nem minden mount verzió esetében működik. Esetleg meg kell változtani rw vagy ro -ra, letörölve valamennyi default 1 1 részt.

    A szervered /etc/exports fájlja hasonlítson az itt következőhöz:

      /kliens/számítógépnév   számítógépnév.domainnév(rw,no_root_squash)
      /kliens/etc             számítógépnév.domainnév(ro,no_root_squash)
      /kliens/var             számítógépnév.domainnév(ro,no_root_squash)
      /usr                    számítógépnév.domainnév(ro,no_root_squash)
      /sbin                   számítógépnév.domainnév(ro,no_root_squash)
      /bin                    számítógépnév.domainnév(ro,no_root_squash)
      /lib                    számítógépnév.domainnév(ro,no_root_squash)
      /home                   számítógépnév.domainnév(rw,no_root_squash)
      

    Az első sort valamennyi számítógép részére el kell különíteni. A maradék sorokat helyettesítsük egy-egy számítógépmaszkkal, megnevezve ezáltal valamennyi számítógépünket (mint például pc*.domain - a * csak egy olyan sztringgel helyettesíthető, amely nem tartalmaz magában pontot). Javaslom, hogy a legtöbb könyvtárat tegyük csak olvashatóvá (read only), bár ez igazán csak rád tartozik. A no_root_squash opció a kliens root felhasználói részére a valódi root jogokat fogja biztosítani az nfsd démon fölött is. Nézz utána az exports(5) kézikönyv lapjának (man). Ha szeretnéd, hogy a felhasználóid tudják futtatni a kliensektől is a passwd parancsot, akkor ellenőrizd le, hogy a /etc -nek rw jogosultága legyen és ne ro. Mindemellett ez nem igazán ajánlatos.

    Jegyezz meg még egy dolgot az rc.S fájl esetleges problémáival kapcsolatosan. A Slackware disztribúcióban alapértelmezésként ez a fájl hozza létre valamennyi lefutása alkalmával az új /etc/issue és a /etc/motd fájlokat. Ezt a funkciót TILTANI KELL, amennyiben ezeket a fájlokat ro opcióval mountolod a szervertől, és ha javasolhatom, akkor ezt inkább minden esetben tiltsd le.

    Végül, ha azt szeretnéd, hogy ugyanaz a felhasználói bázis legyen szerveren és a kliensen is, választhatod a (1) NIS (Yellow Pages - vizsgáld meg az yp-hogyan-t) használatát. Ekkor valamennyi kliensnek különálló /etc/passwd és /etc/group fájlja lesz, amelyet a NIS szervertől kap. Illetve megvalósíthatod a gyakoribb megoldást (2) is, amikor mindössze elég egy egyszerű szimbolikus link is. Ezesetben szükséges vagy egy hardlink a /kliens/etc/passwd -ről a /etc/passwd -re, vagy ha jobban kedveled a szimbolikus linket, akkor készíts egyet a /etc/passwd -ről a /kliens/etc/passwd -re (nincs további lehetőség, mivel a kliens nem mountolja a szerver /etc könyvtárát). A /etc/group fájl esetében is járd végig az iménti lépéseket.

    3.3.2. A kliens etc könyvtárának létrehozása

    Általában a kliens /etc könyvtárának fájljai csak egy-egy szimbolikus link a /szerver/etc könyvtár fájljairól. Ám néhány fájl eltérhet gépenként, és lehet néhány olyan is, amelynek csak akkor kell ott lennie, amikor a kernel betölti. Minimálisan a következő fájlokra van szükség az /etc könyvtártól:

      resolv.conf
      hosts
      inittab
      rc.d/rc.S
      fstab
      

    Ha ez az öt fájl megegyezik az összes kliensen, elég, ha hardliket készítesz rájuk, vagy egyszerűen csak újra lemásolod őket, bár az rc.S és az fstab fájlok esetében tanácsos inkább különálló másolatokat fenntartani valamennyi kliensen. Szükséges lehet még egy-egy különálló etc/HOSTNAME fájl minden kliens részére. Én - személy szerint - javaslom, hogy valamennyi kliens számára külön rc.d fájlok legyenek elérhetők, mert a beállítandó harver eszközök gépenként eltérők lehetnek.

    Valamennyi kliens számára adjuk hozzá a megfelelő swap sort az fstab fájljához:

      /dev/swap_partíció                 swap    swap    default  1 1
      

    A kliens további /etc fájljait hardlinkelheted a /kliens/etc/* fájlokra, vagy készíthetsz rájuk szimbolikus linket is a /szerver/etc könyvtárról (amely a /kliens/etc/ mountolási pontja).

    Bizonyosodj meg arról, hogy a számítógéped azonosítása visszafejthető (resolve) vagy a named démonon, vagy az /etc/hosts fájlon keresztül. A szerver IP címét az /etc/hosts fájlban érdemes tartani, a visszafejtési IP címek helyett (counting on resolving). Ha csak a named visszafejtésére számolsz, a klienseid bootolása meghíúsulhat egy - a namedben fellépő - esetleges hiba miatt.


    3.4. A felbootolás

    Most már csak bootolnod kell a gépedet. Kulcsold imára a kezed és reménykedj, hogy minden úgy fog majd működni, ahogyan kellene :-).


    4. További kliensek létrehozása

    Amennyiben végigkövetted az utasításaimat, ez már igazán egyszerűen fog menni - lépj be a cd paranccsal a /kliens/ könyvtárba és gépeld be:

      cp -a hostname1 hostname2
      

    majd ellenőrizd le a következő pontokat:

    az rc.d/* fájlok feleljenek meg a hardvernek és a kívánt szoftvernek, az /etc/HOSTNAME beállítása megfelelő legyen, az fstab swap sora hibátlan legyen és a /dev/mouse, /dev/modem, /dev/cdrom szimbolikus linket is helyesek legyenek.

    Sok szerencsét...

Magyar változat: Murzsa Norbert email: kuksi@igyuk.hu