Linux 0.8.0 da ZFSning chiqarilishi, Linux yadrosi uchun ZFS ilovalari

Taxminan ikki yillik rivojlanishdan so'ng taqdim etildi reliz Linux 0.8.0 da ZFS, Linux yadrosi uchun modul sifatida ishlab chiqilgan ZFS fayl tizimining ilovasi. Modul 2.6.32 dan 5.1 gacha bo'lgan Linux yadrolari bilan sinovdan o'tkazildi. Tez orada tayyor o'rnatish paketlari keladi tayyorlanadi Debian, Ubuntu, Fedora, RHEL/CentOS kabi yirik Linux distributivlari uchun. ZFS on Linux moduli allaqachon Debian, Ubuntu, Gentoo, Sabayon Linux va ALT Linux distributivlariga kiritilgan.

Linux-da ZFS-ning bir qismi sifatida fayl tizimining ishlashi va ovoz balandligi menejerining ishlashi bilan bog'liq ZFS komponentlarini amalga oshirish tayyorlandi. Xususan, quyidagi komponentlar amalga oshiriladi: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) va ZPL (ZFS POSIX Layer). Bundan tashqari, loyiha ZFS-dan Luster klaster fayl tizimi uchun backend sifatida foydalanish imkoniyatini beradi. Loyiha ishi OpenSolaris loyihasidan import qilingan va Illumos hamjamiyatining takomillashtirish va tuzatishlari bilan kengaytirilgan original ZFS kodiga asoslangan. Loyiha AQSh Energetika vazirligi bilan tuzilgan shartnoma asosida Livermor milliy laboratoriyasi xodimlari ishtirokida ishlab chiqilmoqda.

Kod bepul CDDL litsenziyasi ostida tarqatiladi, bu GPLv2 bilan mos kelmaydi, bu Linuxdagi ZFS-ni Linux yadrosining asosiy filialiga birlashtirishga imkon bermaydi, chunki GPLv2 va CDDL litsenziyalari ostida kodni aralashtirish qabul qilinishi mumkin emas. Litsenziyalashning ushbu nomuvofiqligini chetlab o'tish uchun CDDL litsenziyasi ostida butun mahsulotni yadrodan alohida ta'minlangan alohida yuklab olinadigan modul sifatida tarqatishga qaror qilindi. Linux kod bazasida ZFS barqarorligi Linux uchun boshqa fayl tizimlari bilan taqqoslanadigan darajada baholanadi.

