Типовий Ubuntu не працює з твердотільними накопичувачами: чому немає і як включити його самостійно

Ubuntu хоче включити TRIM для твердотільних накопичувачів за замовчуванням в Ubuntu 14.04. Іншими словами, Ubuntu ще не використовує TRIM, тому ваш SSD з часом сповільнюється. Але чому Ubuntu вже не використовує TRIM?

Ця новина, ймовірно, стане несподіванкою для багатьох людей, які припустили, що Ubuntu та інші дистрибутиви Linux вже використовують TRIM. TRIM запобігає уповільненню роботи твердотільних накопичувачів і є необхідною частиною обслуговування твердотільних накопичувачів.


Чому TRIM важливий

Ми розглянули, чому TRIM важлива раніше. Коли ви вилучаєте файл на старому магнітному жорсткому диску, комп'ютер просто позначає цей файл як віддалений. Дані файлу залишаються на жорсткому диску - тому вилучені файли можна відновити. У кінцевому підсумку комп "ютер перезапише віддалені файли, перезаписуючи їх сектори новими даними.

Твердотільні накопичувачі (SSD) працюють по-іншому. Кожен раз, коли ви записуєте файл на SSD, комп'ютер повинен спочатку стерти будь-які дані в секторах, в які він записує дані. Він не може просто «перезаписати» сектори за одну операцію - він повинен спочатку очистити їх, а потім записати в порожні сектори.

Це означає, що SSD сповільниться з часом. Запис у сектори SSD буде швидким з першого разу. Після того, як ви вилучите деякі файли і спробуєте записати їх знову, це займе більше часу. Це велика частина причини, через яку оригінальний Nexus 7 від Google так сильно сповільнювався з часом. Google виправив це, впровадивши TRIM в Android 4.3. (Android також використовує ядро  Linux.)

Коли TRIM увімкнено, операційна система повідомляє SSD кожного разу, коли вилучає файл. Потім накопичувач може стерти сектори, що містять вміст файлу, тому запис у сектори буде швидким у майбутньому.

Іншими словами, якщо ви не використовуєте TRIM, ваш SSD з часом сповільниться. Ось чому сучасні операційні системи, включаючи Windows 7 +, Mac OS X 10.6.8 + і Android 4.3 +, використовують TRIM. TRIM був впроваджений в Linux ще в грудні 2008 року, але Ubuntu за замовчуванням його не використовує.

Чому Ubuntu TRIM не використовується за замовчуванням?

Справжня причина, чому Ubuntu за замовчуванням не використовує твердотільні накопичувачі TRIM, полягає в тому, що реалізація TRIM в ядрі Linux повільна і призводить до зниження продуктивності при звичайному використанні.


У Windows 7 і 8 Windows надсилає команду TRIM кожного разу, коли видаляє файл, повідомляючи дисководу про негайне видалення бітів файлу. Linux підтримує це, коли файлові системи монтуються з параметром discard. Проте Ubuntu - та інші дистрибутиви - не роблять цього за замовчуванням з міркувань продуктивності.

Віки OpenSUSE містять детальну інформацію від розробника, який більше знайомий з ядром Linux, ніж ми. Це трохи застаріло, але, ймовірно, все ще вірно, коли справа доходить до продуктивності:

"Реалізація ядра в режимі реального часу в 11.2, 11.3 і 11.4 не оптимізована. Специфікація вимагає обрізки, що підтримує векторизований список діапазонів обрізки, але починаючи з ядра 3.0, обрізка викликається тільки ядром з одним діапазоном скидання/обрізки, а з поточними твердотільними накопичувачами середини 2011 року це призвело до зниження продуктивності замість підвищення продуктивності. Є кілька причин використовувати підтримку видалення ядер в реальному часі з ядрами до 3.1. Невідомо, коли функціональність видалення ядер буде оптимізована для корисної роботи з твердотільними накопичувачами поточного покоління ". [Джерело]

