حامد خاکباز
حامد خاکباز
خواندن ۵ دقیقه·۲ سال پیش

ZFS چیست؟ معرفی و آشنایی با فایل سیستم Zettabyte File System

منظور از فایل سیستم ZFS چیست؟ فایل سیستمZFS چه کاربردی دارد؟ اگر به مفاهیم ذخیره سازی علاقه مند هستید این سلسله مطالب را مطالعه کنید. در این سری مطالب به معرفی کاربردی و بررسی اولیه و تحلیل این File System خواهیم پرداخت. در نظر داشته باشید که هرآنچه در این مطلب بیان می شود تنها معرفی مفاهیم و قابلیت های ZFS هست و بسیاری از کاربردهای آن در مطالب بعدی پوشش داده می شود. همچنین پیش نیاز این مطالب آشنایی با مفاهیمی از قبیل Software Defined Storage و Storage Virtualization است.


فایل سیستم ZFS چیست؟

ممکن است در هنگام نصب سیستم عامل هایی از قبیل Ubuntu ، Debian و ... گزینه انتخاب فایل سیستم ZFS را دیده باشید و یا اگر با FreeNAS یا Oracle Storage آشنایی دارید اسم این فایل سیستم را شنیده اید. عبارتZFS مخفف Zettabyte File System و تلفظ اصلی آن ZFS ((زیفس)) است. این فایل سیستم توسط فردی به نام Matthew Ahrens و چند نفر دیگر ساخته شده است.

که برای اولین بار و در ابتدا برای سیستم‌عامل Solaris طراحی شده است. ZFS در آغاز کار خود Open Source نبود ولی پس از چند سال با مطرح شدن عنوان OpenZFS پا به دنیای Community گذاشت و هم اکنون Source Code های آن بر روی github قابل مشاهده و دانلود است.

نکته ای که در خصوص ایدهZFS جالب است این است که دید و انتظارات شما را در خصوص یک فایل سیستم تغییر می دهد چراکه ZFS ترکیبی از خصوصیات File System و Volume Manager است و یک مجموعه دیسک را دربرمی گیرد. به عبارت دیگر ZFS یک Volume Manager منطقی و Logically است و یک Virtualized Storage را مدیریت کرده و توسعه می دهد.

از کاربرد های این فایل سیستم می توان به پشتیبانی از میزان فضای بسیارزیاد ذخیره سازی اشاره کرد. این فایل سیستم قابلیت مقیاس پذیری بالایی دارد به شکلی که می توان حجم فضا پوشش داده توسط آن را تا مقادیر Zettabyte افزایش و ارتقا داد. فایل سیستم ZFS دیتا را ایمن نگه می دارد و با حذف کردن محدودیت های فایل سیستم های پیش از خود مدیریت دیتاها و دیسک ها را ساده می کند.

با راهکار (ZFS) Zettabyte File System می توان یک Shared Storage به صورت Open source ارایه داد. به این معنا که اگر به دنبال یک راهکارOpen Source شده برای راه اندازی زیرساخت Storage خود هستید می توانید روی ZFS حساب کنید. اما باید در نظر داشته باشید که تنها یک تنظیم اشتباه کوچک می تواند شما را از درک بازدهی بالای آن محروم کند.

فایل سیستم ZFS در لینوکس (یا به اصطلاح Co-Founder آن OpenZFS ) می تواند با LVM ترکیب شده و نیاز به RAID Controller و یا Smart Array را در یک کلاستر ذخیره سازی حذف کند. البته بدین شکل که از Compute Resource سیستم عامل خود برای تامین منابع پردازشی مورد نیاز فرآیند هایی از قبیلRAID بندی استفاده می کند. از این رو یکی از مشکلات شایع در یک کلاستر ذخیره سازی ZFS مشکل High Memory Usage یا مصرف بالای RAM بر روی Storage Node است که به عنوان یک hidden cost باید در نظر گرفته شود.

