ZFS یک فایل سیستم ترکیبی به همراه ابزار مدیریت فضا و چندین قابلیت فوقالعاده دیگر است که ZFS را تبدیل به انتخابی فوقالعاده برای سیستم عامل کرده است. این اولین قسمت از مقاله های ZFS است که برای شما آماده کردهایم و در آن به معرفی این فایل سیستم و ویژگیهای آن و همچنین نجوه نصب آن بر روی سیستم عامل های لینوکسی و ساخت ZFS pool و دستورات ZFS zpool اشاره کرده ایم.
۱ – معرفی
در زیر برخی از قابلیتهای این فایل سیستم را آوردهایم :
– محافظت در برابر خراب شدن اطلاعات
– پشتیبانی از فضاهای ذخیره سازی با حجم بالا
– فشردهسازی مؤثر و کارآمد اطلاعات
– گرفتن snapshot از فایل سیستم
– پشتیبانی از Raid Z
– بررسی سلامت فایل ها
– پشتیبانی و تعمیر خودکار nfsv4cl
ZFS به صورت رسمی برای sun microsystems و برای پلتفرم سولاریس توسعه یافته است و توسعه آن از سال ۲۰۱۰ شروع شد ؛ پس از آن اوراکل sun microsystems را تصاحب کرد و فایل سیستم ZFS را توسعه داد. با پایدار شدن ZFS این روزها این فایل سیستم در کامپیوتر های لینوکسی از محبوبیت بسیار زیادی برخوردار شده است به طوری که برای مثال اوبونتو وعده داده است که این فایل سیستم را از نسخه ۱۶٫۰۴ به توزیع اضافه کند.
پورت این فایل سیستم به لینوکس توسط Lawrence Livermore National Laboratory انجام گرفته است و این فایل سیستم در لینوکس به صورت یک ماژول کرنل است که میتوانید آن را دانلود ؛ کامپایل و نصب کنید و برای اینکار نیاز به پچ کردن و یا کامپایل کردن مجدد کرنل نخواهید داشت.
شما میتوانید پکیج سورس Zfs را از این لینک دریافت کنید
۲ – نصب ZFS در لینوکس
در این قسمت میخواهیم zfs را بر روی centOS سرور نصب کنیم. با این حال تمامی دستوراتی که اجرا میکنیم در سیستم عامل های دیگر هم جواب خواهند داد و عمده ترین تفاوت ممکن است در پیکج منیجر سیستم عامل باشد. اما دستورات Zfs در همه سیستم عامل ها مشابه است و از این جهت تفاوتی احساس نمیشود.
دستورات زیر را در centos وارد کنید تا zfs بر روی سیستم عامل نصب شود :
# yum localinstall --nogpgcheck https://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # yum localinstall --nogpgcheck http://archive.zfsonlinux.org/epel/zfs-release.el6.noarch.rpm # yum install kernel-devel zfs
در هنگام نصب مطمئن شوید همه پیش نیازها وجود دارند و به درستی نصب میشوند. خراب بودن یکی از وابستگیها هم باعث تأثیر گذاشتن بر ادامه مراحل و نصب zfs خواهد شد. همچنین نیاز دارید تا کامپایلر gcc را نیز بر روی سیستم خود نصب کنید. قبل از نصب zfs کامپایلر gcc را بر روی سیستم خود نصب کنید.
سپس مطمئن شوید که تمامی ماژول های ZFS بر روی کرنل load شده باشند. برای اینکار از دستور lsmod استفاده کنید همانطوری که در زیر آن را به کار برده ایم :
# lsmod | grep zfs zfs 1188621 0 zcommon 45591 1 zfs znvpair 81046 2 zfs,zcommon zavl 6900 1 zfs zunicode 323051 1 zfs spl 264548 5 zfs,zcommon,znvpair,zavl,zunicode
ما در این سرور چندین دیسک را load کردهایم تا قابلیت و قدرت ZFS را تست کنیم.
# ls -l /dev/sd* brw-rw----. 1 root disk 8, 0 Jul 15 15:52 /dev/sda brw-rw----. 1 root disk 8, 1 Jul 15 15:52 /dev/sda1 brw-rw----. 1 root disk 8, 2 Jul 15 15:52 /dev/sda2 brw-rw----. 1 root disk 8, 3 Jul 15 15:52 /dev/sda3 brw-rw----. 1 root disk 8, 16 Jul 16 10:57 /dev/sdb brw-rw----. 1 root disk 8, 32 Jul 16 10:57 /dev/sdc brw-rw----. 1 root disk 8, 48 Jul 16 10:58 /dev/sdd brw-rw----. 1 root disk 8, 64 Jul 16 11:27 /dev/sde brw-rw----. 1 root disk 8, 80 Jul 16 11:27 /dev/sdf
۳ – ساخت Zpool
دستورات zpool به شما کمک میکند تا فرآیند ذخیره سازی در استخر یا pool های Zfs را کانفیگ کنید. Pool های ذخیره سازی مجموعهای از دستگاهها هستند که ذخیره سازی فیزیکی را برای zfs ممکن میکنند.
دستور زیر یک zpool راه اندازی میکند :
# zpool create -f mypool raidz sdb sdc sdd sde sdf
در مثال بالا :
– create یک دستور برای ساخت pool است
– آپشن -f گزینه پارتیشن لیبل را رد میکند ؛ چرا که این پارتیشن ها جدید هستند
– raidz هم یک مرحله از raid است که منظور RAIDZ نیست و raid5 در اینجا استفاده میشود که کارآمدی بهتری را به ارمغان خواهد آورده
پس از آن وضعیت zpool هایی که ساختهایم را بررسی میکنیم :
# zpool status pool: mypool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM mypool ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 sdb ONLINE 0 0 0 sdc ONLINE 0 0 0 sdd ONLINE 0 0 0 sde ONLINE 0 0 0 sdf ONLINE 0 0 0 errors: No known data errors
پس از اینکه pool ساخته شد اگر دستور df -h را وارد کنید خواهیم دید که pool های ساخته شده به صورت خودکار در mount point خود ماونت شده اند.
# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vglocal-rootlv 14G 2.4G 11G 18% / tmpfs 939M 0 939M 0% /dev/shm /dev/sda1 504M 46M 433M 10% /boot mypool 3.9G 0 3.9G 0% /mypool
۴ – ساخت pool های mirror شده
برای ساخت pool های mirror شده دستور create را با آپشن های معرفی شده در ادامه استفاده میکنیم. اگر یکی از دیسک ها در ذخیره اطلاعات به مشکل خود دیسک دیگر وظیفه ذخیره را انجام میدهد و مشکلی برای اطلاعات پیش نخواهد آمد. پس از اینکه دیسک خراب شده جایگزین شد اطلاعات دوباره mirror شده (به آن resilvering نیز میگویند) و سیستم کار خود را همچنان ادامه میدهد.
# zpool create -f mypool mirror sdb sdc mirror sdd sde
پس از آن وضعیت zpool میرور شده را چک کنید :
# zpool status -v pool: mypool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM mypool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 sdb ONLINE 0 0 0 sdc ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 sdd ONLINE 0 0 0 sde ONLINE 0 0 0 errors: No known data errors
۵ – import و export در zpool
اگر بخواهید pool های zfs را از سیستمی به سیستم دیگر وارد کنید این قابلیت به کمک شما خواهد آمد. فایل سیستم ZFS این کار را با export کردن pool از یک سیستم به سیستم دیگر انجام میدهد و سپس میتوانید آن را به سیستم مورد نظر import کنید. برای import و export کردن نیز میتوانید دو دستور زیر را به کار ببرید :
# zpool export mypool # zpool import mypool
۶ – مشاهده I/O stat یک Zfs Pool
برای مشاهده I/O stat های یک pool میتوانید از دستور زی استفاده کنید که خروجی آن را نیز نمایش دادهایم :
# zpool iostat -v mypool capacity operations bandwidth pool alloc free read write read write ---------- ----- ----- ----- ----- ----- ----- mypool 147K 4.95G 0 0 33 252 mirror 54K 3.97G 0 0 10 84 sdb - - 0 0 536 612 sdc - - 0 0 282 612 mirror 93K 1008M 0 0 23 168 sdd - - 0 0 288 696 sde - - 0 0 294 696 ---------- ----- ----- ----- ----- ----- -----
۷ – پاک کردن یک ZFS pool
برای تخریب یک pool از دستور destroy به صورت زیر استفاده میکنیم :
# zpool destroy mypool
۸ – جاگزین کردن فایلهای خراب شده و ناقص در ZFS pool
برای جاگزینی یک دیسک بعد از خراب شدن و یا از دست دادن آن از دستور زیر استفاده کنید :
# zpool replace mypool sde sdf
۹ – گسترش و توسعه یک ZFS Pool با دیسک جدید
برای توسعه یک Zfs Pool میتوانید از دستوری که در زیر قرار داده شده است استفاده کنید :
# zpool add -f mypool sde
۱۰ – اضافه کردن یک دیسک یدکی به ZFS Pool
شما میتوانید یک دیسک یدکی نیز یه zfs pool اضافه کنید که برای آن باید یک دستگاه مجزا به zfs pool متصل کنید. در قسمتهایی که دیسک fail میشود دستگاه یدکی و ادمین ماشین میتواند آن را در زمانی مناسب و بعداً با مورد سالم جاگزین کند. توجه داشته باشید که شما میتوانید حتی دستگاههای یدکی خود را نیز با چندین zfs pool به اشتراک بگذارید.
# zpool add -f mypool spare sde
در قسمت بعدی در مورد ساخت یک فایل سیستم ZFS و فشردهسازی اطلاعات و مانت کردن فایل سیستم ZFS صحبت خواهیم کرد و آن را از طریق کامند لاین دستکاری خواهیم کرد.