انتشار ZFS در لینوکس 0.8.0، پیاده سازی ZFS برای هسته لینوکس

پس از تقریبا دو سال توسعه ارایه شده رهایی ZFS در لینوکس 0.8.0، یک پیاده سازی از سیستم فایل ZFS که به عنوان یک ماژول برای هسته لینوکس طراحی شده است. ماژول با هسته های لینوکس از 2.6.32 تا 5.1 تست شده است. بسته های نصب آماده به زودی آماده خواهد شد برای توزیع های اصلی لینوکس از جمله دبیان، اوبونتو، فدورا، RHEL/CentOS. ماژول ZFS در لینوکس قبلاً در توزیع‌های Debian، Ubuntu، Gentoo، Sabayon Linux و ALT Linux گنجانده شده است.

به عنوان بخشی از ZFS در لینوکس، اجرای اجزای ZFS مربوط به عملکرد سیستم فایل و عملکرد مدیر حجم آماده شده است. به طور خاص، اجزای زیر پیاده‌سازی می‌شوند: SPA (تخصیص دهنده استخر ذخیره)، DMU (واحد مدیریت داده)، ZVOL (حجم شبیه‌سازی شده ZFS) و ZPL (لایه ZFS POSIX). علاوه بر این، این پروژه توانایی استفاده از ZFS را به عنوان پشتیبان برای سیستم فایل خوشه ای Luster فراهم می کند. کار این پروژه بر اساس کد اصلی ZFS است که از پروژه OpenSolaris وارد شده و با بهبودها و اصلاحات انجمن Illumos گسترش یافته است. این پروژه با مشارکت کارکنان آزمایشگاه ملی لیورمور تحت قراردادی با وزارت انرژی ایالات متحده در حال توسعه است.

کد تحت یک مجوز CDDL رایگان توزیع می شود که با GPLv2 ناسازگار است، که اجازه نمی دهد ZFS در لینوکس در شاخه اصلی هسته لینوکس یکپارچه شود، زیرا ترکیب کد تحت مجوزهای GPLv2 و CDDL غیرقابل قبول است. برای دور زدن این ناسازگاری مجوز، تصمیم گرفته شد که کل محصول تحت مجوز CDDL به عنوان یک ماژول قابل دانلود جداگانه، که به طور جداگانه از هسته عرضه می شود، توزیع شود. پایداری ZFS در پایگاه کد لینوکس با سایر سیستم های فایل برای لینوکس قابل مقایسه است.

