Головна » як » Ubuntu не TRIM SSDs за замовчуванням Чому не і як це дозволити собі

    Ubuntu не TRIM SSDs за замовчуванням Чому не і як це дозволити собі

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

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

    Чому 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 SSDs за замовчуванням є тому, що реалізація TRIM в ядрі Linux є повільною і призводить до поганої продуктивності при нормальному використанні.

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

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

    «Реалізація ядра в реальному часі в 11.2, 11.3 і 11.4 не оптимізована. Спец. закликає до урізування, підтримуючи векторизований список діапазонів обробки, але, як і в ядрі 3.0, тільки ядро ​​використовує один діапазон відкидання / обрізання, а з поточними SSD-дисками середини 2011 року це призводить до зниження продуктивності замість збільшення продуктивності. Існує декілька причин використовувати ядра в реальному часі з підтримкою відкидання з ядрами до 3.1. Невідомо, коли функціональні можливості відкидання ядра будуть оптимізовані для успішної роботи з SSD-пристроями нинішнього покоління.

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

    Є ще один шлях

    Оскільки в реальному часі операція «відкидання» 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, просто відкрийте термінал і запустіть таку команду:

    sudo fstrim -v /

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

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

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

    sudo nano /etc/cron.daily/fstrim

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

    #! / bin / sh

    fstrim /

    Збережіть файл, натиснувши 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..

    Зображення: Mace Ojala на Flickr (обрізано)