Academy and Foundation unixmens | Your skills, Your future
2.28K subscribers
6.66K photos
1.37K videos
1.23K files
6.01K links
@unixmens_support
@yashar_esm
[email protected]
یک کانال علمی تکنولوژی
فلسفه متن باز-گنو/لینوکس-امنیت - اقتصاد
دیجیتال
Technology-driven -بیزینس های مبتنی بر تکنولوژی
Enterprise open source
ارایه دهنده راهکارهای ارتقای سازمانی - فردی - تیمی
Download Telegram
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 شما میتوانید فشرده‌سازی را تا مرحله filesystem پیش ببرید. در این مقاله توضیح میدهیم که چگونه از یک zfs storage 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 مشاهده می‌شود قابلیت‌های بیشمار دیگری نیز وجود دارد که برای همگان جالب خواهد بود.
فایل سیستم Btrfs
#btrfs

Btrfs یا B-tree Filesystem یک فایل سیستم متن باز مبتنی بر مجوز GPL است که توسط شرکت هایی چون لینوکس فاندیشن، فیسبوک، اینتل، فوجیتسو، ردهت، اوراکل، سوزه و … توسعه داده می شود.

این فایل سیستم دیسک‌های با ظرفیت حداکثر ۱۶ اگزابایت و فایل‌های با اندازه حداکثر ۸ اگزابایت را پشتیبانی می‌کند.

برای نامگذاری فایل‌های ایجاد شده روی این فایل سیستم تقریباً می‌توان از هر کاراکتری جز ‘/’ و NULL استفاده نمود.

برخی ‌از ویژگی‌های مهم Btrfs عبارتند از:

یکپارچه سازی دیسک (Defragmention) به‌صورت آنلاین
تغییر اندازه پارتیشن ها (Volume) به‌صورت آنلاین
حدف یا اضافه نمودن دیسک های سخت به‌صورت آنلاین
بررسی فایل سیستم (Fsck) به‌صورت آفلاین
بررسی فایل‌ها و برطرف نمودن خودکار مشکلات آن‌ها به‌صورت آنلاین (Data Scrubbing)
پشتیبانی از RAID0 , RAID1, RAID10
پشتیبانی از Subvolume ها
فشرده سازی (Transparent Compression)
بررسی Checksum روی داده‌ها و Metadata
و …

Btrfs در اکثر توزیع‌های معروف به‌صورت پیش‌فرض پشتیبانی می‌شود و برای استفاده از آن فقط می‌بایست ابزارهای مربوط به آن را در توزیع خود نصب کنیم.

برای نصب در سیستم‌های مبتنی بر دبیان:

apt install btrfs-tools

برای نصب در سیستم‌های مبتنی بر ردهت:

yum install btrfs-progs

یکی از خصوصیات جالب Btrfs این است که شما می‌توانید فایل سیستم را روی یک یا چند دیسک خام و پارتیشن‌بندی‌نشده ایجاد کنید. برای مثال نیازی به استفاده از ابزارهایی همچون fdisk برای پارتیشن بندی نیست.

برای مثال برای ایجاد فایل سیستم Btrfs بر روی سه دیسک sdb, sdc, sdd دستور زیر را وارد می کنیم:

mkfs.btrfs /dev/sdb /dev/sdc /dev/sdd

پس از اجرای دستور فوق خروجی بصورت زیر خواهد بود:

Btrfs v3.17
See https://btrfs.wiki.kernel.org for more information.

Turning ON incompat feature 'extref': increased hardlink limit per file to 65536
adding device /dev/sdc id 2
adding device /dev/sdd id 3
fs created label (null) on /dev/sdb
nodesize 16384 leafsize 16384 sectorsize 4096 size 24.00GiB

نکته) در صورتی که دستور mkfs.btrfs رو بدون هیچ سوییچ و همراه با چند دیسک به‌کار ببریم به‌صورت پیش‌فرض از RAID0 (Stripe)برای ذخیره سازی داده‌ها و از (Mirror) RAID1 برای ذخیره‌سازی Metadata استفاده می‌شود. مزییت این روش در این است که علاوه بر بهبود سرعت خواندن و نوشتن داده‌ها در صورتی که یکی از دیسک‌ها دچار مشکل شود به کمک Metadata می‌توانیم داده‌های از دست رفته را بازسازی کنیم.

اگر مایل هستید که btrfs رو تنها روی یک دیسک ایجاد کنید و یا مایل نیستید که Data و Metadata بصورت RAID ذخیره سازی شود می‌توانید از سوییچ m- بصورت زیر استفاده نمایید:

mkfs.btrfs -m single /dev/sdb

همچنین در صورتی که بخواهید همین کار را با چندین دیسک انجام دهید نیز می‌توانید به‌صورت زیر عمل نمایید:

mkfs.btrfs -m raid0 /dev/sdb /dev/sdc /dev/sdd

که در مثال فوق برای ذخیره‌سازی Metadata از RAID0 (Stripe) بجای RAID1 (گزینه پیشفرض) استفاده می گردد.

همچنین می‌توانیم نحوه ذخیره‌سازی Data و Metadata را به دلخواه خودمان تعریف کنیم. برای مثال:

mkfs.btrfs -m raid0 -d raid1 /dev/sdb /dev/sdc /dev/sdd

که در مثال فوق توسط سوییچ‌های m- و d- نحوه ذخیره‌سازی مشخص گردیده است.

نکته) می‌توانیم از RAID10 نیز برای ذخیره‌سازی Data و Metadata استفاده کنیم اما می‌بایست توجه داشته باشید که برای استفاده از RAID10 حداقل به ۴ دیسک نیاز است.

برای مشاهده وضعیت فایل سیستم ایجاد شده دستور زیر را وارد می کنیم:

btrfs filesystem show /dev/sdb

نکته) از آنجایی که در مثال فوق برای نشان دادن قابلیت‌های RAID در Btrfs از 3 دیسک استفاده نمودیم بنابراین برای نمایش اطلاعات فایل‌سیستم توسط دستور فوق هیچ فرقی نمی‌کند که نام کدام دیسک را اعلام کنیم چرا که هر 3 دیسک مربوط به یک فایل سیستم و در قالب یک Pool می‌باشد.

که خروجی آن به‌صورت زیر خواهد بود:

Label: none uuid: f36e0a56-bcea-4637-a1e4-c9788574d84a
Total devices 3 FS bytes used 112.00KiB
devid 1 size 8.00GiB used 1.82GiB path /dev/sdb
devid 2 size 8.00GiB used 827.19MiB path /dev/sdc
devid 3 size 8.00GiB used 1.81GiB path /dev/sdd

Btrfs v3.17

پس از ایجاد فایل سیستم می‌توانیم به راحتی و توسط دستور زیر انرا Mount نماییم:

mount /dev/sdb /mnt

برای مشاهده فضای مصرفی و فضای باقی‌مانده فایل سیستم دستور زیر را وارد می کنیم:

btrfs filesystem df /mnt

که خروجی آن به‌صورت زیر خواهد بود: