
اگر در گذشته از ویندوز استفاده کرده باشید، احتمالاً تماشای ابزار رنگارنگ یکپارچهسازی دیسک (Defragmentation) را به خاطر دارید که برای بهبود سرعت خواندن دیسک اجرا میشد. با فراگیر شدن درایوهای حالت جامد (SSD) و سرویسهای سازماندهی خودکار در ویندوز، نیاز به اجرای دستی این ابزار بهشدت کاهش یافته است؛ اما این موضوع هنوز بخشی جالب از تاریخ استفاده از رایانههای شخصی است.
در مقابل، کمتر کاربر لینوکسی را میتوان یافت که تجربه اجرای یکپارچهسازی دیسک را داشته باشد، حتی اگر سیستم او روی هارددیسک (HDD) مکانیکی اجرا شود. این تفاوت، ریشه در نحوه شکلگیری و رشد معماری ذخیرهسازی این دو سیستمعامل دارد.
ریشه ماجرا: FAT و محدودیت فلاپیدیسک
مایکروسافت در سال ۱۹۷۷ جدول تخصیص فایل (File Allocation Table) یا همان FAT را طراحی کرد؛ سیستمی که برای جا دادن دادهها روی فلاپیدیسکها ساخته شده بود. فضای فلاپیدیسکها در آن زمان بسیار محدود بود و گاهی تنها حدود ۱۰۰ کیلوبایت ظرفیت داشتند، بنابراین FAT باید با روشهای هوشمندانه همه چیز را در فضای موجود جای میداد.
در این معماری، هر بخش از داده یک بلوک مشخص را اشغال میکرد. وقتی یک بلوک کوچک حذف میشد و سپس بلوک بزرگتری اضافه میشد، سیستم نمیتوانست آن فضای کوچک خالی را نادیده بگیرد. برای پر کردن شکاف و حفظ فضای آزاد بیشتر، بخشی از بلوک بزرگتر جدا شده و در فضای کوچکتر قرار میگرفت و باقی داده در انتها ذخیره میشد. این روش فضای دیسک را ذخیره میکرد، اما خواندن یک بلوک بزرگ را به دو خواندن از مکانهای مختلف وابسته میکرد و سرعت را کاهش میداد.
زمانی که یک بلوک بزرگتر میشد، معمولاً به دلیل افزودن داده جدید، وضعیت پیچیدهتر میشد. اگر بلوک دیگری در کنار آن قرار گرفته بود، FAT ناچار میشد داده جدید را جای دیگری قرار دهد و این روند به قطعهقطعه شدن (Fragmentation) بیشتر دادهها روی دیسک منجر میشد. هدف یکپارچهسازی دیسک نیز مرتب کردن همین بلوکها بود تا میان آنها شکافی باقی نماند؛ این کار زمان میبرد، اما پس از انجام، خواندن فایلها بهطور محسوسی سریعتر میشد.
لینوکس و میراث یونیکس
۱۴ سال پس از استفاده مایکروسافت از FAT روی فلاپیدیسک، لینوکس وارد صحنه شد. لینوس توروالدز، سازنده لینوکس، هنگام تحصیل در دانشگاه هلسینکی از سیستمعامل یونیکس (Unix) الهام گرفت. او برای کار روی سیستمعامل در خانه نسخهای از MINIX را تهیه کرد؛ سیستمعاملی که برای آموزش برنامهنویسی سیستمعامل ساخته شده بود و هرچند مبتنی بر یونیکس نبود، ساختاری شبیه به یونیکس داشت.
وقتی توروالدز ساخت لینوکس را آغاز کرد، ذهنیت یونیکس را با خود همراه برد. توسعهدهندگان لینوکس، بهویژه رمی کار (Rémy Card)، قالب جدیدی برای سیستمعامل طراحی کردند که ext نام داشت. این قالب از روش ذخیرهسازی فشرده و شبیه به چمدان پر FAT استفاده نمیکرد؛ معماری داده آن بیشتر به جزیرههایی مستقل شباهت داشت. هر بلوک از بلوکهای دیگر جدا بود و فضای رشد داشت، بنابراین داده جدید میتوانست فضای تازه اشغال کند بدون آنکه لازم باشد بلوک به قطعات کوچکتر تقسیم شود.
آیا لینوکس کاملاً بینیاز است؟
لینوکس هم بهطور مطلق از نیاز به یکپارچهسازی دیسک مصون نیست. اگر فضای آزاد یک درایو بسیار کم باشد یا فایلهای چند گیگابایتی زیادی به صورت تکههای کوچک و تصادفی دانلود شوند، ممکن است اجرای یکپارچهسازی دیسک برای بازگرداندن روانی عملکرد سیستم ضروری باشد. با این حال، در استفاده روزمره، قالب ext نیازی به یکپارچهسازی دیسک ندارد.
عصر SSDها و پایان نیاز به یکپارچهسازی
امروزه با مقرونبهصرفه شدن درایوهای حالت جامد (SSD) و استفاده از آنها بهعنوان درایو اصلی سیستمعامل و نرمافزارها، یکپارچهسازی دیسک عملاً از صحنه خارج شده است. در واقع توصیه میشود هرگز SSD را یکپارچهسازی نکنید، زیرا آسیب ناشی از عملیات نوشتن شدید، بیشتر از مزایای احتمالی آن است. مشکل قطعهقطعه شدن مربوط به زمانی بود که درایوهای داده مانند هارددیسکهای مکانیکی قطعات متحرک داشتند و باید بهصورت فیزیکی بلوکهای داده را جستوجو میکردند. SSDها قطعه متحرک ندارند و در نتیجه زمان جستوجو (Seek Time) هم ندارند.
- ویندوز به دلیل میراث FAT و محدودیت فضای فلاپیدیسک، در دوران هارددیسکهای مکانیکی بیشتر به یکپارچهسازی دیسک وابسته بود.
- لینوکس با الهام از یونیکس و قالب ext، معماریای جزیرهایتر و منعطفتر برای ذخیرهسازی داده انتخاب کرد.
- در استفاده روزمره، لینوکس معمولاً به یکپارچهسازی دیسک نیاز ندارد، اما در شرایط خاص مانند کمبود شدید فضای آزاد ممکن است این نیاز ایجاد شود.
- با فراگیر شدن SSDها، یکپارچهسازی دیسک برای هر دو سیستمعامل اهمیت گذشته را از دست داده و اجرای آن روی SSD توصیه نمیشود.
در مجموع، اینکه لینوکس به اندازه ویندوز به یکپارچهسازی دیسک نیاز نداشت، نشاندهنده تفاوت در نقطه شروع و مسیر رشد این دو سیستمعامل است. مایکروسافت نمیتوانست یک یا دو دهه صبر کند تا وارد دنیای سیستمعامل شود و باید با امکانات زمان خود کار میکرد؛ در حالی که توروالدز میتوانست بنیانی را انتخاب کند که با پروژه او سازگارتر بود و این انتخاب، نیاز کمتر به یکپارچهسازی دیسک را به همراه داشت.