لینکس 0.8.0 پر ZFS کی ریلیز، لینکس کرنل کے لیے ZFS کا نفاذ

تقریباً دو سال کی ترقی کے بعد پیش کیا رہائی لینکس 0.8.0 پر ZFS، ZFS فائل سسٹم کا نفاذ، جو لینکس کرنل کے لیے ایک ماڈیول کے طور پر ڈیزائن کیا گیا ہے۔ ماڈیول کا تجربہ لینکس کرنل کے ساتھ 2.6.32 سے 5.1 تک کیا گیا ہے۔ تیار انسٹالیشن پیکجز جلد آرہے ہیں۔ تیار کیا جائے گا لینکس کی بڑی تقسیم کے لیے بشمول Debian، Ubuntu، Fedora، RHEL/CentOS۔ لینکس ماڈیول پر ZFS پہلے ہی Debian، Ubuntu، Gentoo، Sabayon Linux اور ALT Linux کی تقسیم میں شامل ہے۔

لینکس پر ZFS کے حصے کے طور پر، فائل سسٹم کے آپریشن اور والیوم مینیجر کے کام کاج دونوں سے متعلق ZFS اجزاء کا نفاذ تیار کیا گیا ہے۔ خاص طور پر، مندرجہ ذیل اجزاء کو لاگو کیا جاتا ہے: SPA (اسٹوریج پول ایلوکیٹر)، DMU (ڈیٹا مینجمنٹ یونٹ)، ZVOL (ZFS ایمولیٹڈ والیوم) اور ZPL (ZFS POSIX Layer)۔ مزید برآں، پروجیکٹ 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 کمانڈز کو پاس کرنے کے لیے ایک مسلسل پس منظر کے عمل کو فعال کرنے کے لیے، ایک نئی پراپرٹی "آٹوٹریم" تجویز کی گئی ہے۔
  • تمام غیر مختص شدہ ڈسک کی جگہ کو شروع کرنے کے لیے "zpool initialize" کمانڈ کو شامل کیا گیا، اس بات کو یقینی بناتے ہوئے کہ یہ پہلی رسائی پر کارکردگی کو متاثر کیے بغیر فوری طور پر استعمال کے لیے تیار ہے (مثال کے طور پر، جب ورچوئلائزڈ اسٹوریج جیسے VMware VMDK کی میزبانی کرنا)؛
  • پراجیکٹ کی سطح کے اکاؤنٹنگ اور کوٹوں کے لیے معاونت شامل کی گئی، جو پہلے سے دستیاب صارف اور گروپ کی سطح کے کوٹے کی تکمیل کرتی ہے۔ بنیادی طور پر، پروجیکٹس ایک علیحدہ شناخت کنندہ (پروجیکٹ ID) سے وابستہ اشیاء کی ایک الگ جگہ ہیں۔ بائنڈنگ کا تعین 'chattr -p' آپریشن کے ذریعے یا انتساب وراثت کے ذریعے کیا جاتا ہے۔ پروجیکٹس کو منظم کرنے کے لیے، "zfs پروجیکٹ" اور "zfs پروجیکٹ اسپیس" کمانڈز فراہم کیے جاتے ہیں، جو آپ کو پروجیکٹس کی تخلیق کا انتظام کرنے اور ان کے لیے ڈسک کی جگہ کی حد مقرر کرنے کی اجازت دیتے ہیں۔
  • ZFS کے ساتھ مختلف کاموں کو خودکار کرنے کے لیے Lua اسکرپٹ بنانے کی صلاحیت کو شامل کیا۔ "zpool پروگرام" کمانڈ کا استعمال کرتے ہوئے اسکرپٹ کو خصوصی الگ تھلگ ماحول میں لانچ کیا جاتا ہے۔
  • نئی لائبریری کا نفاذ pyzfs، جو Python ایپلیکیشنز سے ZFS کے انتظام کے لیے ایک مستحکم API فراہم کرتا ہے۔ لائبریری libzfs_core پر ایک ریپر ہے اور فنکشنز کا ایک جیسا سیٹ فراہم کرتی ہے، لیکن Python کے قریب اقسام کا استعمال کرتی ہے۔
  • arcstat، arcsummary اور dbufstat یوٹیلیٹیز اب Python 3 کے ساتھ مطابقت رکھتی ہیں۔ arcstat.py، arc_summary.py اور dbufstat.py یوٹیلیٹیز کو ".py" ایکسٹینشن کے بغیر ورژن میں تبدیل کر دیا گیا ہے۔
  • لینکس ڈائریکٹ IO (O_DIRECT) کرنل انٹرفیس کے لیے سپورٹ شامل کیا گیا، جو آپ کو بفرنگ کے بغیر ڈیٹا تک رسائی اور کیشے کو بائی پاس کرنے کی اجازت دیتا ہے۔
  • پیش کردہ کارکردگی کی اصلاح:
    • "اسکرب" اور "ریسلور" کمانڈز کے کام کو دو مرحلوں میں تقسیم کرکے تیز کیا گیا ہے (میٹا ڈیٹا کو اسکین کرنے اور ڈسک پر ڈیٹا بلاکس کے مقام کا تعین کرنے کے لیے ایک الگ مرحلہ مختص کیا گیا ہے، جو ترتیب وار ڈیٹا ریڈنگ کا استعمال کرتے ہوئے مزید تصدیق کی اجازت دیتا ہے) ;
    • ایلوکیشن کلاسز کے لیے تعاون شامل کیا گیا،
      نسبتاً چھوٹی ایس ایس ڈی ڈرائیوز کو پول میں شامل کرنے کی اجازت دینا اور صرف مخصوص قسم کے اکثر استعمال ہونے والے بلاکس کو ذخیرہ کرنے کے لیے استعمال کیا جاتا ہے، جیسے میٹا ڈیٹا، ڈی ڈی ٹی ڈیٹا اور فائلوں کے ساتھ چھوٹے بلاکس؛

    • انتظامیہ کے لیے کمانڈز کی کارکردگی میں اضافہ، جیسے
      "zfs list" اور "zfs get"، ان کے آپریشن کے لیے ضروری میٹا ڈیٹا کی کیشنگ کی وجہ سے؛

    • ہر میٹا لیب گروپ کے لیے الگ الگ "مختص کرنے والے" کے عمل کو شروع کرکے بلاک ایلوکیشن آپریشنز کو متوازی کرنے کے لیے معاونت شامل کی گئی۔ ریگولر سسٹمز پر، کارکردگی میں 5-10% کا اضافہ ہوتا ہے، لیکن بڑے سسٹمز پر (8 GB SSD, 128 core NUMA, 24 GB RAM) بلاک ایلوکیشن آپریشنز میں اضافہ 256% تک پہنچ سکتا ہے۔
    • "ریزلور" کمانڈ کے تاخیر سے عمل درآمد کے امکان کو شامل کیا گیا (ڈرائیوز کی ترتیب میں اکاؤنٹ میں ہونے والی تبدیلیوں کو مدنظر رکھتے ہوئے ڈیٹا کی تقسیم کو دوبارہ بنانا) - اگر نیا آپریشن شروع کرتے وقت پچھلا ابھی تک مکمل نہیں ہوا ہے، تو نیا ہینڈلر صرف اس پر عمل درآمد شروع کرے گا۔ پچھلا ختم ہونے کے بعد؛
    • ZIL (ZFS Intent Log) لاگ میں اصلاح کی گئی ہے تاکہ بلاکس کی تخلیق اور پروسیسنگ کی اجازت دی جا سکے جب بلاکس ابھی بھی اسٹوریج کے ذریعے پروسیس ہو رہے ہوں؛
    • سسٹم میں پارٹیشنز (zvol) کو رجسٹر کرنے کا وقت کم کر دیا گیا ہے۔ جب ایک پول میں پارٹیشنز کی ایک بڑی تعداد ہوتی ہے، تو وہ اب "zpool امپورٹ" کو انجام دینے کے فوراً بعد دستیاب ہوتے ہیں۔
    • Intel QAT (کوئیک اسسٹ ٹیکنالوجی) کو سپورٹ کرنے والی چپس کا استعمال کرتے ہوئے SHA256 ہیش کیلکولیشنز اور AES-GSM انکرپشن آپریشنز کے ہارڈویئر ایکسلریشن کے لیے سپورٹ شامل کی گئی۔ Intel C62x chipset اور Atom C3000 CPU کے لیے ہارڈویئر ایکسلریشن ٹولز کے لیے سپورٹ شامل کیا گیا۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں