Academy and Foundation unixmens | Your skills, Your future
2.28K subscribers
6.65K photos
1.36K videos
1.23K files
6K links
@unixmens_support
@yashar_esm
[email protected]
یک کانال علمی تکنولوژی
فلسفه متن باز-گنو/لینوکس-امنیت - اقتصاد
دیجیتال
Technology-driven -بیزینس های مبتنی بر تکنولوژی
Enterprise open source
ارایه دهنده راهکارهای ارتقای سازمانی - فردی - تیمی
Download Telegram
پادشاه گفت: "خودت را محاکمه کن" این‌کار از
بقیه کارها دشوارتر است! قضاوت راجع
به ‌خودت «خیلی سخت‌تر» از قضاوت راجع ‌به
دیگران است اگر درباره خودت درست قضاوت
کنی خردمند خواهی‌شد #شازده‌کوچولو
اگر قصد دارید از فایل سیستم xfs در ساختار خودتان استفاده کنید ، اولین نکته ای که باید توجه کنید این است که این فایل سیستم در همه توزیع های لینوکس پشتیبانی نمی شود و بصورت پیشفرض وجود ندارد. برای مثال سیستم عامل RedHat بصورت پیشفرض xfs را پشتیبانی نمی کند اما به شما قابلیت نصب و استفاده از آن را می دهد. توزیع SUSE Enterprise از xfs پشتیبانی می کند و همچنین Debian و Gentoo و برخی دیگر از توزیع ها مانند Mandriva و Fedora نیز از xfs بصورت پیشفرض پشتیبانی می کنند.
تفاوت بین فایل سیستم xfs و ext3 و ext4 در چیست ؟
قبل از اینکه بین فایل سیستم های مختلف xfs را انتخاب کنید باید بدانید که تفاوت xfs با سایر فایل سیستم ها در چیست . خیلی از وظایف فایل سیستمی در xfs به شکل متفاوتی انجام می شوند که از جمله آنها می توان به quota ، تعمیر فایل سیستم و حتی مکانیزم کپی کردن فایل ها اشاره کرد. این تفاوت ها به خاطر نحوه عملکرد متفاوت فایل سیستم xfs در مقایسه با سایر فایل سیستم ها است. یکی از مهمترین قابلیت های xfs که باعث می شود شما بتوانید فایل های بسیار حجیم و تعداد زیادی فایل را نگهداری کنید قابلیتی به نام allocation group است که مقیاس پذیری یا Scalability بسیار زیادی به این فایل سیستم می دهد. هر یک از allocation group هایی که در xfs وجود دارند برای خودشان inode های خاص دارند و فضای خالی و ایجاد allocation group های دیگر را مدیریت می کنند ، شما می توانید با این مکانیزم امکان استفاده همزمان از فایل سیستم برای پردازش ها و thread ها برای دسترسی به سرویس ها را فراهم کنید ، اینکار به شدت در محیط های Enterprise باعث بالا رفتن کارایی سیستم می شود.برای کارآمد کردن بیشتر ، xfs بر روی extent ها بیشتر کار کرده است ، این یک تکنیک است که برای فایل سیستم ext4 بهینه سازی شده بود. در واقع یک extent مجموعه یا گروهی از block ها است که در قالب یک موجودیت آدرس دهی می شوند. مزیت استفاده از extent ها این است که به جای اینکه تک تک فایل های موجود بر روی سیستم آدرس دهی شوند ( تک تک بلوک های حافظه ) فایل سیستم تنها تعداد بسیار کمتری extent را آدرس دهی می کند و در نتیجه در آدرس دهی تعداد فایل های بسیار زیاد عملکرد و کارایی بسیار بهتری را ارائه می دهد.

یکی دیگر از قابلیت های بسیار مفید xfs قابلیتی به نام delayed allocation یا تخصیص فضای با تاخیر است. زمانیکه یک فایل ایجاد می شود ، محتویات آن در حالت عادی در بافر کش نوشته می شوند و سپس بر روی دیسک نوشته می شوند. Xfs در این وهله زمانی تا جاییکه ممکن است تاخیر ایجاد می کند زیرا یک فایل جدید قبل از اینکه بر روی دیسک نوشته شود یا بعد از ایجاد آن اطلاعاتی دارد که آن را تغییر می دهد و تاخیر موجود این فرصت را می دهد که تغییرات قبل از نوشته شدن بر روی دیسک سریعتر نوشته و ذخیره شوند. این تاخیر از جهت دیگری نیز کمک می کند زیرا با داشتن کمی تاخیر در نوشتن فایل بر روی دیسک ، سیستم این فرصت را پیدا می کند که بلوک های حافظه نزدیک و پشت سر هم را پیدا کرده و فایل را برای دسترسی سریعتر آماده کند ، در واقع Delayed Allocation تا حدود زیادی جلوی Fragmentation داده ها بر روی دیسک را می گیرد.البته همیشه هم وجود تاخیر خوب نیست و xfs هم این را درک کرده است . قابلیت دیگری که در xfs وجود دارد Direct I/O است که فایل به هیچ عنوان دیگر بافر نشده و مستقیما بر روی دیسک نوشته می شود . اینکار باعث کاهش میزان I/O سیستم می شود و xfs این فرآیند را گارانتی می کند. این نوع فایل سیستم زمانیکه در سرورهای Media Streaming ای مثل یوتیوب یا آپارات هستیم بسیار می تواند مفید باشد.
در زیر برخی از قابلیت‌های این فایل سیستم را آورده‌ایم :

– محافظت در برابر خراب شدن اطلاعات

– پشتیبانی از فضاهای ذخیره سازی با حجم بالا

– فشرده‌سازی مؤثر و کارآمد اطلاعات

– گرفتن snapshot از فایل سیستم

– پشتیبانی از Raid Z

– بررسی سلامت فایل ها

– پشتیبانی و تعمیر خودکار nfsv4cl
ZFS
به صورت رسمی برای sun microsystems و برای پلتفرم سولاریس توسعه یافته است و توسعه آن از سال ۲۰۱۰ شروع شد ؛ پس از آن اوراکل sun microsystems را تصاحب کرد و فایل سیستم ZFS را توسعه داد. با پایدار شدن ZFS این روزها این فایل سیستم در کامپیوتر های لینوکسی از محبوبیت بسیار زیادی برخوردار شده است به طوری که برای مثال اوبونتو وعده داده است که این فایل سیستم را از نسخه ۱۶٫۰۴ به توزیع اضافه کند.
پورت این فایل سیستم به لینوکس توسط Lawrence Livermore National Laboratory انجام گرفته است و این فایل سیستم در لینوکس به صورت یک ماژول کرنل است که میتوانید آن را دانلود ؛ کامپایل و نصب کنید و برای اینکار نیاز به پچ کردن و یا کامپایل کردن مجدد کرنل نخواهید داشت.
ساخت Zpool

دستورات zpool به شما کمک میکند تا فرآیند ذخیره سازی در استخر یا pool های Zfs را کانفیگ کنید. Pool های ذخیره سازی مجموعه‌ای از دستگاه‌ها هستند که ذخیره سازی فیزیکی را برای zfs ممکن میکنند.

دستور زیر یک zpool راه اندازی میکند :
# zpool create -f mypool raidz sdb sdc sdd sde sdf
1

# 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 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
1
2
3
4
5
6

# 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