Hlavní navigace

PC-BSD: souborový systém ZFS

20. 5. 2013
Doba čtení: 7 minut

Sdílet

Desktop to nemusí být zdaleka jen Windows, OS X nebo Linux. Pojďme společně vyzkoušet operační systém PC-BSD. V třetím dílu seriálu dokončíme kapitolu o administraci balíčků a zmíníme se o způsobech jejich aktualizace. Budeme se také věnovat souborovému systému ZFS a některým důležitým podrobnostem o něm.

 Kromě instalace systémových a uživatelských aplikací je pro každý operační systém velmi důležitá aktualizace všech jeho součástí. K tomuto účelu má PC-BSD opět k dispozici vícero nástrojů. Prvním z nich je grafický Správce aktualizací. Ten je po instalaci spuštěn jako ikona na panelu a také je možné ho kdykoliv spustit z nástroje PC-BSD nastavení systému → Správa systému → Update Manager.

Instalované PBI balíčky je možné aktualizovat také příkazem:

pbi_update (--check-all, --update-all)
    ~% pbi_update
    usage: pbi_update [options] pbi

    Options:
      -c                    -- Check-only, do not update target PBI
      --check-all           -- Perform a full check of all PBIs for updates
      --disable-auto    -- Disable auto-updating for the target PBI
      --enable-auto     -- Enable auto-updating for the target PBI
      --update-all          -- Update all PBIs to latest versions

Dalším nástrojem je manažer pro správu meta-balíčků. Meta-balíčky jsou systémové komponenty, které se skládají z většího množství dalších balíčků a závislostí, jako jsou např. grafická prostředí, ovladače, vývojové nástroje apod. Meta-balíčky je možné spravovat pomocí příkazu

    ~% pc-metapkgmanager help
    usage: pc-metapkgmanager [options]

    Options:
      add pkg1,pkg2      -- Add the specified list of meta-packages
      del pkg1,pkg2         -- Delete the specified list of meta-packages
      list                      -- List the available meta-packages
      status            -- List the status of the specified meta-packages
      --pkgset      -- Change default pkgset we are using

    ~% pc-metapkgmanager status XFCE
    The meta-pkg XFCE is not installed

K aktualizaci samotného OS pak slouží příkazy:

    ~% pc-updatemanager help
    /usr/local/bin/pc-updatemanager – Usage ----
      check                 - Check for system updates
      install ,     - Install system updates
      pkgcheck          - Check for updates to packages
      pkgupdate             - Install packages updates

    ~% pc-updatemanager check
    Getting regional mirror...
    Using mirror: http://ftp.ua.freebsd.org/pub/PC-BSD
    Your system is up to date!

    ~% sudo pc-updatemanager pkgcheck
    Password:
    Updating repository catalogue
    Repository catalogue is up-to-date, no need to fetch fresh copy
    All packages are up to date!

Pro aktualizaci repozitářů a balíčků PKGNG slouží dva příkazy:

    ~% sudo pkg update
    Password:
    Updating repository catalogue
    Repository catalogue is up-to-date, no need to fetch fresh copy

    ~% sudo pkg upgrade
    Updating repository catalogue
    Repository catalogue is up-to-date, no need to fetch fresh copy
    The following packages will be upgraded:

        Reinstalling ffmpeg-0.7.15,1
        Reinstalling snappy-1.1.0
        Reinstalling portupgrade-2.4.10.4_1,2
        Reinstalling lyx-2.0.5.1_1
        Reinstalling portmaster-3.14_9
        Reinstalling libmikmod-esound-3.1.12

    The installation will free 71 MB

    4 MB to be downloaded

    Proceed with upgrading packages [y/N]: y
    ffmpeg-0.7.15,1.txz                         100% 4002KB 800.4KB/s 181.8KB/s   00:05
    snappy-1.1.0.txz                            100%   51KB  51.0KB/s  51.0KB/s   00:00
    portupgrade-2.4.10.4_1,2.txz            100%   92KB  92.0KB/s  92.0KB/s   00:00
    portmaster-3.14_9.txz                       100%   42KB  41.5KB/s  41.5KB/s   00:00
    libmikmod-3.1.12.txz                        100%  235KB 234.7KB/s 234.7KB/s   00:00
    Checking integrity... done
    Reinstalling ffmpeg-0.7.15,1 done
    Reinstalling snappy-1.1.0 done
    Reinstalling portupgrade-2.4.10.4_1,2 done
    Reinstalling lyx-2.0.5.1_1 done
    Reinstalling portmaster-3.14_9 done
    Reinstalling libmikmod-esound-3.1.12 done

