Tadas Šubonis


Kelių katalogų apjungimas panaudojant aufs

Turinys

  1. Kelių katalogų apjungimas panaudojant aufs
    1. Trumpai
    2. Apie aufs
    3. Eiga
      1. Pasiruošimas
      2. Konfigūravimas ir kompiliavimas
      3. Diegimas
    4. Aufs naudojimas
      1. Aufs prijungimo parinktys
      2. Truputis informacijos apie Pseudo link panaudojimą aufs
      3. Katalogų prijungimas mount pagalba
      4. Automatinis katalogų prijungimas su fstab
      5. Naudojimas su NFS
        1. Sąlygos aufs veikti su NFS
        2. Apjungtų katalogų dalinimas
      6. Pastebėjimai
    5. Pabaiga
      1. Nuorodos
      2. Panašūs puslapiai

Trumpai

Kartais yra naudinga apjungti kelis katalogus į vieną. Vienas toks atvejis būtų kai tarkim turime vieną diską duomenims laikyti ir jis vėliau užpildomas informacija. Tada reikia pirkti kitą diską, kad būtų vietos, bet jo taip paprastai neprijungsi prie tos pačios vietos, kaip ir pirmasis diskas, išlaikant tokią pačią struktūrą (abiejų diskų "talpos" prijungimas prie to pačio taško), o ir RAID naudoti neišeis, nes jiems reikia perdaryti skirsnių lentelę, kas sąlygos duomenų praradimą. Kokia išeitis? Naudoti tokią failų sistemų apjungimo "failų sistemą" aufs.

Taip pat tai galima panaudoti tokiais atvejais, kai negalime rašyti į sistemą (LiveCD), bet norime ją keisti. Tada tiesiog skaitomą sistemą sujungiame su virtualia tmpfs sistema ir taip bus rašoma į tmpfs failų sistemą, o atrodys, kad pakeitimai yra išsaugomi ir toje sistemoje, kurią galima tik skaityti.

Apie aufs

Kodėl aufs, o ne, tarkim, unionfs? Svarbiausia priežastis dėl ko pasirinkau aufs yra tai, kad jis palaiko savo sujungtų katalogų prieigą naudojantis NFS. Taip pat ji palaiko daugybę kitų funkcijų, kurių neturi unionfs, bei aufs laikoma stabilesne už unionfs. Prieš diegiant aufs yra rekomenduojama pasiskaitinėti pateiktas nuorodas, kad vėliau būtų išvengta nenumatytų problemų.

Eiga

Pasiruošimas

Dauguma dar distribucijų nėra įtraukusios aufs į savo paketus, tad jį reikės pasiruošti rankomis. Papildomai reikės: gcc ir make. Taip pat reikės branduolio išeities tekstų /usr/src/linux kelyje. Aufs parsisiųsime naudojantis CVS:

mkdir build
cd build
mkdir aufs.wcvs
cd aufs.wcvs
cvs -d:pserver:anonymous@aufs.cvs.sourceforge.net:/cvsroot/aufs login #paprašius slaptažodžio spaudžiame enter
cvs -z3 -d:pserver:anonymous@aufs.cvs.sourceforge.net:/cvsroot/aufs co aufs

Jei jau turite išeities tekstus ir norite juos atnaujinti:

cd aufs.wcvs/aufs
cvs update

Konfigūravimas ir kompiliavimas

Aufs palaikymą galima įkompiliuoti į branduolį, bet mano atveju paprasčiau ir geriau buvo tiesiog sukompiliuoti kaip modulį. Kai aufs palaikymas įkompiliuojamas į branduolį, tai veiksmų seka yra kitokia. Pirmiausiai reikėtų paredaguoti modulio nustatymų failą:

cd aufs
nano local.mk

Ir nustatykime atitinkamas eilutes:

CONFIG_AUFS_EXPORT = y #įjungiame NFS palaikymą
CONFIG_AUFS_DEBUG = #išjungiame debug režimą. Tai padarius aufs veiks sparčiau. Atkreipkite dėmesį, kad nereikia naudoti n raidės, o tiesiog palikti tuščią vietą. Kitu atveju kompiliavimas nepavyks.

Prieš kompiliuojant gali tekti pasinaudoti pateikiamomis branduolio pataisomis (detaliau skaityti aufs svetainėje), kad viskas susikompiliuotų ir veiktų korektiškai. Man asmeniškai naudojant Debian Stable 2.6.18 branduolį pataisų nereikėjo. Tačiau su Gentoo Vanilla branduoliu reikėjo šių pataisų: put_filp.patch ir lhash.patch. Jas galima rasti aufs/patch kataloge. Jeigu reikia, jas pritaikyti galima šitaip (šiems veiksmams gali reikėti root vartotojo teisių):