برخی تصور می کنند که با ZFS یک RAID نرم افزاری بسته می شود اما در واقع RAID ای که در ZFS بسته می شود نرم افزاری و یا سخت افزاری نیست بلکه در سطح فایل سیستم و بر روی دیسک ها اتفاق می افتد.فایل سیستم ZFS قابلیت Extend کردن Storage Pool را دارد از این رو می توان به مرور زمان و با اضافه کردنDisk Group های جدید اندازه حجمPool ، Volume و حتی LUN خود را افزایش داد.

به عبارتی مکانیسم افزایش فضا در Storage ای که رویZFS باشد بسیار ساده تر صورت می گیرد چرا که به عنوان مثال RAID1 در ZFS در سطح Disk Group نیز قابل مدیریت است و نیاز به Partition جدید نیست و بر روی همان Pool در هر زمانی قابل انجام است.

اما ZFS نیز مانند سایر راهکار های ذخیره سازی مکانیسم هایی برای Caching دارد که می تواند ازDisk هایی به عنوانCache در یک Pool استفاده کند. ولی آنچه که ZFS را متمایز می کند وجود مواردی از قبیل ARC ، L2ARC SLog و ZIL است که در مطالب بعدی به توضیح مفصل هر کدام از این قابلیت ها خواهیم پرداخت که منجر به افزایش Perfomance ، کاهش Latency و همچنین حفاظت از داده ها می شوند.

به عبارت دیگر ZFS با ترکیب کردن DRAM ، Flash و هارد دیسک و با کاهش Write/read Latency به دنبال ایجاد یک تعادل و بالانس نسبی میان بازدهی و هزینه است تا بتواند به TCO کمتری برسد. همچنینZFS با استفاده ترکیبی از این تکنیک های ذکر شده به دنبال کاهش نیاز به مانیتور مداوم Storage برای مدیریت و برطرف کردن I/O bottleneck است.

قابلیت دیگری که توسطZFS ارایه می شوند پشتیبانی به طور خاص از الگوریتم های LZ4 ، LZJB و ... در فرآیندCompression است که دیتا اصلی را به یک نمونه مطابق با اصل ولی با حجم کمتر تبدیل می کند تا در حین ذخیره سازی باعث کاهش فضای اشغال شده بر روی دیسک شود.

در یک کلاستر استوریج که باZFS راه اندازی شده است می توان به قابلیت replication در ZFS اشاره کرد که می تواند یک Replica را بر رویStorage Node دیگری ارسال وSync کند و بعد از یکDisaster از Storage Pool خود یک نسخه Backup را بازگردانی کند.

اما یک قابلیت پیشرفته درZFS گرفتن Snapshot در سطح Storage است که می تواند به عنوان یک راهکار Offline Backup و به عنوان بخشی از یک business continuity plan در نظر گرفته شود چرا که ZFS در این ویژگی به کمک مدل Copy-on-Write در ساختار Transitionally خود می تواند به صورت ایزوله از تمام دیتا های تحت کنترل فایل سیستم (و یا تنها ازتغییرات آن نسبت به سری قبلی) Backup Point تهیه کند.

فایل سیستم ZFS در مقیاس کوچک از نظر مدیریت بسیار ساده است، اما در مقیاس های بالا و در اندازه های بزرگ نیازمند طراحی های بسیار عمیق و دقیق دارد. از طرفی فایل سیستم ZFS به عنوان یک راهکارShared Storage تنها قابلیت ارایهBlock Storage را دارد و امکان ارایه Object و یاFile-Level را ندارد. همچنین قابلیت ها و یا باگ های فایل سیستم ZFS از طریق بروزرسانی Firmware آن تغییر یا گسترش می یابد اما گفته می شود که بر خلاف سایر راهکارهای مشابه قابلیت Downgrade کردن Firmware را ندارد.

فایل سیستم
Cloud Engineer
شاید از این پست‌ها خوشتان بیاید