Pro aktualizaci sestavy portů je k dispozici několik příkazů. Některé jsou k dispozici okamžitě, některé je ale nutné nejprve instalovat. Mezi tyto patří aplikace portaudit a portupgrade. Obě je možné instalovat pomocí binárních balíčků nebo portů (/usr/ports/ports-mgmt).

Bez instalace můžeme spustit příkaz

~% portsnap update
    Ports tree is already up to date.

Pro zjištění, jestli nejsou v sestavě portů nějaké problémy, slouží příkaz

~% sudo /usr/local/sbin/portaudit -Fda
    auditfile.tbz                                 100% of   84 kB  119 kBps
    New database installed.
    Database created: pá  1. března 2013 14:40:04 CET
    0 problem(s) in your installed packages found.

Zajímavý je pak příkaz

~% pkg version -v | more
    ImageMagick-6.8.0.7_1                   =   up-to-date with port
    ORBit2-2.14.19                              =   up-to-date with port
    dri-7.11.2_2,2                              >   succeeds port (port has 7.6.1_2,2)
    linux-f10-flashplugin-11.2r202.270      <   needs updating (port has 11.2r202.273)

Ten porovná verze instalovaných balíčků s verzemi v systému portů. Jak je patrné z předchozího zkráceného výpisu, jsou důležité tři výsledky testu:

  • verze balíčku je shodná a není třeba nic dělat
  • verze balíčku v systému je novější než v portech a také není nutné nic podnikat
  • verze balíčku v systému je starší než v portech a je doporučená aktualizace

Celkový přehled balíčků k aktualizaci je možné zjistit příkazem:

    ~% pkg version -v | grep needs
    giflib-4.2.0_2                          <   needs updating (port has 4.2.1)
    linux-f10-flashplugin-11.2r202.270  <   needs updating (port has 11.2r202.273)
    netpbm-10.35.88                         <   needs updating (port has 10.35.88_1)
    p5-IO-HTML-0.04                         <   needs updating (port has 1.00)
    p5-Mail-SpamAssassin-3.3.2_6        <   needs updating (port has 3.3.2_7)
    p5-Tie-IxHash-1.22                      <   needs updating (port has 1.23)
    py27-fail2ban-0.8.7.1_2             <   needs updating (port has 0.8.8_1)
    qt4-corelib-4.8.4                       <   needs updating (port has 4.8.4_1)
    xterm-290                               <   needs updating (port has 291)

Pokud se uživatel rozhodne, že bude aktualizovat instalované balíčky proti novějším verzím v portech, může k tomu využít příkaz  portupgrade.

Tento příkaz má velké množství parametrů (viz nápověda) a tak se doporučuje použití

portupgrade -aiR pro aktualizace všech balíčků v interaktivním režimu

portupgrade -Ry pkgname pro aktualizaci jednoho vybraného balíčku

Na závěr bych chtěl upozornit, že celý balíčkovací systém je poměrně dost „ukecaný“ a uživatele nejen upozorní na případné problémy, ale velmi často dá i nápovědu k řešení!

Toto bych považoval za dostatečné množství informací, které by bylo vhodné v tuto chvíli uvést a tak kapitolu o balíčcích ukončím. Tím se dostáváme k další zajímavé vlastnosti PC-BSD, a to využití souborového systému ZFS.

O ZFS říká Wikipedie následující:

ZFS (Zettabyte File System) je kombinovaný souborový systém a správce logických svazků vyvinutý společností Sun Microsystems pro operační systém Solaris. ZFS obsahuje funkce pro ověřování integrity dat, podporu pro uchovávání velkých objemů dat, integraci konceptů souborového systému a správy svazků, zaznamenávání a ukládání aktuálního stavu systému (jako bod obnovy u Windows), ověřování integrity dat a jejich opravy za chodu, RAID-Z a přirozená podpora NFSv4 ACLs. ZFS je implementováno jako open-source software, licencováno pod Common Development and Distribution License (CDDL).“