Asosiy o'zgarishlar:

  • Fayl tizimi va bo'lim darajalarida saqlangan ma'lumotlarni shifrlash uchun o'rnatilgan yordam qo'shildi. Standart shifrlash algoritmi aes-256-ccm. Shifrlash kalitlarini yuklash uchun "zfs load-key" buyrug'i taklif etiladi;
  • “Zfs send” va “zfs receive” buyruqlarini bajarishda shifrlangan ma’lumotlarni uzatish imkoniyati joriy etildi. “-w” opsiyasini belgilashda hovuzda allaqachon shifrlangan ma’lumotlar oraliq shifrlashsiz boshqa hovuzga uzatiladi. Bunday nusxa ko'chirish vaqtida ma'lumotlar jo'natuvchi tomonning kaliti bilan himoyalangan bo'lib qoladi, bu esa ushbu rejimdan ishonchsiz tizimlarga zaxira nusxasini yaratish uchun foydalanish imkonini beradi (agar qabul qiluvchining ishi buzilgan bo'lsa, kalitsiz tajovuzkor ma'lumotlarga kira olmaydi);
  • Yakkama-yakka yoki oynaning bir qismi sifatida ulangan asosiy drayverlarni saqlash havzasidan olib tashlash uchun qo'shimcha yordam. O'chirish "zpool remove" buyrug'i bilan amalga oshiriladi. O'chirish jarayonida olib tashlangan diskdan ma'lumotlar hovuzdagi qolgan asosiy drayverlarga ko'chiriladi;
  • Hovuzning joriy holatini saqlash uchun "zpool checkpoint" buyrug'i qo'shildi va keyingi o'zgarishlarni vaqt ichida saqlangan nuqtaga qaytarish imkoniyati qo'shildi (butun hovuzning surati yaratiladi). Taqdim etilgan xususiyat odatda qaytarib bo'lmaydigan o'zgarishlarga olib keladigan potentsial xavfli murakkab ma'muriy ishlarni bajarish jarayonida foydali bo'lishi mumkin (masalan, yangi ZFS funksiyalari uchun bayroqlarni faollashtirish yoki ma'lumotlarni tozalash);
  • Hovuzda ishlatiladigan drayverlarga endi foydalanilmayotgan sektorlar haqida ma'lumot berish uchun "zpool trim" buyrug'i qo'shildi. TRIM operatsiyasidan foydalanish SSD drayverlarning samaradorligini oshirish va ularning ishlashining pasayishini oldini olish imkonini beradi. TRIM buyruqlarini o'tkazish uchun uzluksiz fon jarayonini yoqish uchun yangi xususiyat "avtotrim" taklif qilindi;
  • Barcha ajratilmagan disk maydonini ishga tushirish uchun "zpool initialize" buyrug'i qo'shildi, bu uning birinchi kirishda ishlashga ta'sir qilmasdan darhol foydalanishga tayyor bo'lishini ta'minlaydi (masalan, VMware VMDK kabi virtuallashtirilgan xotirani joylashtirishda);
  • Loyiha darajasidagi buxgalteriya hisobi va kvotalar uchun qo'shimcha qo'llab-quvvatlash, ilgari mavjud bo'lgan foydalanuvchi va guruh darajasidagi kvotalarni to'ldiradi. Asosan, loyihalar alohida identifikator (loyiha identifikatori) bilan bog'langan ob'ektlarning alohida maydonidir. Bog'lanish "chattr -p" operatsiyasi yoki atribut merosi orqali aniqlanadi. Loyihalarni boshqarish uchun “zfs project” va “zfs projectspace” buyruqlari taqdim etiladi, ular sizga loyihalarni yaratishni boshqarish va ular uchun disk maydoni chegaralarini belgilash imkonini beradi;
  • ZFS bilan turli ishlarni avtomatlashtirish uchun Lua skriptlarini yaratish imkoniyati qo'shildi. Skriptlar "zpool programma" buyrug'i yordamida maxsus izolyatsiya qilingan muhitda ishga tushiriladi;
  • Yangi kutubxona joriy etildi pyzfs, bu Python ilovalaridan ZFSni boshqarish uchun barqaror API taqdim etadi. Kutubxona libzfs_core ustidagi oʻram boʻlib, bir xil funksiyalar toʻplamini taqdim etadi, lekin Pythonga yaqinroq turlardan foydalanadi;
  • Arcstat, arcsummary va dbufstat yordam dasturlari endi Python 3 bilan mos keladi. arcstat.py, arc_summary.py va dbufstat.py yordam dasturlari “.py” kengaytmasi bo'lmagan versiyalarga o'zgartirildi;
  • Linux Direct IO (O_DIRECT) yadro interfeysi uchun qoʻshimcha qoʻllab-quvvatlash, bu sizga buferlashsiz maʼlumotlarga kirish va keshni chetlab oʻtish imkonini beradi;
  • Taqdim etilgan samaradorlikni optimallashtirish:
    • "Skrab" va "resilver" buyruqlarining ishi uni ikki bosqichga bo'lish orqali tezlashtirildi (metama'lumotlarni skanerlash va diskdagi ma'lumotlar bloklarining joylashishini aniqlash uchun alohida bosqich ajratilgan, bu ma'lumotlarni ketma-ket o'qish yordamida keyingi tekshirish imkonini beradi) ;
    • Ajratish sinflari uchun qo'shimcha yordam,
      nisbatan kichik SSD drayverlarini hovuzga kiritish va faqat metadata, DDT ma'lumotlari va fayllar bilan kichik bloklar kabi tez-tez ishlatiladigan bloklarning ayrim turlarini saqlash uchun foydalanishga ruxsat berish;

    • Kabi ma'muriyat uchun buyruqlar samaradorligini oshirish
      "zfs list" va "zfs get", ularning ishlashi uchun zarur bo'lgan metama'lumotlarni keshlash tufayli;

    • Har bir metaslab guruhi uchun alohida "ajratuvchi" jarayonlarni ishga tushirish orqali bloklarni taqsimlash operatsiyalarini parallellashtirish uchun qo'shimcha yordam qo'shildi. Muntazam tizimlarda ishlashning 5-10% ga o'sishi kuzatiladi, lekin katta bo'lganlarda (8 GB SSD, 128 yadroli NUMA, 24 GB RAM) bloklarni taqsimlash operatsiyalarining o'sishi 256% ga yetishi mumkin;
    • "Resilver" buyrug'ini kechiktirish imkoniyati qo'shildi (disklar konfiguratsiyasidagi o'zgarishlarni hisobga olgan holda ma'lumotlar taqsimotini qayta qurish) - agar yangi operatsiyani boshlashda avvalgisi hali tugallanmagan bo'lsa, yangi ishlov beruvchi faqat bajarishni boshlaydi. oldingisi tugagandan so'ng;
    • ZIL (ZFS Intent Log) jurnalida bloklar hanuzgacha saqlash tomonidan qayta ishlanayotganda bloklarni yaratish va qayta ishlashga ruxsat berish uchun optimallashtirishlar amalga oshirildi;
    • Tizimda bo'limlarni (zvol) ro'yxatdan o'tkazish vaqti qisqartirildi. Hovuzda ko'p sonli bo'limlar mavjud bo'lsa, ular "zpool import" bajarilgandan so'ng darhol mavjud bo'ladi;
    • Intel QAT (Quick Assist Technology) ni qo‘llab-quvvatlaydigan chiplar yordamida SHA256 xesh-hisoblash va AES-GSM shifrlash operatsiyalarini apparat tezlashtirish uchun qo‘shimcha yordam. Intel C62x chipset va Atom C3000 protsessorlari uchun apparat tezlashtirish vositalari uchun qo'shimcha yordam.

Manba: opennet.ru

a Izoh qo'shish