AuFS znamená Another Union File System.
AuFS začalo jako implementace UnionFS Union File System.
Sjednocený souborový systém přebírá existující souborový systém a transparentně jej překrývá na novějším souborovém systému. Umožňuje souborům a adresářům samostatného souborového systému koexistovat pod jednou střechou. AuFS může sloučit několik adresářů a poskytnout na ně jediný sloučený pohled.
AuFS se používá v mnoha opensource projektech, jako je Slax, Knoppix a mnoho dalších live CD a živých USB distribucích.
Na systémech založených na Debianu, například na Ubuntu, nainstalujte aufs následovně.
# apt-get install aufs-tools
Příklad 1 – Pochopení toho, jak AuFS funguje
Tento příklad ukazuje, jak připojit dva adresáře stejného souborového systému.
# mkdir /tmp/dir1 # mkdir /tmp/aufs-root # mount -t aufs -o br=/tmp/dir1:/home/lakshmanan none /tmp/aufs-root/
První dva příkazy vytvořily 2 nové adresáře. mount.aufs je příkaz pro připojení souborového systému jako připojení Union.
Příkaz mount určuje, že dojde ke sjednocení připojení „/tmp/dir1″ a /home/lakshmanan“ pod „/tmp/aufs-root“. Adresář „/tmp/aufs-root“ bude mít obsah „/tmp/dir1“ i „/home/lakshmanan“.
Ve výše uvedeném příkladu příkazu mount jsou použity následující možnosti:
- -o – určuje volby, které mají být předány souborovému systému
- br – určuje větev, kde každá větev je oddělena dvojtečkou (:). Větev není nic jiného než adresář v systému.
- žádný – určuje, že k němu nemáme přidružené žádné zařízení, protože se chystáme připojit dva adresáře
Jak vidíte z níže uvedeného výstupu příkazu ls -l, vidíme, že aufs slučuje obsah 2 samostatných adresářů a přináší jednotný pohled.
# ls -l /tmp/dir1/ -rw-r--r-- 1 root root 23 Mar 25 14:21 file_in_tmp_dir1 # ls -l /home/lakshmanan -rw-r--r-- 1 root root 26 Mar 25 14:20 file_in_home_dir # ls -l /tmp/aufs-root/ -rw-r--r-- 1 root root 26 Mar 25 14:20 file_in_home_dir -rw-r--r-- 1 root root 23 Mar 25 14:21 file_in_tmp_dir1
Ve výchozím nastavení, pokud nejsou zadána žádná oprávnění, bude první větev připojena jako zapisovatelná a zbývající větve budou připojeny jako pouze pro čtení.
Takže když vytvoříte jakýkoli soubor uvnitř ‚/tmp/aufs-root/‘, fyzicky bude vytvořen pod „/tmp/dir1“, protože je to jediná zapisovatelná větev.
Příklad 2 – Jednotné zobrazení domovských adresářů
Někdy se stává, že správci systému mají více diskových oddílů, které mají domovské adresáře více uživatelů. Ukážeme si příklad toho, jak to můžeme udělat jako jednotné zobrazení a zjednodušit proces administrace.
V tomto příkladu:
- /home -> je přípojný bod /dev/sda2 s uživateli „lakshmanan“ a „sysadmin“
- /home1 -> je přípojný bod /dev/sdb2 s „testovacím“ uživatelem.
# mount -t aufs -o br=/home=rw:/home1=rw -o udba=reval none /common/ # ls -l /common/ drwxr-xr-x 39 lakshmanan lakshmanan 4096 Mar 25 15:52 lakshmanan drwxr-xr-x 26 sysadmin sysadmin 4096 Mar 25 15:51 sysadmin drwxr-xr-x 2 root root 4096 Mar 25 16:36 test
Výše uvedený příkaz mount má navíc možnost nazvanou „udba“, která odkazuje na „Přímý přístup k větvi uživatele“. Tato možnost říká, co dělat, pokud uživatel přímo přistupuje k větvi a vytváří/aktualizuje soubory, aniž by musel projít AuFS.
Následující jsou možné hodnoty pro udba:
- udba=none – S touto volbou bude AuFS rychlejší, ale může zobrazovat nesprávná data, pokud uživatel vytvořil nějaké soubory/adresáře, aniž by prošel AuFS.
- udba=reval – S touto volbou AuFS znovu vyhledá větve a aktualizuje je. Takže jakékoli změny provedené v libovolných adresářích v rámci větve se projeví v „/common“.
- udba=notify – S touto volbou se AuFS zaregistruje pro inotify pro všechny adresáře v pobočkách. To ovlivňuje výkon AuFS.
# touch /home/lakshmanan/TGS # ls -l /common/lakshmanan/ . . -rw-r--r-- 1 root root 0 Mar 25 17:17 TGS
Dotykový příkaz vytvořil soubor s názvem „TGS“ v domovském adresáři „lakshmanan“, aniž by prošel AuFS. Protože jsme se připojili pomocí „udba=retval“, když spustíme ls, AuFS provedl opětovné vyhledání a zobrazí nový soubor, který byl vytvořen.
Všimněte si také, že v předchozím příkazu mount jsme zadali oprávnění pro každou větev jako readwrite. Takže když je soubor vytvořen pod /common/test/, bude fyzicky vytvořen v "/home1/test/", což je skutečné fyzické umístění. Totéž platí i pro ostatní adresáře.
# touch /common/test/Testing # ls -l /home1/test/ -rw-r--r-- 1 root root 0 Mar 25 18:26 Testing
Příklad 3 – Připojení s oprávněním pouze pro čtení pro větve
Můžete se také připojit tak, že pro každou větev nastavíte oprávnění.
# mount -t aufs -o br=/tmp/dir1=rw:/home/lakshmanan=ro -o udba=reval none /tmp/aufs-root/
Výše uvedený příkaz připojí /tmp/aufs-root tak, že bude mít „/tmp/dir1“ jako zapisovatelný a „/home/lakshmanan“ jako pouze pro čtení. Jakákoli změna, kterou provedete v /tmp/aufs-root, bude uložena pouze pod „/tmp/dir1“, protože to je jediný zapisovatelný adresář.
K ověření výše uvedeného lze použít následující sekvenci příkazů.
# cat > /home/lakshmanan/1.txt This is a new file # cat /tmp/aufs-root/1.txt This is a new file # cat >> /tmp/aufs-root/1.txt This is updated on AuFS space # cat /home/lakshmanan/1.txt This is a new file # cat /tmp/dir1/1.txt This is a new file This is updated on AuFS space
Ve výše uvedené sekvenci příkazů jsme provedli následující:
- Vytváříme soubor s názvem 1.txt pod „/home/lakshmanan“.
- Tento soubor se odráží v adresáři pro připojení k jednotce kvůli volbě udba=retval, kterou jsme vysvětlili výše
- Aktualizujte soubor, který se nachází v adresáři pro připojení k jednotce
- I když je soubor přítomen v /home/lakshmanan, protože je připojen jako pouze pro čtení, AuFS vezme kopii souboru a umístí ji do „/tmp/dir1“.
- Navrch této kopie připojí obsah a uloží soubor
- V souboru /home/lakshmanan/1.txt se změna neprojeví
- Vytvoří se nový soubor s názvem „1.txt“ pod „/tmp/dir1“, který má aktualizovaný obsah
Příklad 4 – Použijte zásadu Round Robin pro vytváření souborů pod AuFS
Když máme více než 2 větve, do kterých lze zapisovat, můžeme si vybrat kteroukoli z předdefinovaných zásad, takže vytvořený soubor bude uložen na základě zvolené zásady.
# mount -t aufs -o br=/tmp/dir1=rw:/home/lakshmanan=rw -o udba=reval -o create=rr none /tmp/aufs-root/
Volba „create=rr“ určuje, že pro toto spojení musí být aplikována zásada kruhového provozu. V zásadě round robin, pokud vytvoříme 4 soubory, 2 soubory budou v „/tmp/dir1“ a 2 soubory budou v „/home/lakshmanan“.
# touch /tmp/aufs/first-round-robin # touch /tmp/aufs/second-round-robin # ls -l /tmp/dir1/first-round-robin -rw-r--r-- 1 root root 0 Mar 25 21:53 /tmp/dir1/first-round-robin # ls -l /home/lakshmanan/second-round-robin -rw-r--r-- 1 root root 0 Mar 25 21:54 /home/lakshmanan/second-round-robin