چرا لینوکس نیازی به Defragmentation ندارد؟

چرا لینوکس نیازی به Defragmentation ندارد؟

اگر از کاربران قدیمی لینوکس بوده باشید، احتماً شنیده باشید که لینوکس نیازی به اصطلاحاً Defragmentation ندارد و این در حالی است که هیچ‌ کدام از توزیع‌های لینوکسی با ابزاری مثلاً تحت عنوان Defragment عرضه نمی‌شوند. به منظور درک بهتر این موضوع که چرا فایل سیستم لینوکس نیازی به Defragmentation ندارد (اما ویندوز به آن نیاز دارد)، بایستی ابتدا با ماهیت Fragmentation آشنا شوید.

Fragmentation چیست؟
بسیاری از کاربران ویندوز -حتی کسانی که کاربر حرفه‌ای نیستند- بر این باورند که اگر هر چند وقت یک بار اقدام به Defragmentation سیستم‌عامل خود کنند، سرعت آن افزایش می‌یابد. چنین باوری کاملاً درست است اما بایستی ببنیم که این اتفاق چگونه می‌افتد.

به طور خلاصه اگر بخواهیم توضیح دهیم، هر هارددیسکی حاوی یکسری سِکتور (بخش) است که در هر کدام از آن‌ها دیتای کوچکی ذخیره می‌شود و این در حالی است که فایل‌های حجیم می‌بایست در چندین سِکتور مجزا ذخیره‌سازی شوند.

برای روشن‌تر شدن این موضوع، مثالی می‌زنیم. فرض کنیم که یکسری فایل روی هارددیسک خود ذخیره کرده‌اید و هر کدام از آن‌ها در زنجیره‌ای از سِکتورهای پشت سر هم ذخیره شده‌اند. حال پس از مدتی اقدام به ویرایش یکی از فایل‌ها می‌کنیم به طوری که حجم آن تا حدودی افزایش می‌یابد.

فایل سیستم تلاش خود را به کار می‌بندد تا دیتای جدید را کنار سِکتورهای قبلی ذخیره سازد اما هرگز فضای کافی پشت سر هم وجود ندارد و اینجا است که فایل به چندین بخش مجزا تقسیم‌بندی شده و زمانی که هارددیسک فایل را می‌خواند، می‌بایست هر تکه از فایل را از مکان فیزیکی متفاوتی روی هارددریسک بیابد و همین مسئله سرعت سیستم را پایین می‌آورد.

Defragmentation چیست؟
فرایند سنگینی که تکه‌تکه‌های فایل‌هایی که به صورت پخش شده در سِکتورهای مختلفی وجود دارند را در کنار یکدیگر قرار می‌دهد و این اطمینان را حاصل می‌کند که یک فایل حجیم در زنجیره‌ای از سِکتورهای پشت سر هم روی هارددیسک ذخیره شده است، به اصطلاح Defragmentation نامیده می‌شود.

دو نکته در مورد فرایند Defragmentation وجود دارد که یکی مرتبط با هاردهای SSD است و دیگری در مورد نسخه‌های آخر سیستم‌عامل ویندوز. در واقع گفته می‌شود که فرایند Defragmentation عمر هاردهای SSD را پایین می‌آورد (زیرا باعث می‌شود فرایند Write بیشتری روی هارد صورت گیرد)؛ همچنین گفته می‌شود که مایکروسافت در نسخه‌های جدید ویندوز فرایند Defragmentation را به صورت اتوماتیک درآورده است و اصلاً نیازی نیست تا کاربران هر چند وقت یک بار به صورت دستی اقدام به این کار کنند.

تفاوت فایل سیستم‌های FAT و NTFS در ویندوز
آنچه تاکنون در مورد Fragmentation گفتیم، کاملاً در مورد FAT صدق می‌کند که به نوع می‌توان گفت خیلی فایل سیستم هوشمندی نیست به طوری که فایل‌های مختلف را در سِکتورهای مختلف ذخیره می‌کند که پس از مدتی هارددیسک به اصطلاح کاملاً Fragmented می‌شود.

اما داستان در مورد فایل سیستم NTFS کاملاً متفاوت بوده و این در حالی است که نسبت به FAT تاحدودی هوشمندتر است. در واقع، این فایل سیستم یک فضای خالی در کنار فایل‌های مختلف روی هارددیسک قرار می‌دهد تا در صورت نیاز، کماکان بتوان پس از ویرایش فایل‌های مختلف و حجیم‌تر شدن آن‌ها، سِکتورهای پشت سر هم را به آن‌ها اختصاص داد اما کماکان در طول زمان این نوع فایل سیستم هم Fragmented خواهد شد.

آشنایی با نحوهٔ کارکرد فایل سیستم‌ لینوکس
در لینوکس فایل‌ سیستم‌های مختلفی وجود دارند که از آن جمله می‌توان به ext3 ،ext2 و ext4 اشاره کرد که مورد آخر در بسیاری از توزیع‌های جدید لینوکسی من‌جمله اوبونتو استفاده شده است.

لازم به ذکر است که فایل‌ سیستم‌های لینوکس نسبت به فایل سیستم‌های ویندوزی از هوشمندی بالاتری برخورداند. در واقع، به جای قرار دادن چندین فایل نزدیک به یکدیگر روی هارددیسک، فایل سیستم‌های لینوکس فایل‌های مختلف را در سطح هارددیسک پخش می‌کنند و فضای خالی نسبتاً زیادی مابین آن‌ها قرار می‌دهد.

زمانی که یک فایل ویرایش می‌شود و حجم آن در اکثر مواقع افزایش می‌یابد، معمولاً فضای خالی کافی در کنار سِکتورهای قبلی وجود دارد. حال فرض را هم بر این بگذاریم که Fragmentation صورت گیرد، فایل سیستم به صورت خودکار اقدام به جابه‌جایی فایل‌های مختلف کرده تا میزان Fragmentation را -بدون نیاز به هرگونه ابزار Defragmentation- به حداقل برساند.

با این تفاسیر، وقتی که چیزی بیش از ۸۰٪ از هارددیسک سیستم لینوکسی شما پر شود، شما به مرور احساس Fragmentation خواهید کرد (البته برای استفاده از لینوکس در شرایط عادی و مثلاً به عنوان یک سیستم دسکتاپ خانگی، بعید به نظر می‌رسد که Fragmentation مشاهده گردد).

اگر لینوکس اصطلاحاً Fragmented شد چه کار باید کرد؟
در چنین مواقعی می‌توان گفت که شما به هارددیسکی با فضای بیشتر نیاز دارید اما اگر به هر حال نیاز به Defragmentation در یک فایل سیستم داشته باشید، ساده‌ترین و در عین حال مطمئن‌ترین راه‌کار این است که کلیهٔ فایل‌های خود روی پارتیشن مد نظر را در جایی Copy کرده، سپس فایل‌های قدیمی را از روی آن پارتیشن حذف کنید و در نهایت فایل‌های خود را روی همان پارتیشن مجدد Copy کنید. در چنین شرایطی فایل سیستم لینوکس به طرز کاملاً هوشمندانه‌ای بایت‌های مرتبط با یکدیگر فایل‌ها را در کنار یکدیگر قرار خواهد داد!

منبع