Release av ZFS på Linux 0.8.0, implementeringar av ZFS för Linux-kärnan

Efter nästan två års utveckling presenteras släpp ZFS på Linux 0.8.0, en implementering av ZFS-filsystemet paketerat som en modul för Linux-kärnan. Modulen har testats med Linux-kärnor från 2.6.32 till 5.1. Klara installationspaket kommer snart kommer att förberedas för större Linux-distributioner inklusive Debian, Ubuntu, Fedora, RHEL/CentOS. ZFS på Linux-modulen ingår redan i Debian, Ubuntu, Gentoo, Sabayon Linux och ALT Linux-distributioner.

Som en del av ZFS på Linux har en implementering av ZFS-komponenter relaterade till både driften av filsystemet och volymhanterarens funktion förberetts. I synnerhet implementeras följande komponenter: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) och ZPL (ZFS POSIX Layer). Dessutom ger projektet möjligheten att använda ZFS som en backend för Luster-klusterfilsystemet. Projektets arbete är baserat på original ZFS-kod importerad från OpenSolaris-projektet och förbättrad med förbättringar och korrigeringar från Illumos-communityt. Projektet utvecklas med deltagande av anställda vid Livermore National Laboratory enligt ett kontrakt med US Department of Energy.

Koden distribueras under en gratis CDDL-licens, som är inkompatibel med GPLv2, som inte tillåter att ZFS på Linux integreras i huvudgrenen av Linuxkärnan, eftersom blandning av kod under GPLv2- och CDDL-licenser inte är tillåten. För att kringgå denna licensinkompatibilitet beslutades det att distribuera hela produkten under CDDL-licensen som en separat laddningsbar modul, som levereras separat från kärnan. Stabiliteten för ZFS på Linux-kodbasen är klassad som jämförbar med andra filsystem för Linux.

Huvudändringar:

  • Tillagt inbyggt stöd för kryptering av lagrad data på nivå med filsystem och partitioner. Standardkrypteringsalgoritmen är aes-256-ccm. Kommandot "zfs load-key" har föreslagits för att ladda krypteringsnycklar;
  • Implementerade möjligheten att överföra krypterad data när kommandona 'zfs send' och 'zfs receive' kördes. När alternativet "-w" specificeras, överförs data som redan är krypterade i poolen till en annan pool som den är, utan mellanliggande dekryptering. Med sådan kopiering förblir data skyddade av avsändarens nyckel, vilket gör det möjligt att använda detta läge för säkerhetskopiering till opålitliga system (i händelse av kompromiss med mottagaren kommer angriparen inte att kunna komma åt data utan nyckeln);
  • Tillagt stöd för att ta bort primära enheter från en lagringspool, anslutna både individuellt och som en del av en spegel. Borttagning utförs med kommandot "zpool remove". Raderingsprocessen kopierar data från den exkluderade enheten till de återstående primära enheterna i poolen;
  • Lade till kommandot "zpool checkpoint" för att spara poolens nuvarande tillstånd med möjligheten att återställa ytterligare ändringar av den sparade tidpunkten (en ögonblicksbild av hela poolen skapas). Den presenterade funktionen kan vara användbar i processen att utföra potentiellt farligt komplext administrativt arbete, vilket under normala förhållanden leder till oåterkalleliga förändringar (till exempel aktivering av flaggor för ny ZFS-funktion eller radering av data);
  • Kommandot "zpool trim" har lagts till för att informera de enheter som används i poolen om sektorer som inte längre används. Användningen av TRIM-operationen gör det möjligt att öka effektiviteten hos SSD-enheter och förhindra försämring av deras prestanda. En ny "autotrim"-egenskap har föreslagits för att möjliggöra den kontinuerliga bakgrundsprocessen för att sända TRIM-kommandon;
  • Lade till kommandot "zpool initialize" för att initiera allt icke-allokerat diskutrymme, vilket gör att det är omedelbart redo att användas, utan prestandaförsämring vid första åtkomst (till exempel när du är värd för virtualiserade lagringar som VMware VMDK);
  • Lade till stöd för redovisnings- och projektnivåkvoter, utöver tidigare tillgängliga användar- och gruppnivåkvoter. I huvudsak är projekt ett separat utrymme av objekt associerade med en separat identifierare (projekt-ID). Bindningen definieras via 'chattr -p'-operationen eller via attributarv. För projektledning presenteras kommandona "zfs project" och "zfs projectspace", som låter dig hantera skapandet av projekt och ställa in diskutrymmesgränser för dem;
  • Lade till möjligheten att skapa Lua-skript för att automatisera olika arbeten med ZFS. Skript körs i speciella isolerade miljöer med hjälp av kommandot "zpool program";
  • Nytt bibliotek implementerat pyzfs, som tillhandahåller ett stabilt API för att administrera ZFS från Python-applikationer. Biblioteket är ett omslag runt libzfs_core och tillhandahåller en identisk uppsättning funktioner, men använder närmare Python-typer;
  • Verktygen arcstat, arcsummary och dbufstat har gjorts kompatibla med Python 3. Verktygen arcstat.py, arc_summary.py och dbufstat.py har bytt namn till versioner utan tillägget ".py".
  • Lade till stöd för Linux Direct IO (O_DIRECT) kärngränssnitt, som tillåter åtkomst till data utan att buffra och kringgå cachen;
  • Prestandaoptimeringar introducerade:
    • Arbetet med kommandona "scrub" och "resilver" har accelererats på grund av uppdelningen i två faser (en separat fas har tilldelats för att skanna metadata och bestämma platsen för block med data på disken, vilket möjliggör ytterligare verifiering med sekventiell data läsning);
    • Lade till stöd för tilldelningsklasser,
      tillåta relativt små SSD:er att poolas och användas för att endast lagra vissa typer av vanliga block, såsom metadata, DDT-data och små filblock;

    • Förbättrad prestanda för adminkommandon som t.ex
      "zfs list" och "zfs get", genom att cachelagra de metadata som är nödvändiga för deras funktion;

    • Lade till stöd för parallellisering av blockallokeringsoperationer genom att köra separata allokeringsprocesser för varje metaslab-grupp. På konventionella system finns en prestandaökning på 5-10%, men på stora (8 128 GB SSD, 24 kärnor NUMA, 256 GB RAM) kan ökningen av blockallokeringsoperationer nå 25%;
    • Lade till möjligheten till uppskjuten exekvering av kommandot "resilver" (återuppbyggnad av datadistribution med hänsyn till förändringar i konfigurationen av enheter) - om den föregående ännu inte har slutförts när du startar en ny operation, kommer den nya hanteraren att börja exekvera först efter slutet av den föregående;
    • Optimering har lagts till i ZIL (ZFS Intent Log) för att tillåta skapande och bearbetning av block i närvaro av block som fortfarande bearbetas av lagringen;
    • Minskad registreringstid för partitioner (zvol) i systemet. När en pool innehåller ett stort antal partitioner är de nu tillgängliga direkt efter att ha gjort "zpool-import";
    • Tillagt stöd för hårdvaruaccelererad beräkning av SHA256-hashar och AES-GSM-krypteringsoperationer med Intel QAT (Quick Assist Technology)-chips. Tillagt stöd för hårdvaruacceleration av Intel C62x-chipset och CPU Atom C3000.

Källa: opennet.ru

Lägg en kommentar