فایل سیستم zfs در لینوکس هر روز دارد جای خود را بیشتر باز میکند و در این سیستم عامل به رسمیت شناخته میشود. در zfs شما میتوانید فشردهسازی را تا مرحله filesystem پیش ببرید. در این مقاله توضیح میدهیم که چگونه از یک zfs storage pool فایل سیستم zfs خود را بسازیم و فشردهسازی را در آن فعال کنیم.
در سری اول آموزش در مورد اصول Zfs و نصب آن در لینوکس صحبت کردیم و همچنین یک zfs pool نیز برای خود ساختیم و در این قسمت فایل سیستم zfs خود را خواهیم ساخت.
ایجاد فایل سیستم ZFS
ابتدا تمامی فایل سیستمهای ZFS ساخته شده را با دستور zfs list مشاهده میکنیم. همانظوری که در زیر نشان داده شده است ما یک فایل سیستم با مشخصات نمایش داده شده داریم :
# zfs list NAME USED AVAIL REFER MOUNTPOINT mypool 296K 5.84G 30K /mypool
حال یک فایل سیستم جدید را با دستور zfs create میسازیم :
# zfs create mypool/fs1
همانطور که در زیر میبینیم فایل سیستم مورد نظرمان ساخته شده است :
# zfs list NAME USED AVAIL REFER MOUNTPOINT mypool 170K 5.84G 30K /mypool mypool/fs1 30K 5.84G 30K /mypool/fs1
تنظیم ZFS qoute و ذخیره سازی ها
وقتی شما یک فایل سیستم بسازید به صورت پیشفرض تمامی فضای pool را اشغال خواهد کرد. پس شما باید یک qoute و همچنین ذخیره سازی معین برای آن مشخص کنید. برای تنظیم qoute از دستور zfs set z همانطور که در زیر آمده است استفاده کنید. در اینجا ما یک qouta به اندازه ۱ گیگابایت برای فایل سیستم خود درنظر گرفتهایم :
# zfs set quota=1G mypool/fs1
پس از آن باید مقدار reservation را برای فایل سیستم خود مشخص کنیم در این مثال fs1 فضای ۲۵۶ مگابایت را از کل ۵٫۵۹ گیگ رزرو کرده است و میتوانیم آن را تا ۱ گیگابایت که در qoute مشخص کردیم توسعه دهیم
# zfs set reservation=256M mypool/fs1 # zfs list NAME USED AVAIL REFER MOUNTPOINT mypool 256M 5.59G 32.5K /mypool mypool/fs1 30K 1024M 30K /mypool/fs1
ساخت یک mount point قابل تعویض برای فایل سیستم
در هنگام مانت کردن آن با دستور mypool/fs1 شما میتوانید یک نقطه اتصال یا mount point جایگزین نیز به آن بدهید و هر اسمی که برای آن دوست دارید قرار دهید. برا مثال دستور زیر mount point را /testmnt به جای مورد قبلی قرار میدهد :
# zfs set mountpoint=/testmnt mypool/fs1
همانطور که در زیر میبینیم اول سطر مربوط به اسمی است که خود فایل سیستم دارد و در سطر دوم اسم جایگزینی که برای آن انتخاب کردیم قرار داده شده است :
# zfs list NAME USED AVAIL REFER MOUNTPOINT mypool 256M 5.59G 32.5K /mypool mypool/fs1 30K 1024M 30K /testmnt
و هنگامی که دستور df را وارد کنیم میبینیم که mount point جایگزینی که به آن دادهایم نمایش داده میشود.
# df -h Filesystem Size Used Avail Use% Mounted on .. mypool 5.6G 128K 5.6G 1% /mypool mypool/fs1 1.0G 128K 1.0G 1% /testmnt
فعال کردن فشردهسازی در فایل سیستم zfs
برای فعال کردن فشردهسازی دادهها بر روی zfs میتوانید همانطوری که در زیر نشان داده شده است میزان فشردهسازی را مشخص کنید. هنگامی که این ویژگی تنظیم شد هر فایل حجیم که در این فایل سیستم ذخیر شود به صورت اتوماتیک فشرده خواهد شد.
# zfs set compression=lzjb mypool/fs1
موارد زیر از گزینه های فشردهسازی هستند که میتوانید استفاده کنید :
on off lzjb gzip gzip[1-9] zle
همچنین میتوانید فشردهسازی را بر روی یک فایل سیستم که از قبل ساخته شده نیز فعال کنید. در اینجا فشردهسازی فقط برای فایلهای بزرگ و فایلهایی که ویرایش میشوند انجام میشود و اطلاعات موجود بر روی فایل سیستم به صورت فشرده نشده رها خواهند شد.
بررسی فشردهسازی Zfs
در مثال زیر ما یک فایل rar با حجم ۶۱ مگابایت را بر روی فایل سیستم کپی کردیم :
# ls -lh /testmnt/test.tar -rw-r--r--. 1 root root 61M Nov 11 09:44 /testmnt/test.tar
اگر نگاهی به جزئیات بیاندازیم سایز مصرفی این فایل تنها ۲۰٫۹ مگابایت شده است که نشان دهنده روشن بودن و کارکردن روش فشردهسازی مخصوص است.
# zfs list NAME USED AVAIL REFER MOUNTPOINT mypool 256M 5.59G 32.5K /mypool mypool/fs1 20.9M 1003M 20.9M /testmnt
شما همچنین میتوانید ضریب فشرده یازی را نیز با دستور زیر مشاهده کنید :
# zfs get compressratio mypool/fs1 NAME PROPERTY VALUE SOURCE mypool/fs1 compressratio 2.90x -
جدای از قابلیتهای فشردهسازی که در فایل سیستم zfs مشاهده میشود قابلیتهای بیشمار دیگری نیز وجود دارد که برای همگان جالب خواهد بود. در قسمت بعدی از این سری آموزشها به clone کردن فایل سیستم zfs و همچنین موارد مربوط به snapshot ها خواهیم پرداخت.