تریم (رایانش)

یک فرمان trim (شناخته شده به عنوان TRIM در مجموعه فرمان ATA و UNMAP در مجموعه فرمان SCSI) اجازه می‌دهد تا یک سیستم عامل به یک درایو حالت جامد (SSD) اطلاع دهد که بلوک‌هایی از داده دیگر در حال استفاده در نظر گرفته نمی‌شوند و می‌تواند به صورت داخلی از بین بروند.
به محض معرفی درایوهای حالت جامد (SSDs) تریم هم معرفی شد. به دلیل تفاوت بهره‌برداری سطح پایین در SSDها با دیسک‌های سخت معمولی، در SSDها راه معمولی که سیستم‌عامل عملیاتی مثل حذف یا فرمت را انجام می‌دهد، نتایج پیش‌بینی نشده‌ای در پی دارد که باعث نزول کارایی نوشتن روی SSD می‌شود. تریم کردن SSD را قادر می‌سازد تا به نحو کاراتری به جمع‌آوری زباله رسیدگی کند، در غیر این صورت عملیات نوشتن روی بلوک‌های درگیر، در آینده آهسته می‌شود.
اگر چه ابزارهایی برای «تنظیم مجدد» برخی از درایوها به حالت تازه، قبل از معرفی تریم کردن در دسترس قرار داشتند، اما آنها همچنین همه داده‌های روی دیسک را پاک می‌کردند، که باعث می‌شود آن‌ها برای بهینه‌سازی مداوم مناسب نباشند. . در سال ۲۰۱۴ بسیاری از SSDها مکانیزم‌های جمع‌آوری زباله داخلی داشتند که به طور مستقل از تریم کردن کار می‌کردند. اگر چه این موضوع باعث شد تا آن‌ها حتی در صورت وجود سیستم‌عاملی که از تریم پشتیبانی نمی‌کرد، با موفقیت کارایی خود را حفظ کنند، اما اشکالاتی مرتبط با افزایش تقویت نوشتن داشتند سلول‌های فلش را فرسوده می‌کردند.
مشکل‌های خاص فلش درایو
به علت روشی که بسیاری از فایل سیستم‌ها عملیات حذف را انجام می‌دهند، (پرچم دار کردن بلوک‌های داده به عنوان "در حال استفاده نیست")، رسانه‌های ذخیره‌سازی (SSDها و همچنین دیسک‌های سخت قدیمی) به طور کلی نمی‌دانند کدام بخش‌ها/صفحات واقعا در استفاده هستند و کدام‌ها را می‌توان فضای آزاد در نظر گرفت. برعکس مثلا در یک عملیات بازنویسی، عملیات حذف نمی‌خواهد درگیر نوشتن فیزیکی روی بخش‌هایی که شامل داده هاست بشود. از آنجا که یک SSD معمول، دانشی از ساختار فایل سیستم، شامل لیست بلوک‌ها/بخش‌های استفاده نشده ندارد، رسانه ذخیره‌سازی از در دسترس بودن بلوک‌ها بی‌خبر می‌ماند. در حالی که اغلب این موضوع ابزارهای بازگردانی را برای بازیابی فایل‌ها از الکترومکانیکی هارد دیسک‌ها قادر می‌سازد، با وجود این فایل‌ها به عنوان «حذف شده» توسط سیستم عامل گزارش می‌شوند، این همچنین بدان معناست که زمانی که سیستم عامل بعدا یک عملیات نوشتن روی یکی از بخش‌ها که به عنوان فضای خالی در نظر گرفته بود را انجام می‌دهد، این عملیات از دید رسانه ذخیره‌سازی به طور موثری به یک عملیات بازنویسی تبدیل می‌شود. برای دیسک مغناطیسی این عملیات با نوشتن روی یک فضای خالی هیچ تفاوتی ندارد، اما از آنجا که SSDها روی پایین‌ترین سطح عمل می‌کنند، یک بازنویسی در مقایسه با نوشتن روی فضای خالی یک سربار قابل توجه تولید می‌کند که پتانسیل ناکارا کردن عملیات نوشتن را دارد.
SSDها داده‌ها را در سلول‌های حافظه فلش ذخیره می‌کنند که معمولا در صفحات ۴ تا ۱۶ کیلوبایت ی دسته‌بندی شده‌اند، این دسته‌ها در بلوک‌های ۱۲۸ تا ۵۱۲ صفحه‌ای دسته‌بندی شده‌اند، برای مثال، ۵۱۲ کیلوبایت به ازای هر سلول با ۴ کیلوبایت صفحه در بلوک‌های ۱۲۸ صفحه‌ای. در حافظه‌های فلش NAND سلول‌ها تنها می‌تواند به طور مستقیم نوشته شوند تنها در زمانی که آنها خالی است. اگر آنها احتمالا حاوی اطلاعات باشند، اطلاعات باید قبل از عملیات نوشتن، پاک شوند. یک عملیات نوشتن در SSD می‌تواند در یک صفحه انحام شود، اما با توجه به محدودیت‌های سخت‌افزاری، دستورات پاک کردن همیشه تمام بلوک‌ها را تحت تاثیر قرار می‌دهد؛ در نتیجه نوشتن داده‌ها در صفحات خالی در یک SSD بسیار سریع است، اما در صورت نیاز به باز نویسی روی صفحاتی که از پیش روی آن‌ها نوشته شده است، عملیات کند می‌شود. از آنجا که قبل از نوشتن، نیاز به پاک کردن سلول‌ها وجود دارد، و فقط کل بلوک‌ها را می‌توان پاک کرد، یک بازنویسی یک چرخه خواندن-پاک کردن-تغییر-نوشتن را آغاز می‌کند: محتویات تمام بلوک‌ها در کش ذخیره می‌شوند، سپس کل بلوک از SSD پاک می‌شود، سپس صفحه بازنویسی شده، در بلوک کش شده نوشته می‌شود، و تنها پس از آن می‌توان تمام بلوک جدید را روی رسانه فلش نوشت. این پدیده به عنوان تقویت نوشتن شناخته شده است.
عملیات
دستور TRIM سیستم عامل را قادر می‌سازد تا صفحاتی را که دیگر داده معتبر در خود ندارند را به SSD اطلاع دهد. برای یک عملیات حذف فایل، سیستم عامل فایل‌ها و بخش‌ها را به عنوان «آزاد برای داده جدید» علامت گذاری می‌کند، سپس یک دستور TRIM را به SSD ارسال می‌کند. پس از تریم، زمانی SSD که داده جدید را در حافظه فلش می‌نویسد، هیچ اطلاعاتی را از بلوک حفظ نمی‌کند، در نتیجه تقویت نوشتن کمتر (نوشتن کمتر)، و توان بالاتر ایجاد می‌شود (نیازی به توالی خواندن-پاک کردن-تغییر-نوشتن نیست)، در نتیجه طول عمر درایو بیشتر می‌شود.
SSDهای مختلف، دستور تریم را به صورت‌های متفاوت پیاده‌سازی می‌کنند، بنابراین کارایی آن‌ها می‌تواند متفاوت باشد.
تریم به SSD می‌گوید که یک محدوده LBA (LOOSE balls - attachments) را غیر معتبر علامت گذاری کند، در نتیجه خواندن از آن محدوده، هیچ داده معناداری را برنمی‌گرداند. با این حال، داده می‌تواند همچنان در حافظه فلش به صورت داخلی وجود داشته باشد. یک forensicist ممکن است قادر به بازگردانی داده‌های تریم شده باشد.