غواصی در اعماق: سیستم فایل Copy-on-write

این یه تجربه پراکنده دیگه!

سیستم فایل‌ها ویژگی‌ها و امکاناتی دارند که اگه به درستی استفاده بشن می‌تونن کارایی کل سیستم رو بالا ببرن. مثلا من خودم امتحان کردم و روی فلشم از سیستم فایل btrfs استفاده کردم و دیدم که سرعت نوشتن و خوندن از روش به طرز چشمگیری اضافه شده. یکی از ویژگی‌های سیستم فایل‌های مدرن مثل zfs و همین btrfs امکان copy on write هست. امروز سعی میکنم یکم در مورد این ویژگی توضیح بدم.

اولا احتمالا همه میدونن که هر سیستم فایل یک جدول داره که توی اون نگه داشته میشه که توی چه بلوکی چه اطلاعاتی ذخیره میشه. این اطلاعات در هر سیستم فایل متفاوته. اما در سیستم فایل‌های دارای ویژگی CoW مثل تمام فایل سیستم‌های یک فایل جدید روی یه سری بلاک نوشته میشه. اما وقت ویرایش فایل بجای نوشتن بلاک تغییر یافته سر جای بلاک قبلی این بلاک در یک جای جدید نوشته میشه. یعنی یه جوری هم نسخه قبلی وجود داره هم نسخه جدید. اگه دوستانی باشن که از امکان TimeMachine توی مک استفاده کرده باشن دقیقا از همین روش برای نگهداری تاریخچه فایل‌ها استفاده میکنه. در صورتی هم که بلاک‌های سیستم کاملا پر بشن قدیمی‌ترین بلاک‌ها بازنویسی می‌شن. حالا این ویژگی چه امکاناتی رو فراهم میکنه:

  • امکان گرفتن snapshot: یعنی شما به سیستم فایل میگی این قطعه از تاریخچه رو نگهدار و به هیچ وجه از بین نبرش حتی اگه جا کم داشته باشی
  • استفاده در مموری مجازی سیستم عامل: وقتی یه پروسس کپی خودش رومیسازه نیاز به کپی کردن تمام حافظه نیست. تنها بخش‌هایی که تغییر میکنن توی یه بخش جدید حافظه ایجاد میشه.
  • در سیستم فایل‌های مرتبط با ماشین‌های مجازی از این تکنولوژی استفاده میشه. یعنی شما هارد ماشین مجازی رو میسازید و بهش فضا اختصاص نمی‌دید و هنگام نیاز اون فضا اختصاص داده میشه
  • در این سیستم ‌های انتقال backup ها بصورت incremental امکان پذیره و شما فقط تغییرات رو نسبت به قبل انتقال میدید.

لیست فایل سیستم‌هایی که من میشناسم و. از این ویژگی پشتیبانی می‌کنن اینا هستن

امیدوارم به درد کسی بخوره

همین!