تغییرات اصلی:

  • اضافه شدن پشتیبانی داخلی برای رمزگذاری داده های ذخیره شده در سیستم فایل و سطوح پارتیشن. الگوریتم رمزگذاری پیش فرض aes-256-ccm است. برای بارگذاری کلیدهای رمزگذاری، دستور "zfs load-key" پیشنهاد شده است.
  • قابلیت انتقال داده های رمزگذاری شده در هنگام اجرای دستورات “zfs send” و “zfs receive” پیاده سازی شده است. هنگام تعیین گزینه "-w"، داده هایی که قبلاً در استخر رمزگذاری شده اند، بدون رمزگشایی میانی به استخر دیگری همانطور که هست منتقل می شوند. در طول چنین کپی برداری، داده ها توسط کلید طرف فرستنده محافظت می شوند، که اجازه می دهد تا از این حالت برای پشتیبان گیری در سیستم های غیرقابل اعتماد استفاده شود (اگر گیرنده در معرض خطر باشد، بدون کلید، مهاجم قادر به دسترسی به داده ها نخواهد بود).
  • پشتیبانی اضافه شده برای حذف درایوهای اصلی از یک استخر ذخیره سازی، که به صورت جداگانه یا به عنوان بخشی از یک آینه متصل می شوند. حذف با دستور "zpool remove" انجام می شود. در طی فرآیند حذف، داده ها از درایو حذف شده در درایوهای اصلی باقی مانده در استخر کپی می شوند.
  • دستور "zpool checkpoint" را برای ذخیره وضعیت فعلی استخر با قابلیت برگرداندن تغییرات بیشتر به نقطه ذخیره شده در زمان اضافه کرد (یک عکس فوری از کل استخر ایجاد می شود). ویژگی ارائه شده ممکن است در فرآیند انجام کارهای اداری پیچیده بالقوه خطرناک که معمولاً منجر به تغییرات غیرقابل برگشت می شود مفید باشد (به عنوان مثال، فعال کردن پرچم ها برای عملکرد جدید ZFS یا پاک کردن داده ها).
  • دستور "zpool trim" را اضافه کرد تا درایوهای مورد استفاده در یک استخر را در مورد بخش هایی که دیگر استفاده نمی شوند مطلع کند. استفاده از عملیات TRIM امکان افزایش کارایی درایوهای SSD و جلوگیری از افت عملکرد آنها را فراهم می کند. برای فعال کردن یک فرآیند پس زمینه پیوسته برای ارسال دستورات TRIM، یک ویژگی جدید "autotrim" پیشنهاد شده است.
  • دستور "zpool initialize" را برای مقداردهی اولیه تمام فضای دیسک تخصیص نیافته اضافه کرد، و اطمینان حاصل کرد که بلافاصله برای استفاده بدون تأثیر بر عملکرد در اولین دسترسی (به عنوان مثال، هنگام میزبانی فضای ذخیره سازی مجازی مانند VMware VMDK) آماده است.
  • اضافه شدن پشتیبانی برای حسابداری و سهمیه در سطح پروژه، تکمیل کننده سهمیه های موجود در سطح کاربر و گروه. در اصل، پروژه ها فضای جداگانه ای از اشیاء هستند که با یک شناسه جداگانه (شناسه پروژه) مرتبط هستند. اتصال از طریق عملیات 'chattr -p' یا از طریق وراثت ویژگی تعیین می شود. برای مدیریت پروژه ها، دستورات "zfs project" و "zfs projectspace" ارائه شده است که به شما امکان می دهد ایجاد پروژه ها را مدیریت کنید و محدودیت فضای دیسک را برای آنها تعیین کنید.
  • قابلیت ایجاد اسکریپت های Lua برای خودکارسازی کارهای مختلف با ZFS اضافه شده است. اسکریپت ها در محیط های ایزوله خاص با استفاده از دستور "zpool program" راه اندازی می شوند.
  • کتابخانه جدید اجرا شد pyzfs، که یک API پایدار برای مدیریت ZFS از برنامه های پایتون ارائه می دهد. این کتابخانه یک پوشش روی libzfs_core است و مجموعه‌ای از توابع یکسان را ارائه می‌کند، اما از انواع نزدیک‌تر به پایتون استفاده می‌کند.
  • ابزارهای arcstat، arcsummary و dbufstat اکنون با Python 3 سازگار هستند. ابزارهای arcstat.py، arc_summary.py و dbufstat.py به نسخه هایی بدون پسوند ".py" تغییر نام داده اند.
  • پشتیبانی از رابط هسته Linux Direct IO (O_DIRECT) اضافه شده است که به شما امکان می دهد بدون بافر به داده ها دسترسی داشته باشید و کش را دور بزنید.
  • بهینه سازی عملکرد ارائه شده:
    • کار دستورات "scrub" و "resilver" با تقسیم آن به دو فاز تسریع شده است (فاز جداگانه ای برای اسکن ابرداده و تعیین محل بلوک های داده بر روی دیسک اختصاص داده شده است که امکان تأیید بیشتر با استفاده از خواندن متوالی داده ها را فراهم می کند) ;
    • پشتیبانی اضافه شده برای کلاس های تخصیص،
      امکان گنجاندن درایوهای SSD نسبتاً کوچک در یک Pool و استفاده برای ذخیره انواع خاصی از بلوک‌های پرکاربرد، مانند ابرداده، داده‌های DDT و بلوک‌های کوچک با فایل‌ها.

    • افزایش عملکرد دستورات برای مدیریت، مانند
      "لیست zfs" و "zfs get" به دلیل ذخیره ابرداده های لازم برای عملکرد آنها.

    • پشتیبانی برای موازی کردن عملیات تخصیص بلوک با راه اندازی فرآیندهای "تخصیص دهنده" جداگانه برای هر گروه متاسلب اضافه شده است. در سیستم های معمولی، افزایش عملکرد 5-10٪ وجود دارد، اما در سیستم های بزرگ (8 گیگابایت SSD، 128 هسته NUMA، 24 گیگابایت رم)، افزایش عملیات تخصیص بلوک می تواند به 256٪ برسد.
    • اضافه شدن امکان اجرای تاخیری دستور "resilver" (بازسازی توزیع داده ها با در نظر گرفتن تغییرات در پیکربندی درایوها) - اگر هنگام شروع یک عملیات جدید، عملیات قبلی هنوز کامل نشده باشد، کنترل کننده جدید فقط اجرا را آغاز می کند. پس از اتمام قبلی؛
    • بهینه‌سازی‌هایی در گزارش ZIL (Log قصد ZFS) انجام شده است تا امکان ایجاد و پردازش بلوک‌ها در زمانی که بلوک‌هایی هنوز توسط ذخیره‌سازی پردازش می‌شوند، فراهم شود.
    • زمان ثبت پارتیشن ها (zvol) در سیستم کاهش یافته است. هنگامی که یک استخر حاوی تعداد زیادی پارتیشن باشد، اکنون بلافاصله پس از اجرای "zpool import" در دسترس هستند.
    • پشتیبانی از شتاب سخت‌افزاری محاسبات هش SHA256 و عملیات رمزگذاری AES-GSM با استفاده از تراشه‌های پشتیبانی کننده اینتل QAT (فناوری کمک سریع) اضافه شده است. پشتیبانی از ابزارهای شتاب سخت افزاری برای چیپست Intel C62x و CPU Atom C3000 اضافه شده است.

منبع: opennet.ru

اضافه کردن نظر