ZFS je běžnou součástí OS xBSD a pokračovatelů projektu OpenSolaris. ZFS je založena na několika důležitých technologiích, které ho předurčují spíš k využití na serverech a datových úložištích. Mnohé z toho je ale možné výhodně využít i na desktopových systémech.

ZFS zachází s disky odlišně od běžných FS tím, že využívá celkovou kapacitu všech přiřazených disků – tzv. pool. V poolu je možné vytvářet tzv. datasety, což je určitá obdoba adresářů. Tím se vlastně chová podobně jako LVM, ale pro svou činnost nevyžaduje a nevytváří žádné diskové oddíly. V systému je možné vytvořit více poolů, které mohou pracovat v různých módech (módem je myšleno zrcadlení nebo obdoba RAID – RAIDZ). Viz bližší popis naleznete na ZFSbuild.com.

Každý dataset může využít celou kapacitu příslušného poolu. Pokud je to nutné nebo vhodné, lze omezit kapacitu datasetů pomocí kvót.

ZFS umožňuje transparentní kompresi jednotlivých datasetů.

ZFS používá pro zápis dat metodu COW (copy-on-write). To znamená, že systém nikdy nepřepisuje starou verzi dat. Pokud je třeba data změnit, zapíšou se do nového bloku. Pokud zápis proběhne bez problémů, změní se ukazatel a pak teprve dojde ke smazání staré verze. Pro ukládání dat se používají bloky s proměnlivou velikostí. To je vhodné třeba při zapnuté kompresi. Naopak je nutné dbát, aby zaplnění daty nepřekročilo 80 % celkové kapacity. V tomto případě by mohlo dojít k drastickému zpomalení zápisů na disk

Pro zachování konzistence dat používá ZFS kontrolní součty uložené přímo na disku. Pokud se narazí na nekonzistentní data, provede systém automaticky jejich opravu bez zásahu administrátora. Jednoduchým způsobem lze v systému periodicky provádět kontrolu a případnou opravu nekonzistencí.

Velkou výhodou je velmi snadná obsluha celého systému a rychlá práce s jednotlivými jeho částmi. Veškeré operace jako je přidávání disků, vytváření nových poolů či datasetů a podobně trvají jen několik málo sekund a stačí na to jenom dva příkazy!

Mnoho informací o ZFS je samozřejmě možné najít na webu, například u Oracle nebo Aarona Toponce.

Ve čtvrtém díle výše uvedeného článku jsou informace o využití něčeho, čemu se říká hybridní datové úložiště (Hybride Storage Pool). Stručně a názorně je možné najít informace i u Oracle.

Hybridní se tento systém nazývá proto, že mezi dvě základní vrstvy datového poolu a operační paměti RAM zařazuje ještě třetí mezivrstvu. Vlastně ani operační paměť se zde nevyužívá úplně „běžným“ způsobem. Proto se také označuje jako ARC (Adjustable Replacement Cache). ZFS umí jako ARC využít dynamicky až 7/8 dostupné RAM.

Kromě toho umí ZFS v každém definovaném poolu využít ještě L2ARC (Level 2 ARC). Ta se v dnešní době skládá většinou z SSD disků a slouží jako R/W cache.

Další součástí mezivrstvy může být tzv. ZIL (ZFS Intent Log). Jedná se o deklarované úložiště pro transakční systémové logy. ZIL je důležitý pro výkon synchronního zápisu dat. Disky pro ZIL jsou buď SSD nebo rychlé SAS a používají se většinou jako dvojice v zrcadle.

Pokud nejsou L2ARC nebo ZIL k dispozici vůbec nebo dojde za běhu k jejich výpadku, umí ZSF oboje zajistit pomocí RAM a datových disků. Má to však negativní dopad na výkon celého úložiště.

Více informací o nasazení L2ARC a ZIL a ladění výkonu ZFS je možné nalézt na následujících odkazech:

constantin.glez.de/blog/2010/07/so­laris-zfs-synchronous-writes-and-zil-explained

constantin.glez.de/blog/2010/04/ten-ways-easily-improve-oracle-solaris-zfs-filesystem-performance

wiki.freebsd.org/ZFSTuningGuide

root_podpora

www.solarisinternals.com/wi­ki/index.php/ZFS_Best_Prac­tices_Guide

V následujícím díle se budu věnovat instalaci systému a způsobu dělení disků s ohledem na kapacitu, bezpečnost a výkonové parametry.

Byl pro vás článek přínosný?