Іншими словами, ядро ^ Linux обробляє такі команди TRIM в реальному часі повільним, неоптимізованим способом. Включення TRIM аналогічно тому, як це робить Windows, тобто з використанням опції «скидання», призводить до того, що система насправді стає повільнішою, ніж якби TRIM не використовувався взагалі. Ubuntu та інші дистрибутиви Linux типово не включають «discard» для ваших файлових систем, і ви не повинні цього робити.

Є інший шлях

Оскільки операція TRIM в режимі реального часу в ядрі Linux не працює належним чином, більшість дистрибутивів Linux, включаючи Ubuntu, не використовують TRIM автоматично. Android також не використовував TRIM до Android 4.3.

Але є й інший спосіб використовувати TRIM. Замість того, щоб просто вводити команду TRIM при кожному вилученні файла, можна використовувати функцію FITRIM. Це відбувається за допомогою команди fstrim. По суті, команда fstrim аналізує файлову систему і повідомляє накопичувачу, які блоки більше не потрібні, щоб накопичувач міг їх відкинути. Це перетворює TRIM з операції в реальному часі на заплановане завдання. Іншими словами, fstrim може виконувати TRIM як завдання cron. Немає причин не робити цього. Це нічого не забариться; це просто чергове прибирання, яке система повинна виконувати за розкладом.

Насправді, це підхід, який Google використовував з Android 4.3. Android просто іноді запускає завдання fstrim, щоб TRIM файлову систему, вирішуючи проблему, яка уповільнювала всі ці оригінальні Nexus 7s.


Ubuntu також розглядає можливість автоматичного включення TRIM шляхом регулярного запуску системи fstrim. Ми сподіваємося, що це буде частиною Ubuntu 14.04, тому користувачі Ubuntu не будуть змушені боротися з падінням продуктивності SSD або запускати fstrim самостійно.

Як увімкнути TRIM

Ми не рекомендуємо монтувати ваші файлові системи за допомогою операції «скидання», оскільки це може призвести до зниження продуктивності при нормальному використанні. Однак ви можете використовувати TRIM самостійно, періодично виконуючи команду fstrim або створюючи свій власний cronjob, який запускає fstrim за розкладом.

Щоб TRIM ваш SSD у Ubuntu, просто відкрийте термінал і виконайте наступну команду:

Судо Фстрім -v/

Ви можете періодично запускати вказану команду, щоб запобігти зниженню продуктивності на SSD. Частота запуску залежить від того, як часто файли вилучаються з вашого SSD. Ви побачите помилку, якщо спробуєте запустити команду з диска, який не підтримує TRIM.


Якщо ви хочете регулярно запускати TRIM, ви можете просто створити cronjob, який запускає команду fstrim. Ось як можна зробити роботу cron для barebones, яка зробить це автоматично.

Спочатку запустіть наступну команду, щоб відкрити текстовий редактор nano з правами root:

sudo nano /etc/cron.daily/fstrim

Введіть наступний код у файл:

# !/Bin/ш


Фстрім/

Збережіть файл, натиснувши Ctrl + O і натисніть Enter для підтвердження. Натисніть Ctrl + X, щоб закрити nano після збереження файла.

Нарешті, виконайте наступну команду, щоб зробити скрипт виконуваним:

sudo chmod + x /etc/cron.daily/fstrim

Ubuntu тепер буде запускати fstrim за розкладом, так само як і інші завдання з обслуговування системи.


Зверніть увагу, що TRIM підтримується тільки в сучасних файлових системах, тому вам знадобиться щось на зразок ext4, а не ext3 або ext2. Якщо ви не знаєте, яку файлову систему ви використовуєте, не турбуйтеся - за замовчуванням обрано ext4.

Велика частина цієї ради також відноситься до інших дистрибутивів Linux. Хоча Linux вже давно реалізував підтримку TRIM в ядрі, його підтримка TRIM, мабуть, ніколи не була включена за замовчуванням для типових користувачів в дистрибутивах Linux.

COM_SPPAGEBUILDER_NO_ITEMS_FOUND