ZFS v budoucím OS X Serveru 10.6 (Snow Leopard)

ZFS v budoucím OS X Serveru 10.6 (Snow Leopard)

Apple oficiálně potvrdil podporu systému ZFS v OS X Serverové verzi operačního systému. Apple doslova píše "Pro kritické nasazení serveru Snow Leopard Server přidává podporu čtení i zápisu velmi výkoného 128-bitového ZFS souborové systému, který obsahuje vyspělé funkce jako storage pooling, redundanci data, automatickou korekci chyb, dynamické rozšíření diskových svazků a otisky." Protože to nejsou obecně známé věci, podíváme se na ZFS formát trochu podrobněji.

ZFS je souborový systém navržený Sun Microsystems pro operační systém Solaris. Hlavní funkce ZFS zahrnují podporu pro kapacitní disky (až 16 EiB), interace konceptu souborového systému, správu diskových svazků, otisky (snímkování) a online kontrola integrity a opravy a RAID-Z. ZFS je implementován jako open-source software a je licencován pod Common Development and Distribution License (CDDL). Jedná se o poměrně mladý souborový systém, který byl oznámen 14. září 2004 a do hlavní větve Solarius se dostal až v 31. října 2005.

Funkce tohoto souborového systému

  • Storage pooling

    Na rozdíl od tradičních souborových systému, které vždy zůstávají na jednom zařízení a potřebují správce diskových zařízení (Volume Manager) aby mohl použít více jak jedno, YFS je postaven na virtuálním diskovém poli nazvaném zpool. Zpool je složen z virtuálních zařízení (vdevs), které jsou složeny z blokových zařízení: souborů, oddílů pevného disku či celých disků, pochopitelně poslední možnost je doporučená. Bloková zařízení uvnitř vdev mohou být nastaveny různými způsoby, podle potřeb a dostupného místa: bez redundance (podobně jako je tomu u RAID-0), jako zrcadlo (RAID 1) u dvou a více zařízení, či jakou RAID-Z skupina tří a více zařízení, či RAID-Z2 pro skupinu čtyř a více zařízení. Kapacita všech vdevs zařízení v zpool je k dispozici všem souborovým systémům, které zpool používají. Je možné omezit velikost jednoho souborového systému pomocí kvót či rezervovat místo pro konkrétní souborový systém.

  • Kapacita

    ZFS je 128 bitový souborový systém, který může ulože 18 miliard miliard (18,4 x 10 na 18tou) více dat než současné 64-bitové systémy. Omezení ZFS je nastaveno tak velké, že na něj v současné a ani v dohledné době nenarazíte. Další teoretické limity ZFS jsou:

    • 264 - počet snímků jakéhokoliv souborového systému
    • 248 - počet položek v jednom adresáři
    • 15 EiB (264 bytů) - Maximální velikost souborového systému
    • 16 EiB - maximální velikost jednoho souboru
    • 256 ZiB (278) - maximální velikost jakéhokoliv zpoolu
    • 256 - počet atributů pro soubor
    • 256 - počet souborů v adresáři (v současné implementaci omezeno na 248 pro počet souborů v ZFS souborovém systému)
    • 264 - počet zařízení v zpoolu
    • 264 - počet zpoolů v systému
    • 264 - počet souborových systémů v zpoolu
  • Jestliže miliarda počítačů bude plněna miliardou SAMOSTATNÝCH souborových systémů za sekundu, čas nutný k dosažení zaplnění systému bude více než tisíckrát větší než je odhadovaný věk vesmíru. Vedoucí projektu Bonwick prohlásil: "Vypuštění 128-bitového souborového systému překoná kvantové limity ukládání dat na zemi. Nemůžete zaplnit 128-bitové ukládací pole bez vypaření oceánů."

    Líbil se mi důkaz k poslední větě minulého odstavce, takže ho zde napíšu také: Ačkoliv by se nám líbilo, kdyby Moorův zákon pokračoval do nekonečna, kvantová mechanika určuje základní limity výpočetní rychlosti a kapacity fyzického média. Bylo prokázáno, že 1 kilogram látky obsažené v 1 litru vesmíru může provést maximální 1051 operací za sekundu nad 1031 bity informací. Na základě tohoto postulátu můžeme tedy říci, že plně využitý 128-bitový systém pro ukládání informací může obsahovat 2128 bloků = 2137 bytů = 2140 bitů, což znamená, že minimální masa požadovaná k uložení dat této velikosti bude (2140 bitů) : (1031 bitů/kg)= 136 miliard kg. Pro operace s tímto limitem však celá masa by musela být ve formě čisté energie. Pokud uvážíme, že E=mc2, pak energie 136 miliard kg je 1,2x1028 J. Masa oceánů je odhadována na 1,4x1021. Jestliže je nutné 4000 J pro zvednutí teploty 1 kg vody o 1 stupeň Celsia, je nutné 400 000 J pro zahřátí 1 kg vody z 0 k varu. Teplo nutné k vytvoření dělá okolo 2 miliónů J/kg. Takže energie potřebná k vypaření oceánů je okolo 2,4x106 J/kg * 1,4x1021 kg = 3,4x1027 J. Takže energie nutná k udržení 128-bitového pole doslova vyžaduje více energie než k vypaření oceánů.

  • Copy-on-write transakční model

    ZFS používá transakční objektový model copy-on-write. Všechny blokové ukazatel v souborovém systému obsahuje 256bitové kontrolní součty cílového bloku, který je kontrolován při čtení. Bloky obsahující aktivní data nejsou nikdy přepisovány, místo toho je alokován nový blok a modifikovaná data jsou do něj zapsána. A stejně tak jakýkoliv blok metadat který na něj ukazuje je podobně přečten, přemístěn a zapsán. Pro redukci režie jsou aktualizace seskupeny do transakčních skupin a je použit log pro synchronní zápis, pokud je vyžadován.

  • Snímky a klony

    Výhodou copy-on-write je, že když ZFS zapisuje nová data, blok obsahující původní data může být stále obnoven a dovoluje snímku (snapshot, otisk) souborového systému udržovat ZFS snímky velmi rychle, protože všechny data které snapshot obsahuje jsou již dávno uložena, jsou také efektivní, protože všechna nezměněná data jsou sdílena mezi souborovým systémem a jeho snapshotem.

    Zapisovatelné snímky (klony) mohou být také vytvořeny a ve výsledku vedou ke dvěma samostatným souborový systémům, které sdílejí sadu bloků. Jak se postupně mění data na klonovaném souborovém systému, nové datové bloky jsou vytvářeny aby se tyto změny projevily, ale všechny nezměněné bloky zůstávají sdílené, nezávisle na tom, kolik klonů existuje.

  • Dynamic Striping

    Tato funkce umožňuje zvýšení přenosových rychlostí tím, že je přidáno do zpoolu další zařízení. Délka jednotlivých úseků na discích se rozšíří tak aby pojmula i nový disk, takže jsou vždy využity všechny disk v zpoolu, což hezky rozloží zápis a čtení z těchto disků

  • Variabilní velikosti bloků

    ZFS používá různou délku bloků až do 128 KB. V současnosti dostupný kód dovolí administrátorů vylepšit maximální velikost bloků tak, aby to vyhovovalo datům uloženým na disku (některé úlohy nepracují optimálně rychle s velkými bloky). Je zamýšlena i automatická úprava velikosti bloků podle typu práce s diskovým prostorem.

    Jestliže je povolena komprese dat, je využita proměnlivá délka bloku. Jestliže může být blok zmenšen tak, aby se vešel do menšího bloku, je použita menší velikost bloku, aby se využilo méně prostoru a vylepšilo se čtení (ovšem za cenu zvýšených nároků na využívání CPU při kompresi a dekompresi dat)

  • Jednoduché vytváření souborových systémů

    V ZFS je manipulace souborový systémů v zpool jednodušší než práce s diskovými oddíly v tradičních souborových systémech. Čas a námaha pro vytvoření či změnu ZFS systému je spíše podobná vytváření adresáře, než práce s disky na některých systémech.

  • Další možnosti
    • Priorita I/O operací s nastavením času dokončení
    • Globální optimální třídění a agregace I/O
    • Několikanásobné nezávislé předzpracování dat s automatickou detekcí délky a kroku.
    • Paralelní operace s adresáři v konstantním čase.
    • Kontrolní součty od začátku do konce, dovolující detekci poškození dat (a obnovení, pokud je v zpoolu nastavená redundance)
    • Inteligentní odstraňování a nahrazování vadných zařízení (označováno jako scrubbing a resilvering)
    • Sdílení výkonu a místa mezi různými disky v zpoolu.
    • Zálohované bloky: Metadata jsou replikována uvnitř zpoolu, dvakrát nebo třikrát (podle důležitosti) Jestliže má pool několik zařízení, ZFS se pokouší replikovat všechna na různá zařízení. Takže zpool bez redundance může ztratit data pokud budou špatné sektory na disku, ale metadata budou v tomto scénáři v pořádku.
    • ZFS design (copy-on-write + superbloky) je bezpečný, pokud je povolená cache, jestliže podporují cache flush příkazy ze ZFS. Tato funkce poskytuje nárůst bezpečnosti a výkonu oproti ostatním souborovým systémům.
    • Když je do ZFS přidán celý disk, ZFS automaticky povolí write cache. ZFS to nedělá, pokud je do něj přidán pouze diskový oddíl, protože si nemůže být jistý tím, že by nekolidoval se správou ostatních diskových oddílů.
    • Kódování souborového systému je podporováno, momentálně je však stále ve stádiu alfa.
  • Správa cache

    ZFS používá ARC (to je na další článek, podrobnosti viz wikipedie), novou metodu pro cache management místo tradiční Solarit virtual memory page cache.

Zda Apple implementuje všechny nebo jen část možností ZFS systému je pouze na něm. Vývoj ZFS souborového systému stále ještě není dokončen a stále se na něm pracuje. ZFS by měl umět odstranit disk ze zpoolu. To však nezvládá ani implementace v Solarisu 10 z května 2008. Pracuje se však na tom.

Odkazy z novinek:

Poslat ZFS v budoucím OS X Serveru 10.6 (Snow Leopard) na facebook
Publikováno 30.11.2007
 

Změna barev | Autorská práva | Kontakt | Podpora | RSS kanály
© 2006 Gandalf, Design by Mirek
Creative Commons License