cd patch
cat lhash.patch | patch -p0 -d /usr/src/linux
cd ..

Sukompiliuojame aufs modulį:

make -f local.mk

Diegimas

man -l ./aufs.5 #rekomenduojama pasiskaityti
install -m 500 -p mount.aufs umount.aufs auplink aulchown /sbin #sudiegiami įrankiai darbui su aufs
echo FLUSH=ALL > /etc/default/auplink
insmod ./aufs.ko #užkrauna modulį
mkdir /lib/modules/$(uname -r)/kernel/fs/aufs 
cp aufs.ko /lib/modules/$(uname -r)/kernel/fs/aufs 

Taip pat nurodome, kad aufs modulis būtų automatiškai užkraunamas sistemos paleidimo metu. Tam padaryti reikia redaguoti /etc/modules failą (Debian sistemoje; kitose sistemose tai gali būti kitas failas):

echo "aufs" > /etc/modules

Aufs naudojimas

Aufs prijungimo parinktys

Aufs palaiko "netikras nuorodas" (pseudo link). Tai yra loginė (netikra) hard-link nuoroda tarp apjungtų katalogų. Kitais žodžiais tariant, tai yra sukurta byla link() komanda ir tikrasis sukurtasis failas, kuriam buvo sukurta nuoroda tik skaitymui leistojame apjungtajame kataloge.

Kai jūs turite bylas užvadintas bylas A ir B, kurios yra tvirtai sujungtos (hardlink) tik rašymui leidžiamame apjungtajame kataloge, jūs ką nors rašote į bylą A, aufs sukuria ar pakeičia bylą A įrašymui leidžiamame apjungtajame kataloge. Apjungtajame kataloge, kuriame leidžiamas rašymas, byla A nėra tvirtai sujungiama, bet aufs atsimena, kad ji buvo tvirtai sujungta, ir elgiasi su byla B taip kaip ji egzistuotų įrašymui leidžiamame apjungtajame kataloge, nurodant bylos A inode, esantį rašymui leidžiamame apjungtajame kataloge, taip kaip bylos B inode.

Kadangi mes įdiegėme pilną aufs plink palaikymą, tai rekomenduojama jį ir naudoti (t.y. neišjungti noplink komanda).

Katalogų prijungimas mount pagalba

Sujungia katalogas1 turinį su katalogas2. Turinys bus rodomas /tmp/aufs, o pakeitimai bus rašomi tik į katalogas1, nes katalogas2 nustatytas kaip ro (read-only):

mount -t aufs -o dirs=/home/tadas/katalogas1:/home/tadas/katalogas2=ro none /tmp/aufs

Automatinis katalogų prijungimas su fstab

Galimas aufs pavyzdys naudojimui su /etc/fstab:

/dev/hda1       /disk/wd300           ext3    defaults        0       2
/dev/hdd1       /disk/wd500           ext3    defaults        0       2
none    /data/  aufs    dirs=/disk/wd500=rw:/disk/wd300=rw,create=mfs:120       0 0

Naudojimas su NFS

Sąlygos aufs veikti su NFS

Yra keletas sąlygų, kad veiktų NFS:

Apjungtų katalogų dalinimas

Šių katalogų dalinimas beveik niekuo nesiskiria nuo paprastų. Tik reikia turėti omeny, kad serverio /etc/exports faile reikia pridėti fsid (tai tiesiog sveikas skaičius, pagal kurį atskiriamas dalinamasis katalogas) nustatymą, o kliento pusėje nepamiršti nustatyti NFS versijos, nes aufs veikia tik su NFS 3 ir naujesne versija.

Galimas serverio /etc/exports pavyzdys:

/data/multimedia/music 192.168.0.0/255.255.255.0(rw,no_root_squash,no_subtree_check,no_all_squash,sync,fsid=88294)

Galimas kliento fstab pavyzdys:

192.168.0.1:/data/multimedia/music      /home/tadas/music/      nfs defaults,nfsvers=3,rw,users,soft 0 0

Pastebėjimai

Pabaiga

Aufs sistema turi daug galimybių, tad patartina gerai įsiskaityti į pateiktą dokumentaciją, kad geriau suprasti kaip ji veikia. Tačiau manau su šiuo straipsniu, jūs sugebėsite atlikti pagrindines, dažniausiai pasitaikančias užduotis.

Nuorodos

Panašūs puslapiai

  1. Straipsniai
  2. Straipsniai/AufsPanaudojimasKataloguApjungimui